Skip to content

deprecated pygmt.load_dataarray() inconsistent with xr.load_datarray #4005

@mdtanker

Description

@mdtanker

Description of the problem

I'm not sure if this is a bug or a change to PyGMT which I missed. Since the pygmt.load_dataarray function is deprecated, I'm using the suggested alternative, xr.load_datarray(..., engine="gmt", raster_kind='grid'), however, this gives an incorrect grid registration.

As you can see below, a grid with a registration of 0 (gridline), when converted to pixle registered with grdedit and then opened again, gives the correct pixel registration (1) when using pygmt.load_datarray, but an incorrect gridline registration (0) when opened with xr.load_dataarray.

Minimal Complete Verifiable Example

import pygmt
import xarray as xr

grid = pygmt.datasets.load_earth_relief(
    resolution="30s", region=[144.5, 145.5, 13, 14.5], registration="gridline"
)
print(grid.gmt.registration)
---> 0

with pygmt.clib.Session() as ses:
    with ses.virtualfile_from_grid(grid) as f_in:
        with pygmt.helpers.GMTTempFile(suffix=".nc") as tmpfile:
            args = f"{f_in} -T -G{tmpfile.name}"
            ses.call_module("grdedit", args)
            f_out = pygmt.load_dataarray(tmpfile.name)
print(f_out.gmt.registration)
---> 1 # this is correct

with pygmt.clib.Session() as ses:
    with ses.virtualfile_from_grid(grid) as f_in:
        with pygmt.helpers.GMTTempFile(suffix=".nc") as tmpfile:
            args = f"{f_in} -T -G{tmpfile.name}"
            ses.call_module("grdedit", args)
            f_out = xr.load_dataarray(tmpfile.name, engine='gmt', raster_kind='grid')
print(f_out.gmt.registration)
---> 0  # this is incorrect

Full error message

System information

PyGMT information:
  version: v0.16.0
System information:
  python: 3.12.11 | packaged by conda-forge | (main, Jun  4 2025, 14:45:31) [GCC 13.3.0]
  executable: /home/sungw937/miniforge3/envs/polartoolkit/bin/python
  machine: Linux-5.15.167.4-microsoft-standard-WSL2-x86_64-with-glibc2.39
Dependency information:
  numpy: 2.2.6
  pandas: 2.3.1
  xarray: 2025.7.1
  packaging: 25.0
  contextily: None
  geopandas: 1.1.1
  IPython: 9.4.0
  pyarrow: 20.0.0
  rioxarray: 0.19.0
  gdal: None
  ghostscript: 10.04.0
GMT library information:
  version: 6.5.0
  padding: 2
  share dir: /home/sungw937/miniforge3/envs/polartoolkit/share/gmt
  plugin dir: /home/sungw937/miniforge3/envs/polartoolkit/lib/gmt/plugins
  library path: /home/sungw937/miniforge3/envs/polartoolkit/lib/libgmt.so
  cores: 8
  grid layout: rows
  image layout: 
  binary version: 6.5.0

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions