.. GMTDataArrayAccessor: GMTDataArrayAccessor ==================== .. code:: pygmt.GMTDataArrayAccessor(xarray_obj) Accesseur GMT pour `xarray.DataArray`. L'accesseur s'étend `xarray.DataArray` pour stocker les propriétés spécifiques à GMT sur les grilles, qui sont importantes pour que PyGMT traite et trace correctement les grilles. **Remarques** En raison des limitations des accesseurs xarray, les accesseurs GMT sont créés une fois par `xarray.DataArray` instance. Vous risquez de perdre ces propriétés spécifiques à GMT lors de la manipulation de grilles (par exemple, opérations arithmétiques et tranches) ou lors de l'accès à a `xarray.DataArray` depuis un `xarray.Dataset` . Dans ces cas, vous devez définir manuellement ces propriétés avant de transmettre la grille à PyGMT. **Exemples** Pour les ensembles de données distants intégrés de GMT, ces propriétés spécifiques à GMT sont automatiquement déterminées et vous pouvez y accéder comme suit : .. code:: from pygmt.datasets import load_earth_relief # Use the global Earth relief grid with 1 degree spacing grid = load_earth_relief(resolution="01d", registration="pixel") # See if grid uses Gridline (0) or Pixel (1) registration grid.gmt.registration 1 # See if grid uses Cartesian (0) or Geographic (1) coordinate system grid.gmt.gtype 1 Pour `xarray.DataArray` les grilles créées par vous-même, les propriétés de la grille `registration` et `gtype` la valeur par défaut sont 0 (c'est-à-dire une grille cartésienne enregistrée sur la grille). Vous devez définir les propriétés correctes avant de le transmettre aux fonctions PyGMT : .. code:: import numpy as np import pygmt import xarray as xr # create a DataArray in gridline coordinates of sin(lon) * cos(lat) interval = 2.5 lat = np.arange(90, -90 - interval, -interval) lon = np.arange(0, 360 + interval, interval) longrid, latgrid = np.meshgrid(lon, lat) data = np.sin(np.deg2rad(longrid)) * np.cos(np.deg2rad(latgrid)) grid = xr.DataArray( data, coords=[("latitude", lat), ("longitude", lon)] ) # default to a gridline-registrated Cartesian grid grid.gmt.registration, grid.gmt.gtype (0, 0) # set it to a gridline-registered geographic grid grid.gmt.registration = 0 grid.gmt.gtype = 1 grid.gmt.registration, grid.gmt.gtype (0, 1) Notez que les accesseurs sont créés une fois par `xarray.DataArray` instance, vous risquez donc de perdre ces propriétés spécifiques à GMT après avoir manipulé votre grille. Les opérateurs d'affectation sur place comme `*=` ne créent pas de nouvelles instances, donc les propriétés sont toujours conservées : .. code:: grid \*= 2.0 grid.gmt.registration, grid.gmt.gtype (0, 1) D'autres opérations de grille (par exemple, des opérations arithmétiques ou de découpage) créent de nouvelles instances, de sorte que les propriétés seront perdues : .. code:: # grid2 is a slice of the original grid grid2 = grid[0:30, 50:80] # properties are reset to the default values for new instance grid2.gmt.registration, grid2.gmt.gtype (0, 0) # need to set these properties before passing the grid to PyGMT grid2.gmt.registration = grid.gmt.registration grid2.gmt.gtype = grid.gmt.gtype grid2.gmt.registration, grid2.gmt.gtype (0, 1) L'accès à a `xarray.DataArray` depuis a `xarray.Dataset` crée toujours de nouvelles instances, donc ces propriétés sont toujours perdues. La solution consiste à affecter le `xarray.DataArray` dans une variable : .. code:: ds = xr.Dataset({"zval": grid}) ds.zval.gmt.registration, ds.zval.gmt.gtype (0, 0) # manually set these properties won't work as expected ds.zval.gmt.registration, ds.zval.gmt.gtype = 0, 1 ds.zval.gmt.registration, ds.zval.gmt.gtype (0, 0) # workaround: assign the DataArray into a variable zval = ds.zval zval.gmt.registration, zval.gmt.gtype (0, 0) zval.gmt.registration, zval.gmt.gtype = 0, 1 zval.gmt.registration, zval.gmt.gtype (0, 1) Les attributs ------------- .. code:: propriétéGMTDataArrayAccessor. gtype Type de système de coordonnées de la grille, soit 0 (cartésien) ou 1 (géographique). .. code:: propriétéGMTDataArrayAccessor. inscription Type d'enregistrement de la grille, soit 0 (Gridline) ou 1 (Pixel).