微软行星云计算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))


相关文章
|
1月前
|
数据采集 JSON Java
揭秘阿里巴巴:如何通过API实时捕获中国市场商品数据
阿里巴巴提供了丰富的API接口,使得第三方开发者可以实时捕获中国市场商品数据。以下是一些关键步骤和要点,帮助你揭秘如何通过阿里巴巴的API实现这一目标:
|
2月前
|
监控 数据挖掘 API
商品评价聚合:利用API从多个来源获取数据的详细指南
在当今电子商务的繁荣发展下,消费者在做出购买决策前越来越依赖商品评价。这些评价不仅反映了产品的实际使用体验,也直接影响着品牌信誉和销售业绩。为了全面了解消费者的声音并优化产品,企业需要从各种销售渠道收集和分析商品评价。本文将详细介绍如何通过API集成不同数据源的商品评价。
|
2月前
|
机器学习/深度学习 搜索推荐 API
商品信息全景图:API接口在聚合商品数据中的应用
在电子商务的世界中,API接口是连接不同服务和数据的桥梁。特别是在商品信息的聚合上,API接口扮演了至关重要的角色,它允许开发者从多个来源收集、整合并展示商品信息,从而为消费者提供全面且一致的购物体验。本文将深入探讨API接口在聚合商品数据中的应用,并通过具体的代码示例来揭示其工作原理。
|
2月前
|
XML 监控 API
跨平台销售策略:通过API同步不同市场的商品数据
在数字化时代,零售商和品牌经常需要在不同的在线市场上展示和销售商品。为了保持竞争力并确保一致的客户体验,商家必须确保其商品信息在所有渠道上保持同步和准确。这种需求催生了跨平台销售策略,其中一个关键组成部分就是利用应用程序编程接口(API)来同步不同市场的商品数据。
|
3月前
|
安全 API 云计算
云计算中使用API的5个坏习惯
云计算中使用API的5个坏习惯
云计算中使用API的5个坏习惯
|
2月前
|
数据采集 数据挖掘 API
主流电商平台数据采集API接口|【Python爬虫+数据分析】采集电商平台数据信息采集
随着电商平台的兴起,越来越多的人开始在网上购物。而对于电商平台来说,商品信息、价格、评论等数据是非常重要的。因此,抓取电商平台的商品信息、价格、评论等数据成为了一项非常有价值的工作。本文将介绍如何使用Python编写爬虫程序,抓取电商平台的商品信息、价格、评论等数据。 当然,如果是电商企业,跨境电商企业,ERP系统搭建,我们经常需要采集的平台多,数据量大,要求数据稳定供应,有并发需求,那就需要通过接入电商API数据采集接口,封装好的数据采集接口更方便稳定高效数据采集。
|
2月前
|
缓存 安全 API
【亿级数据专题】「高并发架构」盘点本年度探索对外服务的百万请求量的API网关设计实现
公司对外开放的OpenAPI-Server服务,作为核心内部系统与外部系统之间的重要通讯枢纽,每天处理数百万次的API调用、亿级别的消息推送以及TB/PB级别的数据同步。经过多年流量的持续增长,该服务体系依然稳固可靠,展现出强大的负载能力。
56 9
【亿级数据专题】「高并发架构」盘点本年度探索对外服务的百万请求量的API网关设计实现
|
1月前
|
JSON Java API
教你如何使用API接口获取数据
随着互联网技术的发展和应用的普及,越来越多的系统和应用提供API接口供其他系统和应用进行数据交互。通过API接口,我们可以获取到各种各样的数据,例如天气预报、股票行情、新闻摘要等等。本文将介绍如何使用API接口获取数据,并附有示例代码。
|
1月前
|
供应链 搜索推荐 BI
深入了解淘宝原数据:获取API接口及其使用场景
在当今数字化的时代,对于电商行业来说,数据具有极大的价值。淘宝作为中国最大的综合电商平台,拥有庞大的商品信息和用户数据。对于开发者和企业来说,淘宝原数据的获取和分析是实现个性化服务和精准营销的基础。本文将介绍如何通过API接口获取淘宝原数据,以及数据的使用场景。
|
1月前
|
数据采集 API 开发者
调用API接口获取小红书笔记详情数据(小红书怎么推广)
小红书平台对于其API的使用有严格的规定和限制,并且并非所有的功能和数据都通过公开API提供。关于获取小红书笔记详情的API,以下是一些建议和指导: