点击下面卡片,快速关注本公众号
随着气候变化、生物多样性丧失和资源管理等全球性挑战日益严峻,技术创新成为应对这些问题的关键驱动力。微软的Planetary Computer(行星计算机) 是其AI for Earth计划的重要组成部分,旨在通过云计算、人工智能和地理空间数据,为科学研究和可持续发展提供强大支持。该平台整合了超过50PB的地理空间和环境数据,提供了直观的API接口和可扩展的计算环境,使研究人员、开发者能够以前所未有的规模监测、建模和管理地球生态系统。
本文将介绍
Planetary Computer
的技术架构、数据目录、API功能及其应用场景。
什么是Planetary Computer
Planetary Computer是一个基于微软Azure云计算基础设施的云原生平台,专为处理地理空间和环境数据的时空复杂性而设计。它通过整合PB级的数据目录、直观的AP 和强大的计算能力,将原始数据转化为可操作的洞察。例如,用户可以利用它分析卫星影像以追踪森林砍伐,或结合气候模型预测水资源可用性。平台于2020年发布,面向全球科研社区提供开放资源访问。
其核心组件包括:
•
数据目录:
超过50PB 的分析就绪地理空间数据。
•
STAC API:
基于 REST 的时空查询接口。
•
云计算环境:
支持分布式计算(JupyterHub于2024年6月停止服务,但数据和API仍可用)。
•
应用生态:
与合作伙伴开发数据应用软件工具,应用于实际场景。
主要功能组成
Planetary Computer的架构充分利用了Azure的云计算基础设施,结合地理空间数据的特性,提供了高效、可扩展的数据分析云平台环境。
1. 数据目录与存储
数据目录是Planetary Computer的基础,存储在Azure Blob Storage中,总量超过50PB,涵盖卫星影像、气候模型和生物多样性记录等。数据采用云优化格式,确保高效访问:
•
COG(云优化 GeoTIFF):
分块存储的栅格格式,支持 HTTP 范围请求,适用于 Sentinel-2 和 Landsat 等影像数据。
•
Zarr:
分片多维数组,适合时间序列数据,如 ECMWF ERA5 气候再分析。
•
Parquet/GeoParquet:
列式存储格式,用于表格数据(如 GBIF 生物多样性记录)或矢量数据(如 Open Buildings)。
数据遵循STAC(时空资产目录)标准,以JSON格式组织元数据。每个STAC Item代表一个独立资产,例如:
{ "id" : "S2A_MSIL2A_20250101T123456" ,
"bbox" : [ -55 , -15 , -50 , -10 ] , "properties" : { "datetime" : "2025-01-01T12:34:56Z" , "eo:cloud_cover" : 10 } , "assets" : { "B04" : { "href" : "https://.../B04.tif" , "type" : "image/tiff" } } }
Collection则聚合相关Item(如所有 Sentinel-2 L2A 数据),由Azure Cosmos DB索引支持快速查询。
数据汇聚流程包括:
•
采集:
从数据提供者(如 USGS、ESA)获取原始数据。
•
预处理:
通过Azure Data Factory进行投影、切片和格式转换等预处理。
•
存储:
以云优化格式写入Blob Storage,资产URL附带SAS令牌(24小时有效)。
2. STAC API:数据访问接口
STAC API是Planetary Computer的动态查询接口,部署在Azure App Service上,使用FastAPI实现,地址为:
https://planetarycomputer.microsoft.com/api/stac/v1
。它将静态 STAC 目录转化为可编程服务,支持以下主要端点:
•
集合 (/collections):
列出数据集,如sentinel-2-l2a、landsat-c2-l2。
•
搜索 (/search):
支持时空和属性过滤,接受 GET 或 POST 请求。
搜索示例:
查询2025年亚马逊地区云覆盖低于20%的Sentinel-2数据:
from pystac_client import Client client = Client. open ( "https://planetarycomputer.microsoft.com/api/stac/v1" ) search = client.search( collections=[ "sentinel-2-l2a" ], bbox=[- 55 , - 15 , - 50 , - 10 ], datetime= "2025-01-01/2025-02-23" , query={ "eo:cloud_cover" : { "lt" : 20 }} ) items = list (search.items())
返回GeoJSON FeatureCollection,包含匹配的STAC Items。
3. 云计算分析环境
在2024年6月之前,Planetary Computer Hub提供基于JupyterHub的计算环境,运行在Azure Kubernetes Service (AKS) 上,使用Standard_D4s_v5虚拟机(4 vCPU,16 GB RAM),预装 pystac-client、dask和xarray等工具。JupyterHub停止服务后,用户需要自行配置计算资源,例如:
• Azure Machine Learning:支持 GPU 加速的模型训练。
• Dask 集群:通过 dask_cloudprovider 在 Azure VM Scale Sets 上部署:
from dask_cloudprovider.azure import AzureVMCluster cluster = AzureVMCluster(vm_size= "Standard_D4s_v5" , n_workers= 4 )
性能优化:
•
分块:
COG 和 Zarr 数据预分片(如 256x256 像素),减少 I/O 开销。
•
协同定位:
存储和计算在同一Azure区域(如East US),延迟低于10ms。
•
并行处理:
Dask 调度任务至多核或多节点。
4. 平台使用示例
以下示例展示如何使用Planetary Computer计算亚马逊地区的归一化植被指数(NDVI):
from pystac_client import Client client = Client. open ( "https://planetarycomputer.microsoft.com/api/stac/v1" ) search = client.search( collections=[ "sentinel-2-l2a" ], bbox=[- 55 , - 15 , - 50 , - 10 ], datetime= "2025-01-01/2025-02-23" , query={ "eo:cloud_cover"