背景
いくつかの解像度で所有しているGeoTiffデータを一度にテキストデータに変換したかったので調べたところ、下記のQAサイトに答えが載っていた(いつも通り、消える前にメモする)。
【出典】Geotiff画像からCSVファイルへの出力 | QGIS初心者質問グループ(Googleグループ)
解法
実行環境
Ubuntu 18.04.1
GDAL 2.2.3, released 2017/11/20
スクリプト
geotiff2xyz.sh
#! /bin/bash
for i in 10 20 30; do
# 緯度経度に変換
gdalwarp -of GTiff -t_srs EPSG:4326 data${i}m_UTM.tiff data${i}m_EPSG4326.tiff
# GeoTiff -> Text
gdal_translate -of XYZ -co COLUMN_SEPARATOR=, data${i}m_EPSG4326.tiff data${i}m_EPSG4326.xyz
# 用いたデータでは Nodata の領域で 3.4028234663852886e+38 が出力されるが、 除外方法が分からないので、下記で除去
cat data${i}m_EPSG4326.xyz | grep -v 3.4028234663852886e+38 > data${i}m_EPSG4326_nd.xyz
done
補足
変換したいデータがUTM座標系であったので、元記事通り緯度経度に変換した後にテキストへ変換した。元記事ではCSVへの変換として (エラーはスペルミス)。Nodataや特定の数値の除外方法は良く分からない。COLUMN_SEPARATOR=,
が用いられているが、自分の使用環境ではWarning 6: driver XYZ does not support creation option COLMUN_SEPARATOR
という警告が出てスペース区切りのXYZが生成された