Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
O Microsoft Planetary Computer Pro é um serviço de gestão de dados geoespaciais construído sobre a infraestrutura hiperescala da Azure. O GeoCatalog é um recurso do Azure que fornece capacidades fundamentais para ingerir, gerir, pesquisar e distribuir conjuntos de dados geoespaciais utilizando a especificação aberta SpatioTemporal Asset Catalog (STAC).
Capacidades chave
- Gestão de Coleções STAC: Crie, leia, atualize e elimine coleções e itens STAC para organizar os seus conjuntos de dados geoespaciais
- Configuração da Coleção: Configure opções de renderização, mosaicos, definições de tiles e queryables para otimizar o desempenho das consultas e visualização
- Visualização de Dados: Gerar blocos de mapa (XYZ, TileJSON, WMTS), pré-visualizar imagens, recortar por GeoJSON ou caixa delimitadora, extrair valores de pontos e calcular estatísticas
- Operações Mosaic: Registar mosaicos baseados em pesquisa STAC para consulta e recuperação de dados pixel a pixel, gerar tiles a partir de múltiplos itens e aceder às capacidades TileJSON e WMTS
- Legendas de Mapa: Recuperar legendas de mapas de classe (categóricas) e legendas de intervalo (contínuas) como imagens JSON ou PNG com mapas de cor predefinidos
- Ingestão de Dados: Configurar fontes de ingestão (Managed Identity ou token SAS), definir ingestiones a partir de catálogos STAC e criar e monitorizar execuções de ingestão
- Operações de API STAC: Operações CRUD completas em itens, pesquisa com filtros espaciais/temporais e ordenação, recuperação de propriedades consultáveis e verificação da conformidade com a API
- Acesso Seguro: Gerar tokens SAS com duração configurável para coleções, assinar HREFs de ativos para downloads seguros e revogar tokens — tudo protegido via Microsoft Entra ID
Ligações principais:
Como Começar
Ambientes atualmente suportados
- Versões LTS de Node.js
- Últimas versões do Safari, Chrome, Edge e Firefox.
Consulte a nossa política de suporte para obter mais detalhes.
Pré-requisitos
- Uma assinatura do Azure
- Um recurso do Microsoft Planetary Computer Pro GeoCatalog. Pode criar o recurso através do portal do Azure, do Azure PowerShell ou do CLI do Azure.
O endpoint do GeoCatalog (catalogUri) pode ser encontrado no portal do Azure, na página de visão geral do seu recurso GeoCatalog.
Instalar o pacote @azure/planetarycomputer
Instale a biblioteca cliente Azure Planetary Computer Pro para JavaScript comnpm:
npm install @azure/planetarycomputer
Criar e autenticar um PlanetaryComputerProClient
Existem várias formas de autenticação com o serviço Microsoft Planetary Computer Pro e a recomendada é usar o Microsoft Entra ID para autenticação segura e sem chave através da biblioteca Azure Identity. Para começar:
- Instale o pacote Azure Identity:
npm install @azure/identity
Registe uma nova aplicação Microsoft Entra ID e conceda acesso ao Microsoft Planetary Computer Pro, atribuindo o papel adequado ao seu principal de serviço.
Defina os valores do ID do cliente, ID do inquilino e segredo do cliente da aplicação Microsoft Entra ID como variáveis de ambiente:
AZURE_CLIENT_ID,AZURE_TENANT_ID,AZURE_CLIENT_SECRET.Crie o cliente usando 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);
Conceitos-chave
PlanetaryComputerProClient
PlanetaryComputerProClienté a interface principal para programadores que utilizam a biblioteca cliente Microsoft Planetary Computer Pro. O cliente fornece acesso a vários grupos de operações:
Operações STAC (client.stac)
- Gestão de Coleções: Crie, atualize, liste e elimine coleções STAC para organizar os seus conjuntos de dados geoespaciais
- Gestão de Itens: Criar, ler, atualizar e eliminar itens individuais do STAC dentro das coleções
- API de Pesquisa: Pesquisa de itens usando filtros espaciais e temporais, ordenação e propriedades consultáveis
- Configuração: Gerir opções de renderização, mosaicos, definições de mosaicos, consultáveis e tipos de partição
- Conformidade com a API: Recuperar as classes de conformidade com a API STAC e informações sobre a página de destino
Operações de Dados (client.data)
- Geração de Tiles: Gerar tiles de mapas (XYZ, TileJSON, WMTS) a partir de coleções, itens e mosaicos
- Visualização de Dados: Criar imagens de pré-visualização, recortar por GeoJSON ou bounding box, extrair valores de pontos e calcular estatísticas
- Operações Mosaic: Registar mosaicos baseados em pesquisa STAC e recuperar mosaicos de mosaicos, capacidades TileJSON e WMTS
- Legendas do Mapa: Recuperar legendas de mapa de classes e intervalos como imagens JSON ou PNG
- Metadados de Ativo: Recuperar conjuntos de matrizes de tiles e metadados de ativos para coleções e itens
Operações de Ingestão (client.ingestion)
- Fontes de Ingestão: Configure fontes de ingestão usando autenticação por Identidade Gerida ou token SAS
- Definições de Ingestão: Defina a ingestão automática de catálogos STAC a partir de fontes de dados públicas e privadas
- Corridas de Ingestão: Crie e monitorize as Execuções de Ingestão com um acompanhamento detalhado da operação
Operações de Assinatura de Acesso Partilhado (client.sharedAccessSignature)
- Geração de Tokens: Gerar tokens SAS com duração configurável para coleções
- Assinatura de Ativos: Assinar HREFs de ativos para downloads seguros de ativos de armazenamento gerido
- Revogação de Tokens: Revogar tokens quando necessário para controlar o acesso
GeoCatálogo
Um GeoCatálogo é o recurso principal do Azure que armazena e organiza os seus dados geoespaciais. Dispõe o seguinte:
- Armazenamento gerido e redundante de zona para formatos raster e cubo de dados
- Otimização na cloud incorporada para tipos de dados suportados
- Uma API STAC gerida para todos os dados armazenados
- Integração com a segurança e gestão de identidade do Azure através do Microsoft Entra ID
STAC (Catálogo de Ativos SpatioTemporal)
STAC é uma especificação aberta para organizar e descrever dados geoespaciais. A Microsoft Planetary Computer Pro utiliza o STAC para fornecer:
- Coleções: Agrupamentos lógicos de conjuntos de dados geoespaciais relacionados
- Itens: Ativos individuais (por exemplo, imagens de satélite, rasters) com metadados
- Ativos: Os ficheiros de dados reais referenciados pelos Itens STAC
Exemplos
Esta secção fornece excertos de código que cobrem fluxos de trabalho comuns do GeoCatálogo. Para exemplos completos e funcionais, consulte o diretório de exemplos .
- Lista das Coleções STAC
- Pesquisa por Itens STAC
- Obtenha Detalhes dos Itens STAC
- Criar uma coleção STAC
- Mosaico de Registo e Renderização
- Extrair Valores de Pontos
- Gerar Blocos de Mapa
- Configurar a Fonte de Ingestão
- Gestão da Ingestão de Dados
- Obtenha um Token SAS
Lista das Coleções STAC
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}`);
}
Pesquisa por Itens STAC
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}`);
}
Obtenha Detalhes dos Itens STAC
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)}`);
Criar uma Coleção STAC
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");
Mosaico de Registo e Renderização
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}`);
Extrair Valores de Pontos
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}`);
Gerar Blocos de Mapa
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`);
Configurar a Fonte de Ingestão
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}`);
Gestão da Ingestão de Dados
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}`);
Obtenha um Token SAS
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
A biblioteca cliente Planetary Computer Pro irá levantar exceções definidas no 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
Habilitar o registro em log pode ajudar a descobrir informações úteis sobre falhas. Para ver um log de solicitações e respostas HTTP, defina a variável de ambiente AZURE_LOG_LEVEL como info. Alternativamente, o registo pode ser ativado em tempo de execução chamando setLogLevel no @azure/logger:
import { setLogLevel } from "@azure/logger";
setLogLevel("info");
Para obter instruções mais detalhadas sobre como habilitar logs, você pode consultar os documentos do pacote @azure/logger.
Passos seguintes
Mais código de exemplo
Para exemplos funcionais completos, consulte os ficheiros de exemplo individuais:
| Scenario | Sample |
|---|---|
| Gestão de Coleções STAC | stacCreateCollectionSample.ts |
| Gestão de Itens STAC | stacCreateItemSample.ts |
| Busca STAC | stacSearchSample.ts |
| Registo em mosaico | dataRegisterMosaicsSearchSample.ts |
| Geração de Tiles do Mapa | dataGetTileSample.ts |
| Valores de Pontos | dataGetPointSample.ts |
| Configuração de Ingestão | ingestionCreateSourceSample.ts |
| Gestão da Ingestão | ingestionCreateSample.ts |
| SAS Token | sharedAccessSignatureGetTokenSample.ts |
| Lendas do Mapa | dataGetLegendSample.ts |
Documentação adicional
- Saiba mais sobre o Microsoft Planetary Computer Pro
- Leia a Especificação STAC
- Veja Como Implementar um recurso GeoCatalog
- Compreender como gerir o acesso ao Microsoft Planetary Computer Pro
Contributing
Se quiser contribuir para esta biblioteca, por favor leia o guia contribuição para saber mais sobre como construir e testar o código.
Este projeto acolhe contribuições e sugestões. A maioria das contribuições exige que você concorde com um Contrato de Licença de Colaborador (CLA) declarando que você tem o direito de, e realmente concede, os direitos de usar sua contribuição. Para mais detalhes, visite cla.microsoft.com.
Quando você envia uma solicitação pull, um CLA-bot determinará automaticamente se você precisa fornecer um CLA e decorar o PR adequadamente (por exemplo, rótulo, comentário). Basta seguir as instruções fornecidas pelo bot. Você só precisará fazer isso uma vez em todos os repositórios usando nosso CLA.
Este projeto adotou o Código de Conduta Open Source da Microsoft. Para mais informações, veja as Perguntas Frequentes do Código de Conduta ou contacte opencode@microsoft.com com quaisquer questões ou comentários adicionais.
Azure SDK for JavaScript