gdal_proximityを使用してフィーチャまでの距離を計算する方法は?


28

私はgdal_proximityを使用して、米国(48州下)の最も近い主要な川までの距離を見つけています。NHD +ネットワークのフローラインをConus Albers(epsg:5070)に投影し、ストリームの順序が5を超える選択された川、ラスタ化された川を255、燃えない川を0としてラスタライズしました。これで十分です。 50km以内の場所で最も近い川へ。入力ファイルは大陸規模で30mの解像度であるため非常に大きくなりますが、変換は単純なgdal_proximityコマンドである必要があります。

gdal_proximity.bat -values 255 -distunits GEO -maxdist 50000 -nodata -999 infile.tif outfile.tif -co COMPRESS=DEFLATE -co BIGTIFF=YES -co TILED=YES

これはほとんど機能しているように見えますが、出力に奇妙な幾何学模様が生成されています(画像を参照)。出力に存在するデータは正しく処理されています。なぜそんなに多くの出力が欠落しているのか、誰でも提案できますか?

川の近く

編集:これがオプションのパラメーターのいずれかによって引き起こされているかどうかをテストするために、この構成でgdal_proximityを再度実行しました。

gdal_proximity.bat H:\data\tmp\NHDplus_network_flowline_SO6plus.tif H:/data/tmp/NHDplus_network_flowline_SO6plus_proximity.tif -values 255 -maxdist 50000 -of GTiff

本質的に同じ結果が得られました:

河川に近接、オプションのパラメーターなし

私の唯一の考えは、それがラスターのサイズに関係しているかもしれないということです(最大100 GB非圧縮。私が知る限り、BigTiffのサイズに制限はありませんが、gdalができることには制限があるかもしれません効果的に分析しますか?


1
tiled = YESをオフにするとどうなりますか?また、GEOからPIXELに変更しても機能しますか?(出力は適切ではないかもしれませんが、問題を絞り込む可能性があります)
スティーブンケイ

提案をありがとう-元の質問への返信を追加しました。
Rロードス

infile.tifの解像度は?
-shahryar

2
GDALを使用してバッチ(行)でデータを読み取って、問題がデータ自体なのか、QGISが視覚化できないのかを確認できますか?この問題を見つけるための最初のステップは、空間範囲をサンプルAOIに還元することです。
RutgerH

回答:


3

おそらくRAMが使い果たされ、OSがページングファイルにダンプするときに、どこかでメモリ制限に達していると思われます。プロセス中にシステムリソースを監視します。結果が曲線状のスワスで発生する理由はわかりませんが、すべてのデータを同じ座標系に投影(保存)していることを確認してください。

このアルゴリズムを支援するために、数値データ型を見てみましょう。ラスタライズされたストリームネットワークに必要なのはバイナリ値のみであるため、Byteラスタデータタイプを使用してリソースを節約できます。ストリームに1、バックグラウンドに0の値を書き込みます。

gdal_rasterize -l streams -burn 1 -tr 50 50 -a_nodata 0 -te -2339101 311625 2227004 3134200 -ot Byte -of GTiff streams.shp streams.tif

次に、関心のある近接度は正で、50,000m以下です。適切なデータ型は、符号なし16ビット整数UInt16です。さらに、「データなし」を最大65535に設定すると、ストリームセルに0の値を保持できます。

必要に応じて、8ビットの符号なし整数にステップダウンしてUInt8も、約200mの近接精度を維持できます。

gdal_proximity.bat -srcband 1 -distunits GEO -values 1 -maxdist 50000 -nodata 65535 -ot UInt16 -of GTiff streams.tif proximity.tif

* 50mのセルサイズを使用したことに注意してください。gdal_proximityは最大20GBのRAMを消費し、マシン上で最大5分かかりました。RAMに制限がある場合は、他の人が述べたように、入力ラスターを管理可能なサイズに分割します。

gdal_proximityの結果

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.