Freigeben über


Schnellstart: Erstellen einer STAC-Sammlung in Microsoft Planetary Computer Pro GeoCatalog mit Python

Diese Schnellstartanleitung führt Sie zum Erstellen einer SpatioTemporal Asset Catalog (STAC)-Sammlung und fügen sie einem Microsoft Planetary Computer Pro GeoCatalog mit Python hinzu.

Voraussetzungen

Für die Durchführung dieses Schnellstarts benötigen Sie Folgendes:

  • Ein Azure-Konto mit einem aktiven Abonnement. Verwenden Sie den Link " Konto kostenlos erstellen".
  • Ihre Umgebung ist so konfiguriert, dass sie Zugriff auf Azure ermöglicht, z. B. mit az login.
  • Zugang zu einem planetarischen Computer Pro GeoCatalog. Wenn Sie noch keinen Zugriff haben, können Sie einen neuen GeoCatalog erstellen.
  • Eine Python-Umgebung mit requests und azure-identity installiert.
python3 -m pip install requests azure-identity

Erstellen einer STAC-Sammlungs-JSON

Um eine STAC-Auflistung zu erstellen, benötigen Sie zuerst eine JSON-Datei, die die Sammlungseigenschaften definiert. Einige Eigenschaften sind beim Erstellen von STAC-Sammlungen erforderlich, wie in der STAC-Auflistungsübersicht beschrieben. Je nach Anwendungsfall und Datentyp können weitere Eigenschaften hinzugefügt werden.

Lesen Sie für dieses Tutorial die STAC-Sammlung io-lulc-annual-v02 aus der STAC-API von Planetary Computer Pro. Wenn Sie dies bereits als STAC-Sammlung in Ihrem GeoCatalog verwenden, können Sie zum nächsten Abschnitt springen.

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

Wenn Sie eine andere ID für Ihre Sammlung verwenden, müssen Sie das id Feld durch den richtigen Wert ersetzen.

Um die Datenobjekte in dieser Sammlung im Explorer zu visualisieren, sollten die Sammlungsmetadaten die Erweiterung "Elementobjekte " enthalten und mindestens eine Elementressource aufweisen, deren Medientyp visualisiert werden kann.

Zugriffstoken erhalten

Für den Zugriff auf einen GeoCatalog ist ein Token zum Authentifizieren von Anforderungen erforderlich. Verwenden Sie die Azure-Identity-Clientbibliothek für Python, um ein Token abzurufen:

import azure.identity

credential = azure.identity.DefaultAzureCredential()
token = credential.get_token("https://geocatalog.spatio.azure.com")
headers = {
    "Authorization": f"Bearer {token.token}"
}

Diese Anmeldeinformationen können als Bearertoken im Authorization-Header in Anforderungen an Ihren GeoCatalog bereitgestellt werden.

Hinzufügen einer Auflistung zu einem GeoCatalog

Stellen Sie mit den STAC-Metadaten, einem Token und der URL zu Ihrem GeoCatalog eine Anforderung an die STAC-API zum Hinzufügen der Sammlung vor.

# 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)

Ein Statuscode, der 201 angibt, dass Ihre Sammlung erstellt wurde. Ein Statuscode, der 409 angibt, dass eine Auflistung mit dieser ID bereits vorhanden ist. Informationen zum Aktualisieren einer vorhandenen Auflistung finden Sie unter Aktualisieren einer Sammlung .

Sie können diese Sammlung jetzt am Endpunkt /stac/collections/{collection_id} lesen.

geocatalog_collection = requests.get(
    f"{geocatalog_url}/stac/collections/{collection['id']}",
    headers=headers,
    params={"api-version": "2025-04-30-preview"},
).json()

Sie können Ihr GeoCatalog auch in Ihrem Browser anzeigen, um die neue Sammlung anzuzeigen.

Konfigurieren einer Sammlung

Jede Auflistung in einem GeoCatalog enthält eine Konfiguration, die steuert, wie die STAC-Elemente und ihre Datenressourcen gespeichert, indiziert und visualisiert werden. So konfigurieren Sie eine Sammlung:

  1. Definieren Sie eine Renderkonfiguration für die Sammlung. Diese Renderkonfiguration steuert, wie die STAC-Elementressourcen innerhalb der Auflistung gerendert werden, wenn sie im GeoCatalog-Explorer visualisiert werden. Die hier verwendeten spezifischen Parameter hängen von den Objekten in Ihrer Sammlung ab.

    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)
    
  2. Definieren Sie ein Mosaik für die Sammlung. Die Mosaikkonfiguration steuert, wie Elemente abgefragt, gefiltert und kombiniert werden, um eine einzelne Ansicht der Daten im GeoCatalog-Explorer zu erstellen. Die folgende Beispiel-Mosaikkonfiguration wendet keine zusätzlichen Abfrageparameter oder Filter an. Wenn diese Konfiguration im GeoCatalog-Explorer ausgewählt wird, werden alle Elemente in der Auflistung angezeigt, wobei die neuesten Elemente zuerst angezeigt werden.

    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)
    

    Das cql Feld der Mosaikkonfiguration kann verwendet werden, um die Elemente basierend auf ihren Eigenschaften zu filtern. Wenn Ihre STAC-Elemente beispielsweise die [eo-Erweiterung][eo] implementieren, können Sie einen Filter für „geringe Bewölkung“ (Bewölkung von weniger als 10 %) definieren mit

    "cql": [{"op": "<=", "args": [{"property": "eo:cloud_cover"}, 10]}]
    
  3. Definieren Sie Kacheleinstellungen für die Auflistung. Dadurch werden die Elemente wie die minimale Zoomstufe gesteuert.

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

Aktualisieren einer Sammlung

Sie können eine vorhandene Sammlung mit einer PUT Anforderung an den /stac/collections/{collection_id} Endpunkt aktualisieren.

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)

Ein 200 Statuscode gibt an, dass die Auflistung erfolgreich aktualisiert wurde.

Bereinigen von Ressourcen

Sie können eine DELETE Anforderung verwenden, um die Sammlung aus Ihrem GeoCatalog zu entfernen. Das Löschen einer Auflistung löscht außerdem:

  1. Alle STAC-Elemente, die untergeordnete Elemente dieser Sammlung sind.
  2. Alle Ressourcen, die untergeordnete Elemente dieser Elemente sind.
  3. Alle Ressourcen auf Sammlungsebene dieser Sammlung.

Im Schnellstart Hinzufügen von STAC-Elementen zu einer Sammlung wird diese Sammlung verwendet. Löschen Sie sie also nicht, wenn Sie diesen Schnellstart noch abschließen möchten.

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)

Ein Statuscode, der 204 angibt, dass Ihre Sammlung gelöscht wurde.

Warnung

Wenn Sie eine Sammlung löschen, müssen Sie mindestens 45 Sekunden warten, bevor Sie versuchen, eine neue Sammlung mit einem identischen Namen/einer id zu erstellen. Wenn Sie versuchen, eine neue Auflistung mit demselben Namen wie die gelöschte Auflistung zu erstellen, wird eine Fehlermeldung angezeigt. Wenn dieser Fehler auftritt, versuchen Sie, die Auflistung nach einer Wartezeit von 45 Sekunden neu zu erstellen.

Nächster Schritt