Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Microsoft Planetary Computer Pro är en geospatial datahanteringstjänst byggd på Azure:s hyperskalinfrastruktur. GeoCatalog är en Azure-resurs som tillhandahåller grundläggande funktioner för att ta in, hantera, söka och distribuera geospatiala dataset med hjälp av SpatioTemporal Asset Catalog (STAC) öppen specifikation.
Viktiga funktioner
- STAC-samlingshantering: Skapa, läsa, uppdatera och ta bort STAC-samlingar och objekt för att organisera dina geospatiala datamängder
- Samlingskonfiguration: Konfigurera renderingsalternativ, mosaiker, tile-inställningar och frågebara filer för att optimera frågeprestanda och visualisering
- Datavisualisering: Generera kartplattor (XYZ, TileJSON, WMTS), förhandsgranska bilder, beskär med GeoJSON eller avgränsningsruta, extrahera punktvärden och beräkna statistik
- Mosaikoperationer: Registrera STAC-sökningsbaserade mosaiker för pixelvis datasökning och hämtning, generera plattor från flera objekt och få tillgång till TileJSON- och WMTS-funktioner
- Kartlegender: Hämta klasskartlegender (kategoriska) och intervalllegender (kontinuerliga) som JSON- eller PNG-bilder med fördefinierade färgkartor
- Datainsamling: Sätt upp inmatningskällor (Managed Identity eller SAS-token), definiera insamlingar från STAC-kataloger och skapa samt övervaka insamlingskörningar
- STAC API-operationer: Fullständiga CRUD-operationer på objekt, sökning med rumsliga/temporala filter och sortering, hämta frågebara egenskaper och kontrollera API-konformitet
- Säker åtkomst: Generera SAS-tokens med konfigurerbar varaktighet för inkasso, signera tillgångs-HREF:er för säkra nedladdningar och återkalla tokens – allt säkrat via Microsoft Entra ID
Nyckellänkar:
Komma igång
Miljöer som stöds för närvarande
- LTS-versioner av Node.js
- De senaste versionerna av Safari, Chrome, Edge och Firefox.
Se vår supportpolicy för mer information.
Förutsättningar
- En prenumeration på Azure
- En Microsoft Planetary Computer Pro GeoCatalog-resurs. Du kan skapa resursen via Azure Portal, Azure PowerShell eller Azure CLI.
GeoCatalog-endpointen (catalogUri) finns i Azure Portal på din GeoCatalog-resurss översiktssida.
Installera @azure/planetarycomputer-paketet
Installera Azure Planetary Computer Pro-klientbiblioteket för JavaScript med npm:
npm install @azure/planetarycomputer
Skapa och autentisera en PlanetaryComputerProClient
Det finns flera sätt att autentisera sig med Microsoft Planetary Computer Pro-tjänsten och det rekommenderade sättet är att använda Microsoft Entra ID för säker, nyckellös autentisering via Azure Identity-biblioteket. Så här kommer du igång:
- Installera Azure Identity-paketet:
npm install @azure/identity
Registrera en ny Microsoft Entra ID-applikation och ge tillgång till Microsoft Planetary Computer Pro genom att tilldela lämplig roll till din tjänsteansvarig.
Ange värdena för klient-ID, klient-ID och klienthemlighet för Microsoft Entra-ID-programmet som miljövariabler:
AZURE_CLIENT_ID,AZURE_TENANT_ID,AZURE_CLIENT_SECRET.Skapa klienten med 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);
Nyckelbegrepp
PlanetaryComputerProClient
PlanetaryComputerProClientär det primära gränssnittet för utvecklare som använder Microsoft Planetary Computer Pro-klientbiblioteket. Klienten ger tillgång till flera operationsgrupper:
STAC-operationer (client.stac)
- Samlingshantering: Skapa, uppdatera, lista och ta bort STAC-samlingar för att organisera dina geospatiala datamängder
- Föremålshantering: Skapa, läsa, uppdatera och ta bort enskilda STAC-objekt inom samlingar
- Sök-API: Sök efter objekt med hjälp av rumsliga och temporala filter, sortering och frågebara egenskaper
- Konfiguration: Hantera renderingsalternativ, mosaiker, kakelinställningar, frågebara filer och partitionstyper
- API-konformitet: Hämta STAC API-konformitetsklasser och information om landningssidan
Dataoperationer (client.data)
- Tilegenerering: Generera kartplattor (XYZ, TileJSON, WMTS) från samlingar, objekt och mosaiker
- Datavisualisering: Skapa förhandsvisningsbilder, beskär med GeoJSON eller begränsningsruta, extrahera punktvärden och beräkna statistik
- Mosaikoperationer: Registrera STAC-sökbaserade mosaiker och hämta mosaikplattor, TileJSON och WMTS-funktioner
- Kartlegender: Hämta klasskartor och intervalllegender som JSON- eller PNG-bilder
- Tillgångsmetadata: Hämta tilematrisset och tillgångsmetadata för samlingar och objekt
Intagsoperationer (client.ingestion)
- Insamlingskällor: Sätt upp insamlingskällor med Managed Identity eller SAS-tokenautentisering
- Definitioner av intagning: Definiera automatiserad insamling av STAC-kataloger från offentliga och privata datakällor
- Intagningskörningar: Skapa och övervaka insamlingskörningar med detaljerad driftspårning
Delad åtkomstsignaturoperationer (client.sharedAccessSignature)
- Tokengenerering: Generera SAS-tokens med konfigurerbar duration för samlingar
- Asset Signing: Signera tillgångs-HREF:er för säkra nedladdningar av hanterade lagringstillgångar
- Token-återkallelse: Återkalla tokens när det behövs för att kontrollera åtkomst
GeoCatalog
En GeoCatalog är den övergripande Azure-resursen som lagrar och organiserar din geospatiala data. Den innehåller:
- Zonredundant, hanterad lagring för raster- och datakubformat
- Inbyggd molnoptimering för stödda datatyper
- Ett hanterat STAC-API för all lagrad data
- Integration med Azure:s säkerhets- och identitetshantering via Microsoft Entra ID
STAC (SpatioTemporal Asset Catalog)
STAC är en öppen specifikation för att organisera och beskriva geospatial data. Microsoft Planetary Computer Pro använder STAC för att tillhandahålla:
- Samlingar: Logiska grupperingar av relaterade geospatiala datamängder
- Föremål: Individuella tillgångar (t.ex. satellitbilder, raster) med metadata
- Tillgångar: De faktiska datafilerna som refereras av STAC-objekt
Examples
Detta avsnitt innehåller kodfragment som täcker vanliga GeoCatalog-arbetsflöden. För kompletta fungerande exempel, se exempelkatalogen .
- Lista STAC-samlingar
- Sök efter STAC-objekt
- Få detaljer om STAC-föremål
- Skapa en STAC-samling
- Registrera och rendera mosaikplattor
- Extrahera poängvärden
- Generera kartplattor
- Sätt upp intagningskälla
- Datainsamlingshantering
- Skaffa en SAS-token
Lista STAC-samlingar
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}`);
}
Sök efter STAC-objekt
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}`);
}
Få detaljer om STAC-föremål
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)}`);
Skapa en STAC-samling
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");
Registrera och rendera mosaikplattor
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}`);
Extrahera poängvärden
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}`);
Generera kartplattor
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`);
Sätt upp intagningskälla
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}`);
Datainsamlingshantering
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}`);
Skaffa en 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
General
Planetary Computer Pro-klientbiblioteket kommer att skapa undantag definierade i Azure Core.
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}`);
}
}
Logging
Aktivering av loggning kan hjälpa dig att hitta användbar information om fel. Om du vill se en logg med HTTP-begäranden och svar anger du AZURE_LOG_LEVEL miljövariabeln till info. Du kan också aktivera loggning vid körning genom att anropa setLogLevel i @azure/logger:
import { setLogLevel } from "@azure/logger";
setLogLevel("info");
Mer detaljerade anvisningar om hur du aktiverar loggar finns i dokument för @azure/logger-paket.
Nästa steg
Mer exempelkod
För kompletta arbetsexempel, se de individuella exempelfilerna:
| Scenario | Sample |
|---|---|
| STAC-samlingshantering | stacCreateCollectionSample.ts |
| STAC-produkthantering | stacCreateItemSample.ts |
| STAC-sökning | stacSearchSample.ts |
| Mosaikregistrering | dataRegisterMosaicsSearchSample.ts |
| Generering av kartplattor | dataGetTileSample.ts |
| Poängvärden | dataGetPointSample.ts |
| Intagsinställning | ingestionCreateSourceSample.ts |
| Intagshantering | ingestionCreateSample.ts |
| SAS-token | sharedAccessSignatureGetTokenSample.ts |
| Kartlegender | dataGetLegendSample.ts |
Ytterligare dokumentation
- Läs mer om Microsoft Planetary Computer Pro
- Läs STAC-specifikationen
- Se hur du distribuerar en GeoCatalog-resurs
- Förstå hur du hanterar åtkomst till Microsoft Planetary Computer Pro
Contributing
Om du vill bidra till detta bibliotek, läs gärna guiden bidrag för att lära dig mer om hur man bygger och testar koden.
Det här projektet välkomnar bidrag och förslag. De flesta bidrag kräver att du godkänner ett licensavtal för deltagare (CLA) som förklarar att du har rätt att, och faktiskt gör det, ge oss rätten att använda ditt bidrag. Mer information finns på cla.microsoft.com.
När du skickar en pull-begäran avgör en CLA-robot automatiskt om du behöver tillhandahålla ett CLA och dekorera PR på rätt sätt (t.ex. etikett, kommentar). Följ bara anvisningarna från roboten. Du behöver bara göra detta en gång för alla lagringsplatser med vår CLA.
Det här projektet har antagit Microsoft Open Source Code of Conduct (Microsofts regler för uppförande för öppen källkod). Läs Vanliga frågor och svar om uppförandekoden eller kontakta opencode@microsoft.com om du har några andra frågor eller kommentarer.
Azure SDK for JavaScript