Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
V tomto článku se dozvíte, jak ingestovat mnoho geoprostorových datových prostředků najednou do GeoCatalogu pomocí rozhraní API hromadného příjmu dat. Nejprve vytvoříme a nakonfigurujeme zdroj příjmu dat GeoCatalog. Vytvoření zdroje příjmu dat vytvoří zabezpečené připojení mezi prostředkem GeoCatalog a umístěním úložiště pro vaše stávající geoprostorová data. Dále vytvoříme kolekci katalogu STAC (SpatioTemporal Access Catalog) v rámci vašeho prostředku GeoCatalog pro ukládání přijatých dat. Nakonec použijeme rozhraní API pro hromadný příjem dat k zahájení pracovního postupu příjmu dat. Po dokončení těchto kroků se geoprostorová data ingestují a zpřístupní z uživatelských rozhraní a rozhraní API GeoCatalogu.
Požadavky
V předplatném Azure:
Geoprostorová datová sada ve vašem blobovém kontejneru úložného účtu:
- Geoprostorové datové prostředky (například soubory GeoTIFF)
- Propojené položky STAC vytvoří položky STAC pro tyto prostředky.
- SOUBOR JSON kolekce STAC, který odkazuje na všechny položky STAC a geoprostorové datové prostředky.
V místním /vývojovém prostředí:
- Prostředí Pythonu s Pythonem 3.8 nebo novějším
- Azure CLI
- Jste přihlášeni do Azure
Microsoft Planety Computer Pro musí mít přístup k kontejneru Azure Blob Storage. V tomto článku vytvoříme a použijeme dočasné přihlašovací údaje tokenu SAS k udělení tohoto přístupu. Případně můžete pomocí těchto průvodců nastavit spravovanou identitu nebo pevně zakódované tokeny SAS.
- Nastavte přihlašovací údaje pro přijímání dat pro Microsoft Planetary Computer Pro s využitím spravované identity
- Nastavení přihlašovacích údajů pro příjem dat pro Microsoft Planety Computer Pro pomocí tokenů SAS
Vytvoření zdroje příjmu dat
Vytvoření zdroje pro ingestování definuje pro GeoCatalog, ze kterého zdroje má být ingestována geoprostorová data, a který mechanismus přihlašovacích údajů se má použít v procesu ingestování.
Nainstalujte požadované moduly Pythonu pomocí pipu
pip install pystac-client azure-identity requests azure-storage-blob pyyamlImport požadovaných modulů Pythonu
import os import requests from azure.identity import AzureCliCredential from datetime import datetime, timedelta, timezone import azure.storage.blob from urllib.parse import urlparse import yamlNastavení požadovaných konstant podle vašeho prostředí
MPCPRO_APP_ID = "https://geocatalog.spatio.azure.com" CONTAINER_URI = "<container_uri>" # The URI for the blob storage container housing your geospatial data GEOCATALOG_URI = "<geocatalog uri>" # The URI for your GeoCatalog can be found in the Azure portal resource overview API_VERSION = "2025-04-30-preview"Vytvoření tokenu SAS
# Parse the container URL parsed_url = urlparse(CONTAINER_URI) account_url = f"{parsed_url.scheme}://{parsed_url.netloc}" account_name = parsed_url.netloc.split(".")[0] container_name = parsed_url.path.lstrip("/") credential = azure.identity.AzureCliCredential() blob_service_client = azure.storage.blob.BlobServiceClient( account_url=account_url, credential=credential, ) now = datetime.now(timezone.utc).replace(microsecond=0) key = blob_service_client.get_user_delegation_key( key_start_time=now + timedelta(hours=-1), key_expiry_time=now + timedelta(hours=1), ) sas_token = azure.storage.blob.generate_container_sas( account_name=account_name, container_name=container_name, user_delegation_key=key, permission=azure.storage.blob.ContainerSasPermissions( read=True, list=True, ), start=now + timedelta(hours=-1), expiry=now + timedelta(hours=1), )Získání přístupového tokenu rozhraní API GeoCatalog
# Obtain an access token credential = AzureCliCredential() access_token = credential.get_token(f"{MPCPRO_APP_ID}/.default")Vytvořte POST payload pro API zdroj pro příjem dat
# Payload for the POST request payload = { "Kind": "SasToken", "connectionInfo": { "containerUrl": CONTAINER_URI, "sasToken": sas_token, }, }Vytvoření zdroje příjmu dat odesláním datové části POST do koncového bodu zdroje příjmu dat
# STAC Collection API endpoint endpoint = f"{GEOCATALOG_URI}/inma/ingestion-sources" # Make the POST request response = requests.post( endpoint, json=payload, headers={"Authorization": f"Bearer {access_token.token}"}, params={"api-version": API_VERSION}, )Ověření odpovědi
# Print the response if response.status_code == 201: print("Ingestion source created successfully") ingestion_source_id = response.json().get("id") #saved for later to enable resoource clean up else: print(f"Failed to create ingestion: {response.text}")
Poznámka:
Opakované spuštění těchto kroků za sebou vede k tomu, že je vrácena odpověď 409:
Container url <container uri> already contains a SAS token ingestion source with id <sas token id>
Rozhraní API zdroje příjmu dat neumožňuje vytvořit pro stejnou adresu URL kontejneru více než jeden zdroj příjmu dat. Abyste se vyhnuli konfliktům, před vytvořením nového zdroje se ujistěte, že vyčistíte všechny existující zdroje příjmu dat. Podrobnosti najdete v tématu Vyčištění prostředků.
Vytvořit kolekci
Kolekce STAC je kontejner vysoké úrovně pro položky STAC a jejich přidružené geoprostorové prostředky. V této části vytváříme kolekci STAC v rámci našeho GeoCatalogu pro umístění geoprostorových dat, která ingestujeme v další části.
Import požadovaných modulů
import os import requests import yaml from pprint import pprint from azure.identity import AzureCliCredentialNastavení požadovaných konstant podle vašeho prostředí
MPCPRO_APP_ID = "https://geocatalog.spatio.azure.com" GEOCATALOG_URI = "<geocatalog uri>" # The URI for your GeoCatalog can be found in the Azure portal resource overview API_VERSION = "2025-04-30-preview" COLLECTION_ID = "example-collection" #You can your own collection ID COLLECTION_TITLE = "Example Collection" #You can your own collection titleZískání přístupového tokenu rozhraní API GeoCatalog
# Obtain an access token credential = AzureCliCredential() access_token = credential.get_token(f"{MPCPRO_APP_ID}/.default")Vytvoření základní specifikace kolekce STAC
collection = { "id": COLLECTION_ID, "type": "Collection", "title": COLLECTION_TITLE, "description": "An example collection", "license": "CC-BY-4.0", "extent": { "spatial": {"bbox": [[-180, -90, 180, 90]]}, "temporal": {"interval": [["2018-01-01T00:00:00Z", "2018-12-31T23:59:59Z"]]}, }, "links": [], "stac_version": "1.0.0", "msft:short_description": "An example collection", }Poznámka:
Tato specifikace ukázkové kolekce je základním příkladem kolekce. Další informace o kolekcích STAC a otevřených standardech STAC naleznete v přehledu STAC. Další informace o vytvoření kompletní kolekce STAC naleznete v tématu Vytvoření kolekce STAC.
Vytvoření nové kolekce pomocí rozhraní API kolekce
response = requests.post( f"{GEOCATALOG_URI}/stac/collections", json=collection, headers={"Authorization": "Bearer " + access_token.token}, params={"api-version": API_VERSION}, )Ověření výsledku odpovědi
if response.status_code == 201: print("Collection created successfully") pprint(response.json()) else: print(f"Failed to create ingestion: {response.text}")
Vytvoření připojení a spuštění pracovního postupu
V tomto posledním kroku používáme rozhraní API pro příjem dat k zahájení pracovního postupu hromadného příjmu dat.
Import požadovaných modulů
import os import requests import yaml from azure.identity import AzureCliCredentialNastavení požadovaných konstant podle vašeho prostředí
MPCPRO_APP_ID = "https://geocatalog.spatio.azure.com" GEOCATALOG_URI = "<geocatalog uri>" # The URI for your GeoCatalog can be found in the Azure portal resource overview API_VERSION = "2025-04-30-preview" COLLECTION_ID = "example-collection" #You can your own collection ID catalog_href = "<catalog_href>" #The blob storage location of the STAC Catalog JSON file skip_existing_items = False keep_original_assets = False timeout_seconds = 300Získání přístupového tokenu rozhraní API GeoCatalog
# Obtain an access token credential = AzureCliCredential() access_token = credential.get_token(f"{MPCPRO_APP_ID}/.default")Vytvoření datové části POST pro rozhraní API hromadného příjmu dat
url = f"{GEOCATALOG_URI}/inma/collections/{COLLECTION_ID}/ingestions" body = { "importType": "StaticCatalog", "sourceCatalogUrl": catalog_href, "skipExistingItems": skip_existing_items, "keepOriginalAssets": keep_original_assets, }Odešle datovou část do rozhraní API hromadného příjmu dat.
ing_response = requests.post( url, json=body, timeout=timeout_seconds, headers={"Authorization": f"Bearer {access_token.token}"}, params={"api-version": API_VERSION}, )Ověřte odpověď.
if ing_response.status_code == 201: print("Ingestion created successfully") ingestion_id = ing_response.json()["ingestionId"] print(f"Created ingestion with ID: {ingestion_id}") else: print(f"Failed to create ingestion: {ing_response.text}")Ověřte stav pracovního postupu příjmu dat.
runs_endpoint = ( f"{geocatalog_url}/inma/collections/{collection_id}/ingestions/{ingestion_id}/runs" ) wf_response = requests.post( runs_endpoint, headers={"Authorization": f"Bearer {access_token.token}"}, params={"api-version": API_VERSION}, ) if wf_response.status_code == 201: print("Workflow started successfully") else: print(f"Failed to create ingestion run: {wf_response.text}")
Po dokončení pracovního postupu můžete zadávat dotazy, načítat nebo vizualizovat geoprostorová data pomocí rozhraní STAC GeoCatalog nebo rozhraní API pro data nebo pomocí Průzkumníka dat. Pokud narazíte na problémy, projděte si průvodce odstraňováním potíží nebo seznam kódů chyb příjmu dat.
Vyčistěte zdroje
Odstranění zdroje příjmu dat
del_is_endpoint = f"{GEOCATALOG_URI}/inma/ingestion-sources/{ingestion_source_id}" del_is_response = requests.delete( del_is_endpoint, headers={"Authorization": f"Bearer {access_token.token}"}, params={"api-version": API_VERSION}, ) if del_is_response.status_code == 200: print("Ingestion source deleted successfully") else: print(f"Failed to delete ingestion source")
Další kroky
Teď, když jste přidali několik položek, byste měli nakonfigurovat data pro vizualizaci.
Související obsah
- Rychlý start: Vložení jedné položky STAC do kolekce v Microsoft Planetary Computer Pro GeoCatalog
- Rychlý start: Ingestování dat pomocí webového rozhraní Microsoft Planety Computer Pro
- Ingestování dat do Microsoft Planetary Computer Pro
- Zdroj příjmu dat pro Microsoft Planetary Computer Pro
- Řešení potíží s příjmem dat
- Kódy chyb: Příjem dat Microsoft Planetary Computer Pro