大きなラスターECWファイルをクリップする最良の方法は?


9

大きなECW(詳細は以下)をクリップしようとしていますが、ラスターファイルが大きすぎて完全に処理できません。

以下のECWの詳細

ドライバー:ECW / ERDAS圧縮ウェーブレット(SDK 5.0)

ファイルサイズ:50 GBサイズは450000、565081ピクセルサイズ:0.15 0.15 COLORSPACE = RGB COMPRESSION_RATE_TARGET = 9 VERSION = 2バンド数:4

クリップしたい領域は、元のファイルの約1/5です。

ここに私が成功せずに試した方法があります:

  1. Arcgisを使用してecwをtiff /他の形式に保存しました...(すぐにあきらめました)

  2. Qgisとそのクリッパーツールを使用しました...ファイルの作成は約40%で止まっています。

  3. Qgis以外のオプションでOSGeo4Wのgdal_translateを使用しました。(Qgisを使用しないで一部のメモリを解放する可能性があるという考えがトリックになるだろうと考えてみました)

  4. 画像をバラバラに切り、必要なものを取得すると考えてgdal_retileを使用しました。コマンド「gdal_retile -ps 10000 10000 -of ecw -tileIndex tile.shp -targetDir input.ecwこれはさらに速くクラッシュしました」

誰かがアイデアを持っていますか?

参考までに、16GBのRAMを搭載したi5-3470 3.2GhzでWindows 7 64ビットを実行します。

回答:


5

あなたが試すことができる他のアイデア:

  1. -srcwinスイッチを使用したgdal_translate
  2. -cutlineおよび-crop_to_cutlineおよび-wmスイッチを指定したgdalwarp。最後の1つは、キャッシュ用のメモリを指定し、QGISでクリッパーを使用していた問題を解決する可能性があります(これは基本的に同じ機能であるため)
  3. QGISラスター計算機は、必要な領域の範囲を設定します(クリッパーよりも簡単です)。
  4. SAGA-> Clip grid with polygon-だれが知っているか、よりメモリ効率が良いかもしれません。
  5. PythonとNumpy / SciPyを使用してソリューションをコーディングし、ラスタのサブセットのみをメモリに読み込んで保存します。

ジオメトリチェックと変換がないため、非常に単純なトリミングを(ラスターカルキュレーターまたはgdal_translateの-srcwinスイッチを使用して)実行すると、ポリゴンを使用したトリミングよりもメモリの消費量が少ないと思います。オプション5では、必要なものだけを読み取るため、メモリ使用量を最小限に抑える必要があります。「ハウツー」が必要な場合は、このチュートリアルをご覧ください(ブロックごとの読み取りと書き込みに少しを適応させます)。


答えてくれてありがとう!SAGAを試してみて、うまくいかない場合は、Numpyを試してみます。

5

関心領域の座標がわかっている場合は、gdalのツールgdal_translateを使用して直接カットできます。

gdal_translate -projwin [ulx uly lrx lry] infile outfile  

そうでない場合は、次の-srswinようなフラグを使用します。

gdal_translate -srcwin [xoff yoff xsize ysize] infile outfile。

別のオプションは、gdalbuildvrtを使用して、初期データセットを指す(数キロバイトの)「仮想」ラスターを構築することです

gdalbuildvrt -te [xmin ymin xmax ymax] infile outfile.vrt

残念ながら、gdalbuildvrtを使用するには、地理参照ファイルが必要です。

クリップした後、見やすいようにピラミッドを作成することを忘れないでください。次のコマンドは、DEFLATE(可逆)アルゴリズムで圧縮された外部ピラミッドを構築します。

gdaladdo -ro --config COMPRESS_OVERVIEW DEFLATE outfile 2 4 8 16

最後のステップとして、統計を計算して、特定の商用プログラムでの愚かな問題を回避することもできます。

gdalinfo -stats outfile

答えのニックネームをありがとう。仮想ラスターを構築し、<code> gdaladdo -ro --config COMPRESS_OVERVIEW DEFLATE outfile 2 4 8 16 </ code>を実行しました。なぜ次のエラーメッセージが表示されるのかよくわかりません。エラー1:見つからないためTIFFファイルを作成できませんDEFLATEのコーデック。概要の構築に失敗しました。
ブルー

バグがqgis-bug:8782osge4w-bug:382にあるかどうかを確認してください。それまでは、圧縮アルゴリズムなしで概要を作成するか、別の概要を選択してください
ニックス2013年

私はそれを2つのステップで動かしていたように見えます:gdaladdo -ro input.vrt 2 4 8 16それからgdaladdo -ro --config COMPRESS_OVERVIEW DEFLATE input.vrt 2 4 8 16。私の目標はECWになることなのでgdal_translate -of ECW input.vrt output.ecw 、次のエラーを試してみました:0ERROR 6: GDALDriver::Create() ... no create method implemented for this format.
Blue

@blue ECWは独自の形式であり、特別な処理が必要です。gdalがでECWに書き込めるかどうかを最初に確認してくださいgdalinfo --formats。リストにECWが表示されない場合は、次の手順を試してください。faunalia.pt
node

0

ストレートの「クリップ」を使用することで問題gdalwarpは解決します(これは古い質問です。18か月のIRLはインターネット時代の地質時代のようなものです)。

私は70Gbのアンテナ(ECW、10cm / pxで94000x81000ピクセル)を使用しており、GDALはそれを使用してシェープファイルで任意にクリップできます

gdalwarp -cutline [clipfile] -crop_to_cutline [infile] [outfile]

Windowsコマンドラインで。(このソリューションでは、対象となるターゲット領域のシェープファイルを作成する必要があることを理解していますが、それはGISにとって既知の最大の課題ではありません)。

郊外サイズの半分のチャンクを抽出するには、約0.4秒かかります。ファイルを4分の1にスライスするには4秒かかります。私のマシンの仕様は劇的に異なっていません(i7-4770 @ 3.4GHz、16GB RAM、Win7-64 Ultimate)。


gdalwarpはすでに言及されています。パフォーマンスと特定のサンプル画像サイズに関する情報は歓迎すべき追加ですが、これは実際にはgis.stackexchange.com/a/74450/108へのコメントである必要があります(そして、コード形式を使用してコマンドラインで編集を提案することも歓迎します。 ;読みやすい)
マットウィルキー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.