Rövid útmutató: Adatkockák használatának első lépései a Microsoft Planetary Computer Pro-ban

Előfeltételek

Adatgyűjtési forrás beállítása

Mielőtt megkezdené az adatkocka-adatok betöltését, be kell állítania egy betöltési forrást, amely hitelesítő adatokként szolgál majd ahhoz a Blob Storage-fiókhoz való hozzáféréshez, amelyben az eszközök és a STAC-elemek vannak tárolva. A betöltési forrást a felügyelt identitás vagy SAS-jogkivonat használatával állíthatja be.

Adatkocka-gyűjtemény létrehozása

Miután beállította a betöltési forrást, létrehozhat egy gyűjteményt az adatkocka-objektumokhoz. A gyűjtemény létrehozásának lépéseit a STAC-gyűjtemény létrehozása a Microsoft Planetary Computer Pro használatával Pythonban követheti.

Adatkocka-objektumok betöltése

Az adatkockaadatok és más adattípusok betöltési folyamatának kezdeményezése követhető a Betöltési áttekintésben. A Data Cube Áttekintésében leírtak szerint azonban a betöltés a Planetary Computer Pro adatkezelésének azon lépése, amely különbözik az ilyen fájltípusoktól. Míg a GRIB2-adatok és a kapcsolódó STAC-elemek ugyanúgy vannak betöltve, mint bármely más kétdimenziós raszterfájl, a NetCDF és a HDF5-eszközök további adatbővítésen mennek keresztül. A Kerchunk-jegyzékek létrehozása dokumentálva van az Adatkocka áttekintésében, de fontos megjegyezni, hogy a Kerchunk-objektumok az eredeti eszközök mellett hozzáadódnak a Blob Storage-tárolóhoz, és egy további cube:variables mező lesz hozzáadva a STAC-elem JSON-jsonjához. Ez akkor fontos, ha ezeket az adattípusokat a Planetary Computer Pro Explorerben jeleníti meg.

Adatkocka-gyűjtemény konfigurálása

Az adatkocka-gyűjtemény konfigurálása egy másik lépés, amely kissé eltér a többi adattípusétól. Az adatkockagyűjtemény konfigurálásához kövesse a Gyűjtemény konfigurálása a Microsoft Planetary Computer Pro webes felülettel című cikkben leírt lépéseket, de a renderelési konfiguráció létrehozásakor a következő különbségeket kell figyelembe vennie:

NetCDF- és HDF5-eszközök renderelési konfigurációja

Ne feledje, hogy egy standard Render Configuration argumentum JSON formátumban a következőképpen néz ki:

[
  {
    "id": "prK1950-06-30",
    "name": "prK1950-06-30",
    "type": "raster-tile",
    "options": "assets=pr-kerchunk&subdataset_name=pr&rescale=0,0.01&colormap_name=viridis",
    "minZoom": 1,
    "info_options": "assets=pr-kerchunk&subdataset_name=pr"
  }
]

A options mező az, ahol a felhőoptimalizált Kerchunk-objektumot szeretné használni, szemben a STAC-elemben szereplő eredeti objektumokkal. Az argumentumot is tartalmaznia subdataset_name kell, amely a megjeleníteni kívánt változó neve.

A info_options mező lehetővé teszi az Explorer időcsúszkáját ehhez a gyűjteményhez. Ugyanazt az URL lekérdezés-string formátumot használja, mint options, de csak a felfedezéshez szükséges /info paramétereket kell tartalmaznia, jellemzően assets és subdataset_name. Hagyjuk ki a stílus és szeletelési paramétereket, mint rescale, colormap_name, és datetime. Ha azt szeretnéd, hogy a csúszka aktív maradjon, ne rögzítsd a datetime=... elemet a options elemben, mert egy fixen megadott érték felülírja a csúszkát. Ha kihagyod info_options, az Explorer visszakerül az időkorlátok olvasásához a STAC elem metaadatokból (cube:dimensions, start_datetime, end_datetime).

A GRIB2-eszközök renderelési konfigurációja

A options GRIB2-objektumok renderelési konfigurációjának mezője az előző példához hasonlóan néz ki, de nem kell belefoglalnia az subdataset_name argumentumot. Ennek az az oka, hogy a GRIB2-adatok már optimálisan strukturáltak és hivatkoznak az Index-fájljaikon keresztül. Az assets argumentum ebben az esetben a megjeleníteni kívánt sávot vagy 2D raszterréteget jelöli. Az alábbi példa egy GRIB2 renderelési konfigurációra mutat be példát:

[ 
 {
    "id": "render-config-1",
    "name": "Mean Zero-Crossing Wave Period",
    "description": "A sample render configuration. Update `options` below.",
    "type": "raster-tile",
    "options": "assets=data&subdataset_bands=1&colormap_name=winter&rescale=0,10",
    "minZoom": 1,
    "info_options": "assets=data"
 }
]

GRIB2 esetén állítsa a(z) info_options értékét a(z) options elemben használt objektumkulcsra. A(z) info_options hozzáadása engedélyezi az Explorer időcsúszkáját, amely közvetlenül a Tiler /info végpontjáról kéri le az elérhető GRIB sáv- és üzenetindexeket. Ha a GRIB gyűjteményed több renderelési konfigurációt is megjelenít különböző eszközökhöz, adj info_options hozzá minden renderelési opcióhoz, ami egy csúszkát indíthat.

A Zarr-objektumok renderelési konfigurációja

A options Zarr-eszközök mezője hasonló a NetCDF-hez és a HDF5-höz, de két fontos követelmény van:

  1. Jelöljön ki egyetlen időszeletet a rendereléshez a használatával sel=time=....
  2. Renderelés előtt csökkentse az adatokat 2D kimenetre.

Ha a további dimenziók nincsenek összecsukva, a renderelés sikertelen lehet, és olyan hibákat eredményezhet, mint a Source data must be 1 band.

A sel paraméterről bővebben is olvashat. Az alábbiakban egy minimálisan működő Zarr-renderelési konfigurációt használunk egyetlen időbélyeghez és 2D kimenethez:

[
    {
        "id": "era5-zarr-single-time",
        "name": "ERA5 single timestep",
        "type": "raster-tile",
        "options": "assets=data&subdataset_name=precipitation_amount_1hour_Accumulation&sel=time=2024-01-01&sel_method=nearest&colormap_name=viridis&rescale=0,0.01",
        "minZoom": 12
    }
]

Adatkocka-objektumok vizualizációja az Explorerben

Miután betöltötte és konfigurálta az adatkocka-objektumokat, megjelenítheti őket a Planetary Computer Pro Explorerben. Az Explorer használatához részletes útmutatót a Rövid útmutatóban talál: Az Explorer használata a Microsoft Planetary Computer Pro-ban.

Bár a Microsoft Planetary Computer Pro tartalmaz egy csempézőt, amely egyes adatkocka-objektumok vizualizációjára használható, minden támogatott adattípus esetén érdemes néhány figyelmeztetést megjegyezni.

NetCDF- és HDF5-vizualizáció

Azok a NetCDF-adatkészletek, amelyeket be lehet tölteni a Microsoft Planetary Computerbe, nem mind kompatibilisek a Planetary Computer Pro vizualizációs csempélővel. Az adathalmazoknak X és Y tengelyekkel, szélességi és hosszúsági koordinátákkal, valamint térbeli dimenziókkal és határokkal kell rendelkezniük, amelyeket vizualizálni kell. Például egy adathalmaz, amelyben a szélesség és a hosszúság változók, de nem koordináták, nem kompatibilis a Planetary Computer Pro csempéjével.

Mielőtt megkísérli vizualizálni a NetCDF- vagy HDF5-adathalmazt, az alábbiak segítségével ellenőrizheti, hogy az megfelel-e a követelményeknek.

  1. A szükséges függőségek telepítése

    pip install xarray[io] rioxarray cf_xarray
    
  2. Futtassa a következő függvényt:

    import xarray as xr
    import cf_xarray
    import rioxarray
    
    def is_dataset_visualizable(ds: xr.Dataset):
        """
        Test if the dataset is compatible with the Planetary Computer tiler API.
        Raises an informative error if the dataset is not compatible.
        """
        if not ds.cf.axes:
            raise ValueError("Dataset does not have CF axes")
        if not ds.cf.coordinates:
            raise ValueError("Dataset does not have CF coordinates")
        if not {"X", "Y"} <= ds.cf.axes.keys():
            raise ValueError(f"Dataset must have CF X and Y axes, found: {ds.cf.axes.keys()}")
    
        if not {"latitude", "longitude"} <= ds.cf.coordinates.keys():
            raise ValueError("Dataset must have CF latitude and longitude coordinates, "
                             f"actual: {ds.cf.coordinates.keys()}")
    
        if ds.rio.x_dim is None or ds.rio.y_dim is None:
            raise ValueError("Dataset does not have rioxarray spatial dimensions")
    
        if ds.rio.bounds() is None:
            raise ValueError("Dataset does not have rioxarray bounds")
    
        left, bottom, right, top = ds.rio.bounds()
        if left < -180 or right > 180 or bottom < -90 or top > 90:
            raise ValueError("Dataset bounds are not valid; they must be within [-180, 180] and [-90, 90]")
    
        if ds.rio.resolution() is None:
            raise ValueError("Dataset does not have rioxarray resolution")
    
        if ds.rio.transform() is None:
            raise ValueError("Dataset does not have rioxarray transform")
    
        print("✅ Dataset is compatible with the Planetary Computer tiler API.")
    

GRIB2-vizualizáció

A Microsoft Planetary Computer Pro-ba betöltött GRIB2-objektumok mindaddig megjeleníthetők az Explorerben, amíg ugyanabban a Blob Storage-tárolóban van egy társított indexfájl (.idx). Az indexfájl a betöltés során jön létre, és a GRIB2-adatok optimális eléréséhez és megjelenítéséhez szükséges.

Zarr-vizualizáció

A Microsoft Planetary Computer Pro-ba betöltött Zarr-eszközök az Explorerben vizualizálhatók, amennyiben a Renderelési konfiguráció meghatározza, melyik változót és időszeletet kell megjeleníteni a sel paraméterben a options mezőben. Ennek elmulasztása azt eredményezi, hogy az Explorer egyszerre megkísérli renderelni a Zarr-tároló összes változóját és időszeletét, ami miatt az Explorer összeomlik.

A Zarr-tároló mérete és a térbeli adattömbök szintén hatással lesznek a teljesítményre. A Zarr tárhely teljes méretét 2 GB alatt kell tartania, és minden adattömb méretét 100 MB-nál kisebbre kell korlátoznia a csempekezelő optimális teljesítménye érdekében.

A Zarr-vizualizáció korlátozásai és ismert problémái

Időcsúszka viselkedése (ismert korlátozás)

Megjegyzés:

A Zarr időcsúszkás viselkedése jelenleg korlátozott. Az Explorer idősáv csak akkor jelenik meg, ha a befogadás során egy idődimenziót megfelelően észlelnek.

Még akkor is, ha a Zarr-objektumok időértékeket tartalmaznak, előfordulhat, hogy a betöltés nem észleli egyes adathalmazok időbeli metaadatait. Ezekben az esetekben az időcsúszka nem jelenik meg, és a renderelési konfigurációban egyszerre egy időlépést kell vizualizálni (például sel=time=2024-01-01).

Az időérzékeny viselkedés engedélyezéséhez a STAC-metaadatoknak tartalmazniuk kell egy időbeli dimenziót a cube:dimensions következőkkel:

  • type: temporal
  • extent
  • step

A Zarr-forrásadatok esetében kövesse a CF időkonvenciáit, ahol lehetséges, például:

  • standard_name="time"
  • axis="T"

Ezek a konvenciók a metaadatok konzisztens értelmezéséhez szükségesek, de a jelenlegi korlátozások miatt nem mindig elegendőek ahhoz, hogy minden Zarr-adatkészlethez időcsúszkás támogatást biztosítsanak.

Kerchunk-jegyzetek

A Kerchunk javíthatja a többdimenziós hozzáférési minták teljesítményét, de nem oldja meg az időcsúszással kapcsolatos problémákat, ha a betöltés során nem észleltek időbeli dimenziókat.

Egyes Zarr-adathalmazok az indexfeldolgozás során akár meg is hiúsulhatnak, például Index must be monotonic increasing or decreasing.

Idő csúszka adatkocka-vizualizációhoz

Ha az adatkocka-objektumok időbeli összetevővel rendelkeznek, az Explorerben az idő csúszkával megjelenítheti a változásokat az idő függvényében. Az időcsúszka automatikusan megjelenik, ha a STAC-elemek tartalmaznak olyan eszközöket, amelyek rendelkeznek egy time dimenzióval, és extent valamint step mezőkkel.

Megjegyzés:

A Zarr-objektumok esetében lásd a Zarr vizualizációs korlátozásait és az aktuális időkorlátokkal és a szükséges renderelési konfigurációs mintákkal kapcsolatos ismert problémákat.