[OSGeoJapan-discuss] gdalで画像結合が遅くて困っています。

斎藤 直正 nsaito @ msk-web.co.jp
2013年 8月 12日 (月) 04:14:46 PDT


かやま 様

 下記、ご連絡ありがとうございます。

 ご指摘の通り、tiffに変換して使う必要はないですね。
 前のメールを下記終わってから気が付き、gdal2tiles.pyのソースを見なが 
ら、もう一丁
速くならないか?と、思案をして・・・

 最初は、zoomレベルを0-16まで作っちゃえ!と思って、

 gdal2tiles.py -p mercator -z 0-16 merge.vrt

  とかやっていたのですが、止めました。

 取りあえず、背景図目的だからある程度粗くても良いだろうと思い

 gdal2tils.py -r near -p mercarot -z 0 merge.vrt &
 gdal2tils.py -r near -p mercarot -z 1 merge.vrt &
 gdal2tils.py -r near -p mercarot -z 2 merge.vrt &
 gdal2tils.py -r near -p mercarot -z 3 merge.vrt &
 gdal2tils.py -r near -p mercarot -z 4 merge.vrt &
 gdal2tils.py -r near -p mercarot -z 5 merge.vrt &
 gdal2tils.py -r near -p mercarot -z 6 merge.vrt &
 gdal2tils.py -r near -p mercarot -z 7 merge.vrt &
 gdal2tils.py -r near -p mercarot -z 8 merge.vrt

  と打ち込んで、なんちゃってパラレル・・・
 gdal2tiles.pyを逆順に処理するスクリプトを別で作って走らせる
方法なんかも記載されていましたが、失敗して後で泣いてるより、
より確実な方法?ということで、こいつをやってみています。
 zoomレベル5くらいまでは、そこそこのペースで返って来ていましたが、
6からは重くなり出して、8では1時間くらいかな?

 CPU負荷をモニタリングしながら、100%でベタになっているコアを眺めて、
それでもディスクのアクセスがガリガリやっているので、ディスクアクセスが
ボトルネックですね。

 処理の最中にRAM DISKを検討して、容量64GBでは足りない・・・と断念。
 というより、この為だけに64GBものRAMを突っ込む気にはなれなかったw
 でも、SSDが欲しくなってきました(#^.^#)

 最後になりましたが、ご教示頂きありがとうございました。

以上

(2013/08/12 13:50), Yoichi Kayama wrote:
> 斉藤様
>
> かやまと申します
>
> 画像のタイル化ですが、gdal2tiles.py  とかでやるならば入力の元画像にvrt 
> が利用できます
> からvrtをtiffに変更する必要は無いと思います。
>
>
>
> 2013年8月12日 12:20 斎藤 直正 <nsaito @ msk-web.co.jp 
> <mailto:nsaito @ msk-web.co.jp>>:
>
>     山手 様
>
>      ご連絡が遅くなってしまって済みせん。
>      ご教示頂きありがとうございます。
>
>         ・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
>     <mailto: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
>                 <mailto:wata909 @ gmail.com>>:
>
>                     斎藤さま
>
>                     岩崎と申します。
>
>                     私のやった経験の範囲なのですが、GDAL_CACHEMAX で
>                     使用するメモリ量を多くすると、かな り早くなりました。
>
>                     2013年8月8日 22:25 斎藤 直正
>                     <nsaito @ msk-web.co.jp <mailto: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
>                         <mailto:E-mail%3Ansaito @ msk-web.co.jp>
>                          URL:http://www.msk-web.co.jp
>                         /////////////////////////////////////////////////////////
>
>                         _______________________________________________
>                         OSGeoJapan-discuss mailing list
>                         OSGeoJapan-discuss @ lists.osgeo.org
>                         <mailto: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
>             <mailto:E-mail%3Ansaito @ msk-web.co.jp>
>              URL:http://www.msk-web.co.jp
>             /////////////////////////////////////////////////////////
>
>             _______________________________________________
>             OSGeoJapan-discuss mailing list
>             OSGeoJapan-discuss @ lists.osgeo.org
>             <mailto: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 <mailto:E-mail%3Ansaito @ msk-web.co.jp>
>      URL:http://www.msk-web.co.jp
>     /////////////////////////////////////////////////////////
>
>     _______________________________________________
>     OSGeoJapan-discuss mailing list
>     OSGeoJapan-discuss @ lists.osgeo.org
>     <mailto: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
/////////////////////////////////////////////////////////

-------------- next part --------------
HTML$B$NE:IU%U%!%$%k$rJ]4I$7$^$7$?(B...
URL: <http://lists.osgeo.org/pipermail/osgeojapan-discuss/attachments/20130812/cae89ff3/attachment-0001.html>


More information about the OSGeoJapan-discuss mailing list