向Resonant GeoData实例发送网络请求。
项目描述
rgd_client - Resonant GeoDataClient
Python包rgd_client是针对Resonant GeoData API的强类型、易于使用和可扩展的Python客户端。
安装
要安装核心客户端
pip install rgd-client
要使用其他核心模块或插件,安装相应的客户端包。例如,影像客户端插件可以通过以下方式安装:
pip install rgd-imagery-client
通过插件添加的所有功能都在由该插件定义的名称下命名空间。对于影像客户端插件,这是imagery
,因此可以通过client.imagery.*
访问此插件的所有功能。以下是一些示例。
使用方法
搜索并显示结果
import json
import matplotlib.pyplot as plt
import numpy as np
from rgd_client import create_rgd_client
def plot_geojson(gjs, *args, **kwargs):
points = np.array(gjs['coordinates'])
if points.ndim == 3:
points = points[0]
if points.ndim == 1:
points = points.reshape((1, points.size, ))
return plt.plot(points[:,0], points[:,1], *args, **kwargs)
client = create_rgd_client(username='username', password='password')
bbox = {
"type":"Polygon",
"coordinates":[
[
[-105.45091240368326,39.626245373878696],
[-105.45091240368326,39.929904289147274],
[-104.88775649170178,39.929904289147274],
[-104.88775649170178,39.626245373878696],
[-105.45091240368326,39.626245373878696]
]
]
}
q = client.rgd.search(query=json.dumps(bbox), predicate='intersects')
for s in q:
print(s['subentry_name'])
plot_geojson(bbox, 'k--', label='Search Region')
for s in q:
plot_geojson(s['footprint'], label=s['subentry_name'])
plt.legend()
plt.title(f'Count: {len(q)}')
检查栅格
预览栅格缩略图
import imageio
from io import BytesIO
raster = client.imagery.get_raster(q[0])
plot_geojson(bbox, 'k--')
plot_geojson(raster['outline'], 'r')
load_image = lambda imbytes: imageio.imread(BytesIO(imbytes))
count = len(raster['parent_raster']['image_set']['images'])
for i in range(count):
thumb_bytes = client.imagery.download_raster_thumbnail(q[0], band=i)
thumb = load_image(thumb_bytes)
plt.subplot(1, count, i+1)
plt.imshow(thumb)
plt.tight_layout()
plt.show()
下载栅格
下载整个栅格图像集
import rasterio
from rasterio.plot import show
paths = client.imagery.download_raster(q[0])
rasters = [rasterio.open(im) for im in paths.images]
for i, src in enumerate(rasters):
plt.subplot(1, len(rasters), i+1)
ax = plt.gca()
show(src, ax=ax)
plt.tight_layout()
plt.show()
STAC Item支持
Python客户端有一个专门针对栅格数据的搜索端点,该端点将搜索结果中的每个记录作为STAC Item返回。
q = client.imagery.search_raster_stac(query=json.dumps(bbox), predicate='intersects')
print(q[0]) # view result as STAC Item
# Download using the search result
paths = client.imagery.download_raster(q[0])
print(paths)
我们还可以上传STAC Item格式的新的数据。在这里,我们简单地返回相同的STAC Item JSON,实际上不会做任何事情,因为RGD已经识别出这些文件已经以栅格的形式存在。
client.imagery.create_raster_stac(q[0])
请注意,STAC Item中的资产必须已经上传到具有s3://
或https://
URL的云存储提供者。此外,图像必须在每个资产上具有data
标签。例如。
{
... # other STAC Item fields
'assets': {
'image-15030': {
'href': 'http://storage.googleapis.com/gcp-public-data-sentinel-2/tiles/17/S/MS/S2A_MSIL1C_20210302T161201_N0209_R140_T17SMS_20210302T200521.SAFE/GRANULE/L1C_T17SMS_A029738_20210302T161751/IMG_DATA/T17SMS_20210302T161201_B01.jp2',
'title': 'GRANULE/L1C_T17SMS_A029738_20210302T161751/IMG_DATA/T17SMS_20210302T161201_B01.jp2',
'eo:bands': [{'name': 'B1'}],
'roles': ['data'],
},
'image-15041': {
'href': 'http://storage.googleapis.com/gcp-public-data-sentinel-2/tiles/17/S/MS/S2A_MSIL1C_20210302T161201_N0209_R140_T17SMS_20210302T200521.SAFE/GRANULE/L1C_T17SMS_A029738_20210302T161751/IMG_DATA/T17SMS_20210302T161201_B02.jp2',
'title': 'GRANULE/L1C_T17SMS_A029738_20210302T161751/IMG_DATA/T17SMS_20210302T161201_B02.jp2',
'eo:bands': [{'name': 'B1'}],
'roles': ['data'],
},
... # ancillary files can lack a role but we like to see `metadata` used.
'ancillary-30687': {
'href': 'http://storage.googleapis.com/gcp-public-data-sentinel-2/tiles/17/S/MS/S2A_MSIL1C_20210302T161201_N0209_R140_T17SMS_20210302T200521.SAFE/GRANULE/L1C_T17SMS_A029738_20210302T161751/QI_DATA/MSK_TECQUA_B03.gml',
'title': 'GRANULE/L1C_T17SMS_A029738_20210302T161751/QI_DATA/MSK_TECQUA_B03.gml',
'roles': ['metadata'],
},
}
}
插件开发
有关如何为 rgd_client
开发插件的说明,请参阅 PLUGINS.md
。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解有关 安装软件包 的更多信息。
源分布
rgd-client-0.3.11.tar.gz (14.3 kB 查看哈希值)
构建分布
rgd_client-0.3.11-py3-none-any.whl (14.2 kB 查看哈希值)
关闭
rgd-client-0.3.11.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a7421d642e59a93e99db5a5d7dd0d86e78758948790c8bc1cc0853cae3b90752 |
|
MD5 | 67cb15edd3762e3ca64126891897af23 |
|
BLAKE2b-256 | 7c0ba8c071361bb5d2cd7630c8cb9bb59563318e4a9643b2bad04f6de675c25b |
关闭
rgd_client-0.3.11-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 7178e65b7710142a21cbdc641bd56ee8152545dbb0bb5ea3bd85cd819a9a0ed8 |
|
MD5 | 00c963900de2e7d849051890a532f0d3 |
|
BLAKE2b-256 | a2ce65e4f45b8a5b99ad1539e6b6f202141925352b317edd3fad520924f30986 |