diff --git a/pygmt/src/xyz2grd.py b/pygmt/src/xyz2grd.py index 634585a0e75..54324adf13a 100644 --- a/pygmt/src/xyz2grd.py +++ b/pygmt/src/xyz2grd.py @@ -2,6 +2,7 @@ xyz2grd - Convert data table to a grid. """ from pygmt.clib import Session +from pygmt.exceptions import GMTInvalidInput from pygmt.helpers import ( GMTTempFile, build_arg_string, @@ -30,7 +31,7 @@ r="registration", w="wrap", ) -@kwargs_to_strings(R="sequence") +@kwargs_to_strings(I="sequence", R="sequence") def xyz2grd(data=None, x=None, y=None, z=None, **kwargs): r""" Create a grid file from table data. @@ -132,6 +133,9 @@ def xyz2grd(data=None, x=None, y=None, z=None, **kwargs): - None if ``outgrid`` is set (grid output will be stored in file set by ``outgrid``) """ + if "I" not in kwargs or "R" not in kwargs: + raise GMTInvalidInput("Both 'region' and 'spacing' must be specified.") + with GMTTempFile(suffix=".nc") as tmpfile: with Session() as lib: file_context = lib.virtualfile_from_data( diff --git a/pygmt/tests/test_xyz2grd.py b/pygmt/tests/test_xyz2grd.py index 4e141de1fb0..8414616a0a6 100644 --- a/pygmt/tests/test_xyz2grd.py +++ b/pygmt/tests/test_xyz2grd.py @@ -8,6 +8,7 @@ import xarray as xr from pygmt import load_dataarray, xyz2grd from pygmt.datasets import load_sample_data +from pygmt.exceptions import GMTInvalidInput from pygmt.helpers import GMTTempFile @@ -65,3 +66,15 @@ def test_xyz2grd_input_array_file_out(ship_data, expected_grid): assert os.path.exists(path=tmpfile.name) temp_grid = load_dataarray(tmpfile.name) xr.testing.assert_allclose(a=temp_grid, b=expected_grid) + + +def test_xyz2grd_missing_region_spacing(ship_data): + """ + Test xyz2grd raise an exception if region or spacing is missing. + """ + with pytest.raises(GMTInvalidInput): + xyz2grd(data=ship_data) + with pytest.raises(GMTInvalidInput): + xyz2grd(data=ship_data, region=[245, 255, 20, 30]) + with pytest.raises(GMTInvalidInput): + xyz2grd(data=ship_data, spacing=5)