Udostępnij za pośrednictwem


Szybki start: wprowadzenie do modułów danych w microsoft Planetary Computer Pro

Wymagania wstępne

Konfigurowanie źródła pozyskiwania

Przed rozpoczęciem pozyskiwania danych modułu danych należy skonfigurować źródło pozyskiwania, które będzie służyć jako poświadczenia dostępu do konta usługi Blob Storage, na którym są przechowywane zasoby i elementy STAC. Źródło pozyskiwania można skonfigurować przy użyciu tożsamości zarządzanej lub tokenu SAS.

Tworzenie kolekcji modułów danych

Po skonfigurowaniu źródła pozyskiwania można utworzyć kolekcję dla zasobów modułu danych. Kroki tworzenia kolekcji można wykonać w temacie Tworzenie kolekcji STAC za pomocą programu Microsoft Planetary Computer Pro przy użyciu języka Python.

Pozyskiwanie zasobów modułu danych

Inicjowanie procesu pobierania danych kostki danych i innych typów danych można śledzić w temacie Omówienie pozyskiwania danych. Zgodnie z opisem w Omówienie kostki danych, import danych jest jednak krokiem obsługi danych Planetary Computer Pro, które różnią się w przypadku tych typów plików. Podczas gdy dane GRIB2 i skojarzone elementy STAC są pozyskiwane tak samo jak każdy inny dwuwymiarowy plik raster, zasoby NetCDF i HDF5 przechodzą dalsze wzbogacanie danych. Generowanie manifestów Kerchunk jest udokumentowane w artykule Omówienie modułu danych, ale ważne jest, aby pamiętać, że składowe kerchunk zostaną dodane do kontenera usługi Blob Storage obok oryginalnych zasobów, a do pliku JSON elementu STAC zostanie dodane dodatkowe cube:variables pole. Jest to ważne podczas renderowania tych typów danych w Eksploratorze Komputerów Planetarnych.

Konfiguracja kolekcji kostek danych

Konfiguracja zbierania kostek danych to kolejny krok, który będzie wyglądać nieco inaczej niż w przypadku innych typów danych. Możesz wykonać kroki opisane w temacie Konfigurowanie kolekcji za pomocą interfejsu internetowego Microsoft Planetary Computer Pro w celu skonfigurowania kolekcji modułów danych, ale podczas tworzenia konfiguracji renderowania należy pamiętać o następujących różnicach:

Konfiguracja renderowania zasobów NetCDF i HDF5

Pamiętaj, że standardowy argument konfiguracji renderowania w formacie JSON wygląda następująco:

[
  {
    "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&datetime=1950-06-30",
    "minZoom": 1
  }
]

Pole options to miejsce, gdzie warto korzystać z zoptymalizowanego pod kątem chmury zasobu Kerchunk zamiast oryginalnego zasobu wymienionego w elemencie STAC. Należy również uwzględnić subdataset_name argument, który jest nazwą zmiennej, którą chcesz renderować.

Konfiguracja renderowania zasobów GRIB2

Pole options Konfiguracji renderowania zasobów GRIB2 wygląda podobnie do poprzedniego przykładu, ale nie będzie konieczne uwzględnienie argumentu subdataset_name . Wynika to z faktu, że dane GRIB2 są już optymalnie ustrukturyzowane i przywoływane poprzez ich pliki indeksu. Argument assets , w tym przypadku, reprezentuje pasm lub warstwę rasterową 2D, którą chcesz renderować. Poniżej przedstawiono przykład konfiguracji renderowania GRIB2:

[ 
 {
    "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
 }
]

Konfiguracja renderowania zasobów Zarr

Pole options dla konfiguracji renderowania zasobów Zarr jest również podobne do NetCDF i HDF5, jednak w assets argumencie trzeba podać parametr "sel", który umożliwia wybranie godziny, kroku lub innej zmiennej. Parametr ten pozwala na renderowanie 2D jednej zmiennej jednocześnie z wielowymiarowego magazynu Zarr. Może być również konieczne dołączenie parametru "sel_method", aby zapewnić, że wybrana jest właściwa zmienna, nawet jeśli wprowadzona wartość jest nieco niedokładna. Więcej informacji na temat tego parametru "sel" można przeczytać w publicznej dokumentacji dotyczącej wielowymiarowej biblioteki odczytu danych języka Python używanej w zapleczu Planetary Computer Pro, Xarray Poniżej jest przykładem konfiguracji renderowania Zarr:

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

Wizualizowanie zasobów modułu danych w Eksploratorze

Po pozyskaniu i skonfigurowaniu zasobów modułu danych można je wizualizować w Planetary Computer Pro Explorer. Przewodnik krok po kroku dotyczący korzystania z Eksploratora znajduje się w Szybki start: Korzystanie z Eksploratora w programie Microsoft Planetary Computer Pro.

Chociaż microsoft Planetary Computer Pro zawiera kafelek, który może służyć do wizualizacji niektórych zasobów modułu danych, istnieją pewne zastrzeżenia do zanotowania, jeśli chodzi o każdy obsługiwany typ danych.

Wizualizacja NetCDF i HDF5

Nie wszystkie zestawy danych NetCDF, które można załadować do Microsoft Planetary Computer, są zgodne z wizualizacją tilera Planetary Computer Pro. Zestaw danych musi mieć osie X i Y, współrzędne szerokości i długości geograficznej oraz wymiary przestrzenne i granice, które mają być wizualizowane. Na przykład zestaw danych, w którym szerokość geograficzna i długość geograficzna są zmiennymi, ale nie współrzędnymi, nie jest zgodny z kafelkiem Planetary Computer Pro.

Przed próbą wizualizacji zestawu danych NetCDF lub HDF5 możesz użyć poniższej metody, aby sprawdzić, czy spełnia ona wymagania.

  1. Instalowanie wymaganych zależności

    pip install xarray[io] rioxarray cf_xarray
    
  2. Uruchom następującą funkcję:

    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.")
    

Wizualizacja GRIB2

Zasoby GRIB2 wczytane do Microsoft Planetary Computer Pro można wizualizować w Eksploratorze, o ile mają skojarzony plik indeksu (.idx) przechowywany w tym samym kontenerze usługi Blob Storage. Plik indeksu jest generowany podczas wczytywania i jest wymagany do uzyskania optymalnego dostępu i renderowania danych GRIB2.

Wizualizacja Zarr

Zasoby Zarr pozyskane do Microsoft Planetary Computer Pro można wizualizować w Eksploratorze, o ile konfiguracja renderowania określa, która zmienna i wycinek czasu ma być renderowany przy użyciu parametru sel w polu options. Nie można tego zrobić, co spowoduje, że Eksplorator próbuje renderować wszystkie zmienne i wycinki czasowe magazynu Zarr jednocześnie, co spowoduje awarię Eksploratora.

Rozmiar magazynu Zarr i fragmentów przestrzennych będzie również mieć wpływ na wydajność. Należy dążyć do utrzymania całkowitego rozmiaru magazynu Zarr poniżej 2 GB, a każdy fragment poniżej 100 MB, aby zapewnić optymalną wydajność narzędzia do kafelkowania.

Suwak czasu wizualizacji modułu danych

Jeśli zasoby modułu danych mają składnik czasowy, możesz użyć suwaka czasu w Eksploratorze, aby zwizualizować zmiany w czasie. Elementy STAC automatycznie wyświetlą suwak czasu, jeśli zawierają zasoby z wymiarem time oraz polami extent i step.

 [! UWAGA] Obecnie nie oferujemy obsługi suwaka czasu dla zasobów Zarr. W związku z tym ważne jest określenie, które wycinki czasu mają być wizualizowane w konfiguracji renderowania. Jeśli tego nie zrobisz, Eksplorator spróbuje renderować wszystkie kawałki czasu w sklepie Zarr w tym samym czasie, co spowoduje awarię Eksploratora.