微软行星云计算Planetary Computer——从 STAC API 读取数据

简介: 微软行星云计算Planetary Computer——从 STAC API 读取数据

行星计算机使用STAC对我们托管的数据集进行编目。我们提供了一个STAC API端点,可用于按空间和时间搜索我们的数据集。本快速入门将向您展示如何使用我们的 STAC API 和开源库搜索数据。

 

首先,您需要安装pystac-client库。您可以通过 pip 安装它:

> pip install pystac-client

首先,我们将使用 pystac-client 打开我们的 STAC API:

from pystac_client import Client
catalog = Client.open("https://planetarycomputer.microsoft.com/api/stac/v1")

这为我们提供了一个可以抓取或搜索的STAC 目录。目录包含我们索引的每个数据集STAC 集合(这还不是行星计算机托管的数据的整体)。我们在这里列出了可用的集合 ID 和标题:

# 这里获取子目录,然后利用for循环分别打印出来
collections = catalog.get_children()
for collection in collections:
    print(f"{collection.id} - {collection.title}")

集合具有有关它们包含的STAC 项目的信息。例如,在这里我们查看可用于Landsat 8 Collection 2 Level 2数据的波段

#获取Landsat影像
landsat = catalog.get_child("landsat-8-c2-l2")
#遍历所有影像,然后波段这里一般要用“eo:”作为选择波段的前缀
#这里选择我们分别要获取的信息,波段名称,描述,和分辨率
for band in landsat.extra_fields["summaries"]["eo:bands"]:
    name = band["name"]
    description = band["description"]
    common_name = "" if "common_name" not in band else f"({band['common_name']})"
    ground_sample_distance = band["gsd"]
    print(f"{name} {common_name}: {description} ({ground_sample_distance}m resolution)")

我们可以使用 API 来搜索在特定时间与某个区域重叠的图像。这里我们使用了 2020 年 12 月微软主园区周围的一个区域:这里对于python有一个缺点就是我们没法直接在线圈出我们所需要的地方,就像GEE在线的JavaScript中的编辑界面上,这一点多少有点不方便。没法随意选择任意地点的位置。

area_of_interest = {
    "type": "Polygon",
    "coordinates": [
        [
            [-122.27508544921875, 47.54687159892238],
            [-121.96128845214844, 47.54687159892238],
            [-121.96128845214844, 47.745787772920934],
            [-122.27508544921875, 47.745787772920934],
            [-122.27508544921875, 47.54687159892238],
        ]
    ],
}
time_range = "2020-12-01/2020-12-31"
#这里可以看出影像集合的搜索给出的代码是:landsat-8-c2-l2
search = catalog.search(
    collections=["landsat-8-c2-l2"], intersects=area_of_interest, datetime=time_range
)

搜索将 STAC 项作为PySTAC对象返回给我们:

items = list(search.get_items())
for item in items:
    print(f"{item.id}: {item.datetime}")

打印结果:

LC08_L2SP_046027_20201229_02_T2:2020-12-29 18:55:56.738265+00:00

LC08_L2SP_047027_20201220_02_T2:2020-12-20 19:02:09.878796+00:00

LC08_L2SP_046027_20201213_02_T2:2020-12-13 18:56:00.096447+00:00

LC08_L2SP_047027_20201204_02_T1:2020-12-04 19:02:11.194486+00:00

我们可以使用eo扩展程序按云量对项目进行排序。我们将抓取低云度的项目:

selected_item = sorted(items, key=lambda item: item.properties["eo:cloud_cover"])[0]

我们可以使用eo扩展程序按云量对项目进行排序。我们将抓取低云量的影像:

selected_item = sorted(items, key=lambda item: item.properties["eo:cloud_cover"])[0]

我们可以通过以下方式查看我们的项目可用的影像信息

for asset_key, asset in selected_item.assets.items():
    print(f"{asset_key:<25} - {asset.title}")

打印结果

在这里,我们检查thumbnail资产:

import json
thumbnail_asset = selected_item.assets["thumbnail"]
print(json.dumps(thumbnail_asset.to_dict(), indent=2))

{

 的“href”: “https://landsateuwest.blob.core.windows.net/landsat-c2/level-2/standard/oli-tirs/2020/047/027/LC08_L2SP_047027_20201204_20210313_02_T1/LC08_L2SP_047027_20201204_20210313_02_T1_thumb_small.jpeg”,

 “类型” : "image/jpeg",

 "title": "thumbnail"

}

您可以看到缩略图的 URL 包含在资产信息中。但是,我们将无法直接使用 URL:

import requests
#获取链接
requests.get(thumbnail_asset.href)

但是这里无法显示,显示错误

<响应 [404]>

这是因为 Plantary 计算机使用 Azure Blob 存储SAS 令牌来访问我们的数据,这使我们能够在任何地方免费向任何人提供数据,同时对数据集的出口量保持一定的控制。

要获取访问令牌,您可以使用 Planetary Computer's Data Authentication API

您还可以使用行星计算机包生成令牌并签署资产 HREF 以供访问。您可以通过 pip 安装

> pip install planetary-computer


import planetary_computer as pc
signed_href = pc.sign(thumbnail_asset.href)

我们可以使用 PIL 来渲染图像:

from PIL import Image
from urllib.request import urlopen
Image.open(urlopen(signed_href))


相关文章
|
5月前
|
JSON 缓存 算法
如何通过API获取1688商品类目数据:技术实现指南
1688开放平台提供alibaba.category.get接口,支持获取全量商品类目树。RESTful架构,返回JSON数据,含类目ID、名称、层级等信息。需注册账号、创建应用并授权。请求需签名认证,QPS限10次,建议缓存更新周期≥24小时。
487 2
|
5月前
|
JSON 安全 API
亚马逊商品列表API秘籍!轻松获取商品列表数据
亚马逊商品列表API(SP-API)提供标准化接口,支持通过关键词、分类、价格等条件搜索商品,获取ASIN、价格、销量等信息。采用OAuth 2.0认证与AWS签名,保障安全。数据以JSON格式传输,便于开发者批量获取与分析。
|
5月前
|
JSON 监控 API
小红书笔记评论API:一键获取分层评论与用户互动数据
小红书笔记评论API可获取指定笔记的评论详情,包括内容、点赞数、评论者信息等,支持分页与身份认证,返回JSON格式数据,适用于舆情监控、用户行为分析等场景。
|
6月前
|
供应链 监控 安全
1688商品详情API接口实战指南:合规获取数据,驱动B2B业务增长
1688商品详情API(alibaba.product.get)是合规获取B2B商品数据的核心工具,支持全维度信息调用,助力企业实现智能选品、供应链优化与市场洞察,推动数字化转型。
|
5月前
|
数据采集 JSON API
微店API使用指南:高效获取商品列表数据
本文介绍如何使用Python爬虫调用微店item_search接口,根据关键词搜索商品并获取商品列表数据,涵盖请求方式、JSON数据解析、分页参数设置及筛选排序功能,适用于电商数据分析与竞品研究。
|
5月前
|
JSON API 数据格式
淘宝拍立淘按图搜索API系列,json数据返回
淘宝拍立淘按图搜索API系列通过图像识别技术实现商品搜索功能,调用后返回的JSON数据包含商品标题、图片链接、价格、销量、相似度评分等核心字段,支持分页和详细商品信息展示。以下是该API接口返回的JSON数据示例及详细解析:
|
5月前
|
JSON 算法 API
Python采集淘宝商品评论API接口及JSON数据返回全程指南
Python采集淘宝商品评论API接口及JSON数据返回全程指南
|
5月前
|
自然语言处理 算法 数据可视化
看球总刷比分?好奇数据哪来的?你该认识一下「体育API」了
体育API是赛事数据的“幕后搬运工”,实时同步比分、赛程、球员统计等信息,支撑各类应用提供精准推送、深度分析与互动体验,让观赛更智能高效。
497 150
|
5月前
|
JSON API 数据安全/隐私保护
Python采集淘宝拍立淘按图搜索API接口及JSON数据返回全流程指南
通过以上流程,可实现淘宝拍立淘按图搜索的完整调用链路,并获取结构化的JSON商品数据,支撑电商比价、智能推荐等业务场景。
|
6月前
|
JSON 前端开发 API
如何调用体育数据足篮接口API
本文介绍如何调用体育数据API:首先选择可靠服务商并注册获取密钥,接着阅读文档了解基础URL、端点、参数及请求头,然后使用Python等语言发送请求、解析JSON数据,最后将数据应用于Web、App或分析场景,同时注意密钥安全、速率限制与错误处理。
688 152