我有一个存储在多个GeoTIFF
文件 ( *.tif
) 中的栅格时间序列,我想将其转换为单个NetCDF
文件。数据是uint16
。
我可能会使用gdal_translate
以下方法将每个图像转换为 netcdf:
gdal_translate -of netcdf -co FORMAT=NC4 20150520_0164.tif foo.nc
然后用一些脚本NCO
从文件名中提取日期然后连接,但我想知道我是否可以在 Python 中更有效地使用xarray
它,它是新的rasterio
后端。
我可以轻松读取文件:
import glob
import xarray as xr
f = glob.glob('*.tif')
da = xr.open_rasterio(f[0])
da
返回
<xarray.DataArray (band: 1, y: 5490, x: 5490)>
[30140100 values with dtype=uint16]
Coordinates:
* band (band) int64 1
* y (y) float64 5e+05 5e+05 5e+05 5e+05 5e+05 4.999e+05 4.999e+05 ...
* x (x) float64 8e+05 8e+05 8e+05 8e+05 8.001e+05 8.001e+05 ...
Attributes:
crs: +init=epsg:32620
我可以将其中之一写入 NetCDF:
ds.to_netcdf('foo.nc')
但理想情况下,我可以使用类似xr.open_mfdataset
的东西,写入时间值(从文件名中提取),然后将整个聚合写入netCDF
. 并dask
处理了核外内存问题。:-)
可以用xarray
and完成这样的事情dask
吗?