USGS 3DEP Seamless DEMs
# 概述
美国范围内的数字高程数据,水平分辨率从 1 米到 60 米不等。
来自国家地图的USGS 3D 高程计划 (3DEP) 数据集是由 USGS 制作和分发的主要高程数据产品。3DEP 程序以各种空间分辨率为美国本土、阿拉斯加、夏威夷和岛屿领土提供栅格高程数据。3DEP 程序生成的无缝 DEM 图层会经常更新,以集成新可用的、改进的高程源数据。
DEM 图层在美国本土以 1 角秒(约 30 米)的网格间距在全国范围内可用,在美国部分地区以约 1、3 和 9 米的网格间距提供。大多数阿拉斯加无缝 DEM 数据的分辨率约为 60 米,其中仅存在分辨率较低的源数据。
# STAC 集合
https://planetarycomputer.microsoft.com/api/stac/v1/collections/3dep-seamless
# 提供者
USGS (opens new window)(processor, producer, licensor)
Microsoft (opens new window)(host)
# License
Public Domain (opens new window)
# 空间范围
Launch in Explorer (opens new window)
# 时间范围
01/01/1925 – 05/06/2020
# GSD
10 m,30 m
# 项目级资产
数据集项目包含以下资产。
STAC Key | Roles | Type |
---|---|---|
data | Data | GeoTIFF (COG) |
gpkg | Metadata | Geopackage+sqlite3 |
metadata | Metadata | XML |
thumbnail | Thumbnail | JPEG image |
# 使用
# 环境设置
此笔记本可使用或不使用 Planetary Computer 订阅密钥,但您将获得使用密钥访问数据的更多权限。行星计算机集线器已预先配置为使用您的密钥。
import planetary_computer
# Set the environment variable PC_SDK_SUBSCRIPTION_KEY, or set it here.
# The Hub sets PC_SDK_SUBSCRIPTION_KEY automatically.
# planetary_computer.settings.set_subscription_key("add your key here")
# 打开并探索 3dep-无缝DEM数据集
3DEP是来自 (opens new window)USGS (opens new window)的国家高程数据集程序。它使用多种测量方法(包括现代激光雷达机载测量)为整个美国提供高程数据。行星计算机以两种分辨率(1/3 角秒和 1 角秒)托管无缝高程数字高程模型 (DEM)。
from pystac_client import Client
catalog = Client.open("https://planetarycomputer.microsoft.com/api/stac/v1")
threedep = catalog.get_child(id="3dep-seamless")
3DEP 无缝数据集覆盖了整个美国,从边界可以看出:
threedep.extent.spatial.to_dict()
输出:
{'bbox': [[-174.001666666983,
-15.00166666667,
164.0016666666,
84.00166666666]]}
# 绘制高程数据
让我们来看看北加州的沙斯塔山。我们定义一个点,然后在该点周围找到一个边界框。这个例子的查询区域非常小,我们只会获取一个瓦片——你可以增加缓冲区大小,这个例子应该处理多个瓦片(尽管绘图会花费更长的时间)。
latitude = 41.41505315463394
longitude = -122.19468933831948
buffer = 0.1
bbox = [longitude - buffer, latitude - buffer, longitude + buffer, latitude + buffer]
search = catalog.search(collections="3dep-seamless", bbox=bbox)
items = list(search.get_items())
print(f"{len(items)} items found")
输出:
2 items found
行星计算机同时托管 1 弧秒(标称 30m 像素大小)和 1/3 弧秒(标称 10m 像素大小)分辨率的 3DEP 数据。让我们通过对 STAC 项目中的地面样本距离 (GSD) 进行过滤,将这两个集合分成它们自己的列表。
我们还将在下载之前对资产进行签名,这可以在有或没有行星计算机订阅密钥的情况下完成。
items_low_res = [
planetary_computer.sign(item).to_dict()
for item in items
if item.properties["gsd"] == 30
]
items_high_res = [
planetary_computer.sign(item).to_dict()
for item in items
if item.properties["gsd"] == 10
]
DEM 是相对简单的栅格数据集——它们只有一个波段(高程)。让我们比较我们感兴趣区域的高分辨率和低分辨率图像的可视化。我们将使用 将项目读入 DatayArray stackstac
,注意将较大的资产裁剪到我们感兴趣的区域。
import stackstac
low_res_data = stackstac.stack(items_low_res, bounds=bbox).squeeze().compute()
high_res_data = stackstac.stack(items_high_res, bounds=bbox).squeeze().compute()
import matplotlib.pyplot as plt
plt.style.use("seaborn-talk")
fig, axes = plt.subplots(ncols=2, figsize=(24, 12), sharex=True, sharey=True)
low_res_data.plot.imshow(ax=axes[0], add_colorbar=False)
high_res_data.plot.imshow(ax=axes[1], add_colorbar=False)
axes[0].set(title="1 arc-second")
axes[1].set(title=r"$\frac{1}{3}$ arc-second");