我经常下载 (geo) tiff 文件,将它们保存到临时磁盘空间,然后使用rasterio读入数据以获得numpy.ndarray
我可以分析的数据。
例如,将这个 url 用于 NAIP 图像:
import os
from requests import get
from rasterio import open as rasopen
req = get(url, verify=False, stream=True)
if req.status_code != 200:
raise ValueError('Bad response from NAIP API request.')
temp = os.path.join(os.getcwd(), 'temp', 'tile.tif')
with open(temp, 'wb') as f:
f.write(req.content)
with rasopen(temp, 'r') as src:
array = src.read()
profile = src.profile
os.remove(temp)
对于其他(netcdf)地理网格数据,我可能会使用xarray从该 url 获取数据以获取 Gridmet 数据:
from xarray import open_dataset
xray = open_dataset(url)
variable = 'pr' # precipitation
subset = xray.loc[dict(lat=slice(north, south),
lon=slice(west,east))]
arr = subset.variable.values
所以得到一个 xarray 对象作为一个流工作并且很容易进入一个ndarray
,但我只知道这个在 netcdf 数据集上工作。有没有办法将 tif 数据“流式传输”到ndarray
对象?理想情况下,可以这样做
with rasopen(url, 'r') as src:
array = src.read()
asrasterio
返回一个不错的元数据对象以及ndarray
,尽管我还没有让它与 url 资源一起使用。谢谢。