複数のGeoTIFF
ファイル(*.tif
)に格納されているラスタ時系列を1つのNetCDF
ファイルに変換したいのですが、データはuint16
です。複数のGeoTIFF画像のラスタ時系列をNetCDFに変換する
私はおそらく使用したnetCDFする各画像を変換するgdal_translate
を使用することができます。
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
とdask
でこれを行うことはできますか?
これは素晴らしい作品 - そして今、私はhttp://xarray.pydata.org/en/stable/generated/xarray.open_rasterio.htmlでopen_rasterioのドキュメントを読んでいることを私はチャンク引数を提供することを理解しデータをdask配列にロードします。 –
うれしいことはあなたのために働いた。このようなものはおそらくここで良いレシピになるでしょう:http://xarray.pydata.org/en/stable/auto_gallery/index.html – jhamman