Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Der Microsoft Planetary Computer Pro ist ein geospatial Datenmanagement-Service, der auf der hyperskalierten Infrastruktur von Azure basiert. Der GeoCatalog ist eine Azure-Ressource, die grundlegende Funktionen bietet, um georäumliche Datensätze mithilfe der SpatioTemporal Asset Catalog (STAC) offenen Spezifikation zu erfassen, zu verwalten, zu suchen und zu verteilen.
Wichtige Funktionen
- STAC-Sammlungsverwaltung: Erstellen Sie, lesen, aktualisieren und löschen Sie STAC-Sammlungen und -Objekte, um Ihre geospatialen Datensätze zu organisieren
- Sammlungskonfiguration: Konfigurieren Sie Renderoptionen, Mosaike, Kacheleinstellungen und Abfrageobjekte, um Abfrageleistung und Visualisierung zu optimieren
- Datenvisualisierung: Kartenkacheln (XYZ, TileJSON, WMTS) erstellen, Bilder vorschauen, mit GeoJSON oder Begrenzungsbox beschneiden, Punktwerte extrahieren und Statistiken berechnen
- Mosaikoperationen: Registrieren Sie STAC-suchbasierte Mosaike für pixelweise Datenabfrage und -abruf, generieren Sie Kacheln aus mehreren Elementen und greifen Sie auf TileJSON- und WMTS-Funktionen auf
- Kartenlegenden: Rufen Sie Klassenkartenlegenden (kategorial) und Intervalllegenden (kontinuierlich) als JSON- oder PNG-Bilder mit vordefinierten Farbkarten ab
- Datenaufnahme: Einrichtung von Eingabequellen (Managed Identity oder SAS-Token), Definition von Eingaben aus STAC-Katalogen sowie Erstellung sowie Überwachung von Aufnahmeläufen
- STAC-API-Operationen: Vollständige CRUD-Operationen auf Artikeln, Suche mit räumlichen/zeitlichen Filtern und Sortierung, Abfrage abfragbarer Eigenschaften und Überprüfung der API-Konformität
- Sicherer Zugriff: Generiere SAS-Token mit konfigurierbarer Dauer für Sammlungen, signiere HREFs von Vermögenswerten für sichere Downloads und widerrufe Token – alles gesichert über Microsoft Entra ID
Wichtige Links:
Erste Schritte
Derzeit unterstützte Umgebungen
- LTS-Versionen von Node.js
- Neueste Versionen von Safari, Chrome, Edge und Firefox.
Weitere Details finden Sie in unserer Support-Richtlinie.
Prerequisites
- Ein Azure-Abonnement
- Eine Microsoft Planetary Computer Pro GeoCatalog-Ressource. Du kannst die Ressource über das Azure-Portal, die Azure PowerShell oder die Azure CLI erstellen.
Der GeoCatalog-Endpunkt (catalogUri) ist im Azure-Portal auf der Übersichtsseite Ihrer GeoCatalog-Ressource zu finden.
Installieren Sie das @azure/planetarycomputer-Paket
Installiere die Client-Bibliothek von Azure Planetary Computer Pro für JavaScript mit npm:
npm install @azure/planetarycomputer
Erstellen und Authentifizieren einer PlanetaryComputerProClient
Es gibt mehrere Möglichkeiten, sich mit dem Microsoft Planetary Computer Pro-Dienst zu authentifizieren, und die empfohlene Methode ist die Verwendung von Microsoft Entra ID für eine sichere, schlüssellose Authentifizierung über die Azure Identity-Bibliothek. Um loszulegen:
- Installiere das Azure Identity-Paket:
npm install @azure/identity
Registrieren Sie eine neue Microsoft Entra ID-Anwendung und gewähren Sie Ihnen Zugang zu Microsoft Planetary Computer Pro, indem Sie Ihrem Service Principal die passende Rolle zuweisen.
Legen Sie die Werte der Client-ID, der Mandanten-ID und des geheimen Clientschlüssels der Microsoft Entra ID Anwendung als Umgebungsvariablen fest:
AZURE_CLIENT_ID,AZURE_TENANT_ID,AZURE_CLIENT_SECRET.Erstellen Sie den Client mit DefaultAzureCredential:
import { DefaultAzureCredential } from "@azure/identity";
import { PlanetaryComputerProClient } from "@azure/planetarycomputer";
const credential = new DefaultAzureCredential();
const catalogUri = "<your-geocatalog-endpoint>"; // e.g., "https://your-geocatalog.geocatalogs.azure.com"
const client = new PlanetaryComputerProClient(catalogUri, credential);
Wichtige Begriffe
PlanetaryComputerProClient
PlanetaryComputerProClientist die primäre Schnittstelle für Entwickler, die die Client-Bibliothek Microsoft Planetary Computer Pro verwenden. Der Client bietet Zugriff auf mehrere Operationsgruppen:
STAC-Betrieb (client.stac)
- Sammlungsverwaltung: Erstellen Sie, aktualisieren, listen und löschen Sie STAC-Sammlungen, um Ihre geospatialen Datensätze zu organisieren
- Artikelverwaltung: Erstellen Sie, lesen, aktualisieren und löschen Sie einzelne STAC-Einträge innerhalb der Sammlungen
- Such-API: Suche nach Elementen mit räumlichen und zeitlichen Filtern, Sortier- und abfragbaren Eigenschaften
- Konfiguration: Verwaltung von Renderoptionen, Mosaiken, Kacheleinstellungen, Abfragen und Partitionstypen
- API-Konformität: Abruf von STAC-API-Konformitätsklassen und Informationen zur Landingpage
Datenoperationen (client.data)
- Kachelgenerierung: Generiere Kartenkacheln (XYZ, TileJSON, WMTS) aus Sammlungen, Objekten und Mosaiken
- Datenvisualisierung: Erstellen Sie Vorschaubilder, schneiden Sie sie mit GeoJSON oder Begrenzungsbox, extrahieren Sie Punktwerte und rechnen Sie Statistiken
- Mosaikoperationen: Registrieren Sie STAC-suchbasierte Mosaike und rufen Mosaikkacheln, TileJSON- und WMTS-Fähigkeiten ab
- Kartenlegenden: Klassenkarten- und Intervalllegenden als JSON- oder PNG-Bilder abrufen
- Asset-Metadaten: Abruf von Kachelmatrixsets und Asset-Metadaten für Sammlungen und Items
Aufnahmeoperationen (client.ingestion)
- Aufnahmequellen: Einrichtung von Eingabequellen mit Managed Identity oder SAS-Token-Authentifizierung
- Aufnahmedefinitionen: Definieren Sie automatisierte STAC-Katalogaufnahme aus öffentlichen und privaten Datenquellen
- Aufnahmeläufe: Erstellen und überwachen Sie Aufnahmeläufe mit detaillierter Betriebsverfolgung
Shared-Access-Signaturoperationen (client.sharedAccessSignature)
- Token-Generierung: Generiere SAS-Token mit konfigurierbarer Dauer für Sammlungen
- Asset Signing: Signieren Sie Asset-HREFs für sichere Downloads von Managed Storage Assets
- Token-Widerruf: Widerrufe Token, wenn nötig zur Kontrolle des Zugriffs
GeoKatalog
Ein GeoCatalog ist die oberste Azure-Ressource, die Ihre georäumlichen Daten speichert und organisiert. Sie bietet:
- Zonenredundanter, verwalteter Speicher für Raster- und Datenwürfel-Formate
- Eingebaute Cloud-Optimierung für unterstützte Datentypen
- Eine verwaltete STAC-API für alle gespeicherten Daten
- Integration mit Azure's Sicherheits- und Identitätsmanagement über Microsoft Entra ID
STAC (SpatioTemporal Asset Katalog)
STAC ist eine offene Spezifikation zur Organisation und Beschreibung geospatial Daten. Microsoft Planetary Computer Pro verwendet STAC, um Folgendes bereitzustellen:
- Sammlungen: Logische Gruppierungen verwandter georäumlicher Datensätze
- Artikel: Einzelne Assets (z. B. Satellitenbilder, Raster) mit Metadaten
- Assets: Die tatsächlichen Datendateien, auf die von STAC-Items referenziert werden
Examples
Dieser Abschnitt bietet Codeschnipsel, die gängige GeoCatalog-Workflows abdecken. Für vollständige funktionierende Beispiele siehe das Samples-Verzeichnis .
- Liste der STAC-Sammlungen
- Suche nach STAC-Objekten
- Details zu STAC-Artikeln erhalten
- Erstellen einer STAC-Auflistung
- Mosaikfliesen registrieren und rendern
- Punktwerte extrahieren
- Kartenkacheln generieren
- Einrichtung der Aufnahmequelle
- Datenerfassungsverwaltung
- Hol dir einen SAS-Token
Liste der STAC-Sammlungen
import { DefaultAzureCredential } from "@azure/identity";
import { PlanetaryComputerProClient } from "@azure/planetarycomputer";
const credential = new DefaultAzureCredential();
const catalogUri = "<your-geocatalog-endpoint>";
const client = new PlanetaryComputerProClient(catalogUri, credential);
const collections = await client.stac.getCollections();
console.log(`Found ${collections.collections.length} collections`);
for (const collection of collections.collections) {
console.log(`- ${collection.id}: ${collection.description}`);
}
Suche nach STAC-Objekten
import { DefaultAzureCredential } from "@azure/identity";
import { PlanetaryComputerProClient } from "@azure/planetarycomputer";
const credential = new DefaultAzureCredential();
const catalogUri = "<your-geocatalog-endpoint>";
const client = new PlanetaryComputerProClient(catalogUri, credential);
const searchResult = await client.stac.search({
collections: ["naip"],
datetime: "2021-01-01T00:00:00Z/2022-12-31T23:59:59Z",
limit: 10,
});
console.log(`Found ${searchResult.features.length} items`);
for (const item of searchResult.features) {
console.log(`Item ID: ${item.id}, Collection: ${item.collection}`);
}
Details zu STAC-Artikeln erhalten
import { DefaultAzureCredential } from "@azure/identity";
import { PlanetaryComputerProClient } from "@azure/planetarycomputer";
const credential = new DefaultAzureCredential();
const catalogUri = "<your-geocatalog-endpoint>";
const client = new PlanetaryComputerProClient(catalogUri, credential);
const item = await client.stac.getItem("naip", "ga_m_3308421_se_16_060_20211114");
console.log(`Item ID: ${item.id}`);
console.log(`Assets: ${Object.keys(item.assets)}`);
Erstellen Sie eine STAC-Sammlung
import { DefaultAzureCredential } from "@azure/identity";
import { PlanetaryComputerProClient } from "@azure/planetarycomputer";
const credential = new DefaultAzureCredential();
const catalogUri = "<your-geocatalog-endpoint>";
const client = new PlanetaryComputerProClient(catalogUri, credential);
const poller = await client.stac.createCollection({
id: "my-collection",
type: "Collection",
stacVersion: "1.0.0",
description: "A collection of geospatial data",
license: "proprietary",
extent: {
spatial: { boundingBox: [[-180, -90, 180, 90]] },
temporal: { interval: [[null, null]] },
},
links: [],
});
await poller.pollUntilDone();
console.log("Collection created");
Mosaikfliesen registrieren und rendern
import { DefaultAzureCredential } from "@azure/identity";
import { PlanetaryComputerProClient } from "@azure/planetarycomputer";
const credential = new DefaultAzureCredential();
const catalogUri = "<your-geocatalog-endpoint>";
const client = new PlanetaryComputerProClient(catalogUri, credential);
const registration = await client.data.registerMosaicsSearch({
collections: ["naip"],
filterLang: "cql2-json" as const,
filter: { op: "=", args: [{ property: "naip:year" }, "2021"] },
});
console.log(`Search ID: ${registration.searchId}`);
const tileJson = await client.data.getSearchTileJson(registration.searchId, {
assets: ["image"],
});
console.log(`Tile URLs: ${tileJson.tiles}`);
Punktwerte extrahieren
import { DefaultAzureCredential } from "@azure/identity";
import { PlanetaryComputerProClient } from "@azure/planetarycomputer";
const credential = new DefaultAzureCredential();
const catalogUri = "<your-geocatalog-endpoint>";
const client = new PlanetaryComputerProClient(catalogUri, credential);
const pointData = await client.data.getItemPoint(
"naip",
"ga_m_3308421_se_16_060_20211114",
-84.41,
33.65,
{ assets: ["image"] },
);
console.log(`Coordinates: ${pointData.coordinates}`);
console.log(`Values: ${pointData.values}`);
Kartenkacheln generieren
import { DefaultAzureCredential } from "@azure/identity";
import { PlanetaryComputerProClient } from "@azure/planetarycomputer";
const credential = new DefaultAzureCredential();
const catalogUri = "<your-geocatalog-endpoint>";
const client = new PlanetaryComputerProClient(catalogUri, credential);
const tileResponse = await client.data.getTile(
"naip",
"ga_m_3308421_se_16_060_20211114",
"WebMercatorQuad",
14,
4322,
6463,
{ assets: ["image"] },
);
console.log(`Tile size: ${tileResponse.length} bytes`);
Einrichtung der Aufnahmequelle
import { DefaultAzureCredential } from "@azure/identity";
import { PlanetaryComputerProClient } from "@azure/planetarycomputer";
const credential = new DefaultAzureCredential();
const catalogUri = "<your-geocatalog-endpoint>";
const client = new PlanetaryComputerProClient(catalogUri, credential);
const source = await client.ingestion.createSource({
id: "my-storage-source",
kind: "BlobManagedIdentity",
connectionInfo: {
containerUri: "https://mystorage.blob.core.windows.net/geospatial-data",
objectId: "00000000-0000-0000-0000-000000000000",
},
});
console.log(`Created source: ${source.id}`);
Datenerfassungsverwaltung
import { DefaultAzureCredential } from "@azure/identity";
import { PlanetaryComputerProClient } from "@azure/planetarycomputer";
const credential = new DefaultAzureCredential();
const catalogUri = "<your-geocatalog-endpoint>";
const client = new PlanetaryComputerProClient(catalogUri, credential);
const ingestion = await client.ingestion.create("my-collection", {
importType: "StaticCatalog",
displayName: "My data ingestion",
sourceCatalogUrl: "https://example.com/catalog.json",
keepOriginalAssets: true,
skipExistingItems: true,
});
console.log(`Created ingestion: ${ingestion.id}`);
Hol dir einen SAS-Token
import { DefaultAzureCredential } from "@azure/identity";
import { PlanetaryComputerProClient } from "@azure/planetarycomputer";
const credential = new DefaultAzureCredential();
const catalogUri = "<your-geocatalog-endpoint>";
const client = new PlanetaryComputerProClient(catalogUri, credential);
const token = await client.sharedAccessSignature.getToken("naip");
console.log(`Token expires at: ${token.expiresOn}`);
// Sign an asset URL for secure download
const signed = await client.sharedAccessSignature.getUrl(
"https://storage.blob.core.windows.net/container/asset.tif",
);
console.log(`Signed URL: ${signed.href}`);
Troubleshooting
Allgemein
Die Client-Bibliothek von Planetary Computer Pro erzeugt Ausnahmen, die in Azure Core definiert sind.
import { DefaultAzureCredential } from "@azure/identity";
import { PlanetaryComputerProClient } from "@azure/planetarycomputer";
import { RestError } from "@azure/core-rest-pipeline";
const credential = new DefaultAzureCredential();
const catalogUri = "<your-geocatalog-endpoint>";
const client = new PlanetaryComputerProClient(catalogUri, credential);
try {
await client.stac.getCollection("non-existent-collection");
} catch (e) {
if (e instanceof RestError) {
console.log(`Status code: ${e.statusCode}`);
console.log(`Message: ${e.message}`);
}
}
Protokollierung
Das Aktivieren der Protokollierung kann hilfreiche Informationen zu Fehlern aufdecken. Um ein Protokoll von HTTP-Anforderungen und -Antworten anzuzeigen, legen Sie die AZURE_LOG_LEVEL Umgebungsvariable auf infofest. Alternativ kann das Logging zur Laufzeit aktiviert werden, indem setLogLevel im @azure/logger aufgerufen wird:
import { setLogLevel } from "@azure/logger";
setLogLevel("info");
Ausführlichere Anweisungen zum Aktivieren von Protokollen finden Sie in den @azure/Logger-Paketdokumenten.
Nächste Schritte
Weitere Beispielcode
Für vollständige Arbeitsbeispiele siehe die einzelnen Beispieldateien:
| Scenario | Beispiel |
|---|---|
| STAC-Sammlungsmanagement | stacCreateCollectionSample.ts |
| STAC-Gegenstandsverwaltung | stacCreateItemSample.ts |
| STAC-Suche | stacSearchSample.ts |
| Mosaik-Registrierung | dataRegisterMosaicsSearchSample.ts |
| Kartenkachelgenerierung | dataGetTileSample.ts |
| Punktwerte | dataGetPointSample.ts |
| Aufnahme-Setup | ingestionCreateSourceSample.ts |
| Aufnahmemanagement | ingestionCreateSample.ts |
| SAS-Token | sharedAccessSignatureGetTokenSample.ts |
| Kartenlegenden | dataGetLegendSample.ts |
Zusätzliche Dokumentation
- Erfahren Sie mehr über Microsoft Planetary Computer Pro
- Lesen Sie die STAC-Spezifikation
- Sieh dir an, wie man eine GeoCatalog-Ressource bereitstellt
- Verstehen Sie, wie man den Zugriff auf Microsoft Planetary Computer Pro verwaltet
Contributing
Wenn Sie zu dieser Bibliothek beitragen möchten, lesen Sie bitte den beitragenden Leitfaden, um mehr darüber zu erfahren, wie man den Code erstellt und testet.
Dieses Projekt begrüßt Beiträge und Vorschläge. Die meisten Beiträge erfordern, dass Sie einem Mitwirkenden-Lizenzvertrag (CLA) zustimmen, der erklärt, dass Sie das Recht haben, uns tatsächlich die Rechte zur Nutzung Ihres Beitrags zu gewähren. Weitere Informationen finden Sie unter cla.microsoft.com.
Wenn Sie eine Pullanfrage einreichen, bestimmt ein CLA-Bot automatisch, ob Sie eine CLA bereitstellen und die PR entsprechend dekorieren müssen (z. B. Bezeichnung, Kommentar). Folgen Sie einfach den Anweisungen des Bots. Sie müssen dies nur einmal über alle Reposs hinweg tun, indem Sie unsereN CLA verwenden.
Dieses Projekt hat den Microsoft Open Source Code of Conductübernommen. Weitere Informationen finden Sie in den häufig gestellten Fragen zum Verhaltenskodex. Sie können sich auch an opencode@microsoft.com wenden, wenn Sie weitere Fragen oder Kommentare haben.
Azure SDK for JavaScript