Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Przewodnik szybkiego startu pokaże Ci, jak utworzyć kolekcję SpatioTemporal Asset Catalog (STAC) i dodać ją do Microsoft Planetary Computer Pro GeoCatalog przy użyciu języka Python.
Wymagania wstępne
Aby ukończyć tę instrukcję szybkiego startu, potrzebujesz:
- Konto Azure z aktywną subskrypcją. Użyj linku Utwórz konto bezpłatnie.
- Środowisko skonfigurowane do uzyskiwania dostępu do platformy Azure, na przykład za pomocą
az login. - Dostęp do komputera planetarnego Pro GeoCatalog. Jeśli nie masz jeszcze dostępu, możesz utworzyć nowy geokatalog.
- Środowisko języka Python z zainstalowanym
requestsiazure-identity.
python3 -m pip install requests azure-identity
Tworzenie pliku JSON kolekcji STAC
Aby utworzyć kolekcję STAC, musisz najpierw uzyskać plik json definiujący właściwości kolekcji. Niektóre właściwości są wymagane podczas tworzenia kolekcji STAC zgodnie z opisem w przeglądzie kolekcji STAC. Inne właściwości można dodać w zależności od przypadku użycia i typu danych.
Na potrzeby tego samouczka przeczytaj kolekcję io-lulc-annual-v02 STAC z interfejsu API STAC firmy Planetary Computer Pro. Jeśli masz już tę kolekcję STAC w swoim geokatalogu, możesz przejść do następnej sekcji.
import requests
collection = requests.get(
"https://planetarycomputer.microsoft.com/api/stac/v1/collections/io-lulc-annual-v02"
).json()
collection.pop("assets", None) # remove unused collection-level assets
collection["id"] = "mpc-quickstart"
collection["title"] += " (Planetary Computer Quickstart)"
Jeśli używasz innego identyfikatora kolekcji, pamiętaj, aby zastąpić id pole poprawną wartością.
Aby zwizualizować zasoby danych w tej kolekcji w Eksploratorze, metadane kolekcji powinny zawierać rozszerzenie Zasoby elementów i mieć co najmniej jeden element zawartości, którego typ nośnika można wizualizować.
Pobranie tokenu dostępu
Uzyskiwanie dostępu do dziennika geocatalog wymaga tokenu do uwierzytelniania żądań. Użyj biblioteki klienta azure-identity dla języka Python, aby pobrać token:
import azure.identity
credential = azure.identity.DefaultAzureCredential()
token = credential.get_token("https://geocatalog.spatio.azure.com")
headers = {
"Authorization": f"Bearer {token.token}"
}
To poświadczenie można podać jako token Bearer w nagłówku Authorization w żądaniach wysyłanych do usługi GeoKatalog.
Dodawanie kolekcji do dziennika geograficznego
Za pomocą metadanych STAC, tokenu oraz adresu URL do Twojego GeoCatalogu, złóż żądanie do interfejsu API STAC, aby dodać kolekcję.
# Put the URL to your Planetary Computer Pro GeoCatalog (not including '/stac' or a trailing '/' ) here
geocatalog_url = "<your-geocatalog-url>"
response = requests.post(
f"{geocatalog_url}/stac/collections",
json=collection,
headers=headers,
params={"api-version": "2025-04-30-preview"},
)
print(response.status_code)
Kod 201 stanu wskazuje, że kolekcja została utworzona. Kod 409 stanu wskazuje, że kolekcja o tym identyfikatorze już istnieje. Zobacz Aktualizowanie kolekcji, aby dowiedzieć się, jak zaktualizować istniejącą kolekcję.
Teraz możesz odczytać tę kolekcję w punkcie końcowym /stac/collections/{collection_id}.
geocatalog_collection = requests.get(
f"{geocatalog_url}/stac/collections/{collection['id']}",
headers=headers,
params={"api-version": "2025-04-30-preview"},
).json()
Możesz również wyświetlić swój GeoCatalog w przeglądarce, aby zobaczyć nową kolekcję.
Konfigurowanie kolekcji
Każda kolekcja w usłudze GeoCatalog zawiera pewne konfiguracje, które sterują sposobem przechowywania, indeksowania i wizualizacji elementów STAC oraz ich zasobów danych. Aby skonfigurować kolekcję:
Zdefiniuj konfigurację renderowania dla kolekcji. Ta konfiguracja renderowania steruje sposobem renderowania zasobów elementów STAC w kolekcji podczas wizualizacji w Eksploratorze geokatalogu. Określone parametry używane w tym miejscu zależą od zasobów w kolekcji.
import json import urllib.parse colormap = { 0: (0, 0, 0, 0), 1: (65, 155, 223, 255), 2: (57, 125, 73, 255), 3: (136, 176, 83, 0), 4: (122, 135, 198, 255), 5: (228, 150, 53, 255), 6: (223, 195, 90, 0), 7: (196, 40, 27, 255), 8: (165, 155, 143, 255), 9: (168, 235, 255, 255), 10: (97, 97, 97, 255), 11: (227, 226, 195, 255), } colormap = urllib.parse.urlencode({"colormap": json.dumps(colormap)}) render_option = { "id": "default", "name": "Default", "description": "Land cover classification using 9 class custom colormap", "type": "raster-tile", "options": f"assets=data&exitwhenfull=False&skipcovered=False&{colormap}", "minZoom": 6, } response = requests.post( f"{geocatalog_url}/stac/collections/{collection['id']}/configurations/render-options", json=render_option, headers=headers, params={"api-version": "2025-04-30-preview"} ) print(response.status_code)Zdefiniuj mozaikę dla kolekcji. Konfiguracja mozaiki określa sposób wykonywania zapytań o elementy, filtrowania i łączenia w celu utworzenia pojedynczego widoku danych w Eksploratorze GeoCatalog. Poniższa przykładowa konfiguracja mozaiki nie stosuje żadnych dodatkowych parametrów ani filtrów zapytania. W związku z tym, po wybraniu tej konfiguracji w Eksploratorze GeoCatalog, wszystkie elementy w kolekcji są wyświetlane, z najnowszymi elementami pokazanymi jako pierwsze.
mosaic = { "id": "most-recent", "name": "Most recent available", "description": "Show the most recent available data", "cql": [], } response = requests.post( f"{geocatalog_url}/stac/collections/{collection['id']}/configurations/mosaics", json=mosaic, headers=headers, params={"api-version": "2025-04-30-preview"} ) print(response.status_code)Pole
cqlkonfiguracji mozaiki może służyć do filtrowania elementów na podstawie ich właściwości. Jeśli na przykład elementy STAC implementująeo[rozszerzenie][eo], można zdefiniować filtr "niska chmura" (mniej niż 10% chmury) z"cql": [{"op": "<=", "args": [{"property": "eo:cloud_cover"}, 10]}]Zdefiniuj ustawienia kafelka dla kolekcji. Spowoduje to sterowanie takimi elementami jak minimalny poziom powiększenia.
tile_settings = { "minZoom": 6, "maxItemsPerTile": 35, } requests.put( f"{geocatalog_url}/stac/collections/{collection['id']}/configurations/tile-settings", json=tile_settings, headers=headers, params={"api-version": "2025-04-30-preview"} )
Aktualizowanie kolekcji
Istniejącą kolekcję można zaktualizować poprzez wysłanie żądania PUT do punktu końcowego /stac/collections/{collection_id}.
collection["description"] += " (Updated)"
response = requests.put(
f"{geocatalog_url}/stac/collections/{collection['id']}",
headers={"Authorization": f"Bearer {token.token}"},
json=collection,
params={"api-version": "2025-04-30-preview"},
)
print(response.status_code)
200 Kod stanu wskazuje, że kolekcja została pomyślnie zaktualizowana.
Uprzątnij zasoby
Możesz użyć DELETE żądania, aby usunąć kolekcję z GeoCatalogu. Usunięcie kolekcji powoduje również usunięcie:
- Wszystkie elementy STAC, które są podrzędne względem tej kolekcji.
- Wszystkie zasoby, które są elementami podrzędnymi tych elementów.
- Wszystkie zasoby na poziomie tej kolekcji.
Ta kolekcja jest używana w przewodniku "Szybki start", Dodawanie elementów STAC do kolekcji, więc nie usuwaj jej jeszcze, jeśli planujesz ukończyć ten przewodnik.
response = requests.delete(
f"{geocatalog_url}/stac/collections/{collection['id']}",
headers={"Authorization": f"Bearer {token.token}"},
params={"api-version": "2025-04-30-preview"}
)
print(response.status_code)
Kod 204 stanu wskazuje, że kolekcja została usunięta.
Ostrzeżenie
Jeśli usuniesz kolekcję, musisz poczekać co najmniej 45 sekund przed podjęciem próby utworzenia nowej kolekcji o identycznej nazwie /identyfikatorze. Jeśli spróbujesz utworzyć nową kolekcję przy użyciu tej samej nazwy co usunięta kolekcja, zostanie wyświetlony błąd. Jeśli wystąpi ten błąd, spróbuj ponownie utworzyć kolekcję po 45 sekundach oczekiwania.