"""sph2grd - Compute grid from spherical harmonic coefficients"""frompygmt.clibimportSessionfrompygmt.helpersimport(GMTTempFile,build_arg_string,fmt_docstring,kwargs_to_strings,use_alias,)frompygmt.ioimportload_dataarray
[docs]@fmt_docstring@use_alias(G="outgrid",I="spacing",R="region",V="verbose",b="binary",h="header",i="incols",r="registration",x="cores",)@kwargs_to_strings(I="sequence",R="sequence",i="sequence_comma")defsph2grd(data,**kwargs):r""" Create spherical grid files in tension of data. Reads a spherical harmonics coefficient table with records of L, M, C[L,M], S[L,M] and evaluates the spherical harmonic model on the specified grid. Full option list at :gmt-docs:`sph2grd.html` {aliases} Parameters ---------- data : str or {table-like} Pass in data with L, M, C[L,M], S[L,M] values by providing a file name to an ASCII data table, a 2D {table-classes}. outgrid : str or None The name of the output netCDF file with extension .nc to store the grid in. {I} {R} {V} {b} {h} {i} {r} {x} Returns ------- ret: xarray.DataArray or None Return type depends on whether the ``outgrid`` parameter is set: - :class:`xarray.DataArray` if ``outgrid`` is not set - None if ``outgrid`` is set (grid output will be stored in file set by ``outgrid``) Example ------- >>> import pygmt # doctest: +SKIP >>> # Create a new grid from the remote file "EGM96_to_36.txt", >>> # set the grid spacing to 1, and the region to "g" >>> new_grid = pygmt.sph2grd( ... data="@EGM96_to_36.txt", spacing=1, region="g" ... ) # doctest: +SKIP """withGMTTempFile(suffix=".nc")astmpfile:withSession()aslib:file_context=lib.virtualfile_from_data(check_kind="vector",data=data)withfile_contextasinfile:if"G"notinkwargs:# if outgrid is unset, output to tempfilekwargs.update({"G":tmpfile.name})outgrid=kwargs["G"]arg_str=" ".join([infile,build_arg_string(kwargs)])lib.call_module("sph2grd",arg_str)returnload_dataarray(outgrid)ifoutgrid==tmpfile.nameelseNone