[OSGeoJapan-discuss] gdalで画像結合が遅くて困っています。
斎藤 直正
nsaito @ msk-web.co.jp
2013年 8月 11日 (日) 20:20:11 PDT
山手 様
ご連絡が遅くなってしまって済みせん。
ご教示頂きありがとうございます。
> ・gdalwarpで -co TILED=YES -co BLOCKXSIZE=512 -co BLOCKYSIZE=512オプションを追加する
この方法も試してみました。(オプションBLOCKSIZEY⇒BLOCKYSIZEに変更)
確かに速くなります。
ただ、もう一声\(^o^)/という感じでしょうか(^^ゞ
もう少し小ぶりなデータセットならば良いかと思いました。
画像の結合だけに着目していたのそう思いましたが、gdalwarp自体を他の用途
に使う分には
極めて有効に使えると思っています。
次に、
> gdalbuildvrt -hidenodata -vrtnodata "0 0 0" ../dest_dir/merge.vrt *.tif
> で仮想的にマージ画像を作成することができます。
> 大きなファイルが扱いづらそうだと思われる場合にどうぞ。
>
> もし効果がありましたらお教えいただけると大変助かります。
-hidenodata -vrtnodate・・・・の効果が今一つ航空写真を使っている為か見
えなかったので、
それらのオプションを外して
gdalbuildvrt ../dest_dir/merge.vrt *.tif
として試してみました。
最初の段階で、大量のファイルで以下のエラーが数百個は出たかな(^^ゞ
Warning 6: gdalbuidvrt dose not support heterogenous projection.
Skipping xxxx.tif
vrtファイルもまともに生成されませんでした。
原因は、元のオルソフォトは投射方法が無秩序にバラバラであったり、登録されて
いなかったり・・・これが原因だと思い。
全てのファイルをシェルスクリプトで変換(元ファイルは、.tifと.tfwで構成
されていたが、
出力結果は.tifへと合成してくれるのでこれも助かりましたw)
gdal_transkate -a_srs epsg:xxxx srcxxx.tif ../geotiff/dstxxxx.tif
その後、上記のgdalbuidvrtを実行したら、あっという間に合成してくれました。
更に、タイル画像を作るのに必要なtifファイルを作りたかったので、以下の
コマンドでtifファイルを生成。
gdal_translate merge.vrt merge.tif
数時間掛かったと思いますが、寝落ちしている間に作ってくれていましたw
問題は、無事画像が生成されているのか?心配でしたので、睡魔と闘い
ながら・・・縮小画像を生成。
gdalwarp -tr 100 100 merge.tif dst_short.tif
激粗の画像が生成され、取りあえず画像生成が上手く行っていることを確認。
後で、入力ファイルをmerge.vrtに変えてやっても出来ることを確認しました。
結論としては、手順は増えますが・・・・
・GDAL_CHASHMAXの値を適当な値にする。(これは必須ですね。)
・大きなファイルを結合する時は、場合によって、gdalbuildvrtで仮想ファイル
を作成
・gdal_translateで実画像化
という手順が最も速く実現出来ました。
小規模だと、そのままgdalwarpでやってもトータル時間はあまり変わらない?かも
知れませんが、ファイル数多かったり、最終的に出来あがる結合後のファイルが
大きくなる様ならば、gdalbuidvrtを使うべきと思いました。
御蔭さまで、無事画像結合が現実的な時間で出来るようになりました。
次は、画像のタイル化に挑戦予定・・・というか、既にヤバそう(^^ゞ
ありがとうございました。
以上
(2013/08/08 23:58), arctic_tern @ mf-atelier.sakura.ne.jp wrote:
> 斎藤様
>
> 山手と申します。
>
> あまり効果がないかもしれませんが、以下の2つも試してみていただけますでしょうか。
>
> ・gdalwarpで -co TILED=YES -co BLOCKXSIZE=512 -co BLOCKSIZEY=512オプションを追加する
>
> TILED TIF形式にすることで、キャッシュされる画像範囲がブロック単位になるはずです。
> ブロックサイズはデフォルトでは256ですが、変更したい場合は上のようにしてください。
>
> ・ワープ画像は個別に作って、マージ画像をVRTにする
>
> gdalbuildvrt -hidenodata -vrtnodata "0 0 0" ../dest_dir/merge.vrt *.tif
> で仮想的にマージ画像を作成することができます。
> 大きなファイルが扱いづらそうだと思われる場合にどうぞ。
>
> もし効果がありましたらお教えいただけると大変助かります。
>
> 以上、よろしくお願い申し上げます。
>
>
>> 岩崎 様
>>
>> 早々のご回答ありがとうございます。
>>
>> これやってたら、1年掛かるやんけー(~_~;)
>> と思っていたので、ありがとうございます。
>>
>> 最悪、メモリディスク作って・・・とか、分割して結合も考えたりはしていた
>> のですが、
>> ブログの内容も拝見させて頂き、十分理解出来ました。
>>
>>> それと、gdalwarpで画像を結合する場合、初めに結合した範囲のデータを作って、その範囲のデータをすべて処理するようにも思います。
>> これも確かにそんな動きですね。
>> なんか、毎度毎度同じような初期化やってるような感じで、無駄じゃないのか
>> なぁ?もっと効率良く出来ないのかな?
>> オプションで逃げれないのかな?とか考えていましたが・・・
>>
>> ありがとうございます。
>> 早速、やってみます。
>>
>> 以上
>>
>>
>>
>> (2013/08/08 23:02), Nobusuke Iwasaki wrote:
>>> すみません、途中で送信してしまいました。
>>>
>>> 以下のブログに解説が書かれています。
>>> http://d.hatena.ne.jp/yellow_73/20110427
>>>
>>> それと、gdalwarpで画像を結合する場合、初めに結合した範囲のデータを作って、その範囲のデータをすべて処理するようにも思います。場合によると、四分割なり、八分割なりの結合ファイルを作成して、それを結合した方がいいかもしれません。
>>> 結合結果が10万✕10万ピクセルであれば、一晩で結合できました。
>>>
>>> 詳しいことは、どなたかフォローいただければと思います。
>>>
>>> 2013年8月8日 22:54 Nobusuke Iwasaki <wata909 @ gmail.com>:
>>>> 斎藤さま
>>>>
>>>> 岩崎と申します。
>>>>
>>>> 私のやった経験の範囲なのですが、GDAL_CACHEMAX で使用するメモリ量を多くすると、かなり早くなりました。
>>>>
>>>> 2013年8月8日 22:25 斎藤 直正 <nsaito @ msk-web.co.jp>:
>>>>> 斎藤と申します。
>>>>> 初めて投稿させて頂きますの、不躾な点があるかと思いますが
>>>>> 宜しくお願いしますm(_)m
>>>>>
>>>>> 現在、700枚程の航空写真をタイル画像にしようと思い、まずは画像合成?結合
>>>>> からということで、Windows 7からgdal_merge.pyを使用してみたところ、ファイ
>>>>> ル数が
>>>>> 多すぎて、コマンドラインからはみ出る様なエラーが発生し上手く利用できませ
>>>>> んでした。
>>>>>
>>>>> そこで、Linux(CentOS 6.4)にgdalをソースからインストールして、
>>>>> gdalwarpを以下のコマンドで実行してみたところ、とてつもなく時間が掛かって
>>>>> しまい困惑しています。(24時間で2枚しか処理できませんでした)
>>>>> gdalは gdal-1.10.0を使用しています。
>>>>>
>>>>> # gdalwarp *.tif ../dest_dir/all.tif -dstnodata -9999 -srcnodata -9999
>>>>> Creating output file that is 214000P x 195000L.
>>>>> Processing input file 09xxxx1.tif.
>>>>> for band 1, destination nodata value has been clamped to 0, the original
>>>>> value being out of range.
>>>>> 0...10...20...30...40...50...60...70...80...90...100 - done.
>>>>> Processing input file 09xxxx2.tif.
>>>>> for band 1, destination nodata value has been clamped to 0, the original
>>>>> value being out of range.
>>>>> 0...10...20...30...40...50...60...70...80...90...100 - done.
>>>>>
>>>>> <以下省略>
>>>>>
>>>>> gdalは以下のconfigureオプションで作成しています。
>>>>> # ./configure --with-perl --with-php --with-python --with-expat
>>>>> --with-expatlib=/usr/lib64 \
>>>>> --with-poppler --with-expatinc=/usr/include --with-libtiff=/usr
>>>>> --with-geotiff=/usr/ \
>>>>> --with-threads
>>>>>
>>>>> # make
>>>>> # make install
>>>>>
>>>>> ちなみに、
>>>>> --with-expatlib=/usr/lib64
>>>>> --with-expatinc=/usr/include
>>>>> については、configure --helpで見ると、
>>>>> --with-expat-lib=/usr/lib64
>>>>> --with-expat-inc=/usr/include
>>>>> であるべきなのですが、--with-expat-libと「expat」と「lib」もしくは
>>>>> 「inc」の間に
>>>>> 「-」を入れるとエラーではじかれるので、間の「-」が無いのが正しそうだと
>>>>> 思っています。
>>>>>
>>>>> その後、pythonのツールを有効にしようと思い、以下のコマンドを実行しています。
>>>>>
>>>>> # cd swig/python/
>>>>> # easy_install GDAL
>>>>> # python setup.py build
>>>>> # python setup.py install
>>>>>
>>>>> 各種必要なライブラリ等は、yumやrpmなどでインストールを施してインストール
>>>>> したつもりです。
>>>>>
>>>>> やり方に問題があるのでしょうか?
>>>>> マシン環境が悪いのか?
>>>>>
>>>>> gdal以外の方法でも構わないので、高速化させる方法があればご教示頂けない
>>>>> でしょうか?
>>>>>
>>>>> ちなみに、ファイル数を70ファイルぐらいに限定し、コマンドを以下の様に
>>>>> 少し変更してみたのですが、それだと、1時間で3ファイルぐらいは処理してく
>>>>> れているようです。
>>>>>
>>>>> # gdalwarp *.tif ../dest_dir/all.tif -dstnodata -9999 -srcnodata -9999
>>>>> -multi
>>>>>
>>>>> -multiを追加しました。思い付きで、並列処理してくれるのかな?と思っていま
>>>>> すが、
>>>>> 違うのかな?速くなった気がほとんどしないような・・・
>>>>>
>>>>> 以上、宜しくお願いします。
>>>>>
>>>>>
>>>>> --
>>>>> /////////////////////////////////////////////////////////
>>>>> 株式会社 エムエスケー
>>>>> 斎藤 直正
>>>>> TEL:0598-51-7471 / FAX:0598-52-4849
>>>>> E-mail:nsaito @ msk-web.co.jp URL:http://www.msk-web.co.jp
>>>>> /////////////////////////////////////////////////////////
>>>>>
>>>>> _______________________________________________
>>>>> OSGeoJapan-discuss mailing list
>>>>> OSGeoJapan-discuss @ lists.osgeo.org
>>>>> http://lists.osgeo.org/mailman/listinfo/osgeojapan-discuss
>>>>
>>>> --
>>>> 岩崎 亘典
>>>
>>
>> --
>> /////////////////////////////////////////////////////////
>> 株式会社 エムエスケー
>> 斎藤 直正
>> TEL:0598-51-7471 / FAX:0598-52-4849
>> E-mail:nsaito @ msk-web.co.jp URL:http://www.msk-web.co.jp
>> /////////////////////////////////////////////////////////
>>
>> _______________________________________________
>> OSGeoJapan-discuss mailing list
>> OSGeoJapan-discuss @ lists.osgeo.org
>> http://lists.osgeo.org/mailman/listinfo/osgeojapan-discuss
> >
--
/////////////////////////////////////////////////////////
株式会社 エムエスケー
斎藤 直正
TEL:0598-51-7471 / FAX:0598-52-4849
E-mail:nsaito @ msk-web.co.jp URL:http://www.msk-web.co.jp
/////////////////////////////////////////////////////////
More information about the OSGeoJapan-discuss
mailing list