2022年12月

2022年12月28日

巨大GeoTiffの処理の続き(オルソタイルの結合)

分割が出来るのなら、逆の結合も出来るだろう と思いついて やってみた。
574個の1マス4000ピクセルのオルソタイルでテスト・・・
 結果、出来た!
Marge1



最初にオルソタイルのあるフォルダーを指示して、全てのファイルの地理空間情報を解析する。
取得出来た情報を基にgdalwarpを動かす。
Marge2





全体で101,159x148,081ピクセルのオルソタイルを、幅5,000ピクセルの単一のGeoTiffに結合できた。
ちなみに約25分かかった。
Marge3













 まだ、大きなサイズへの結合はテストしてないけど、もっと高精細で結合できれば、QGISはエクスポートサイズ30,000Pixの壁があったので、こっちの方が重宝するし使いやすい。

 ここで備忘録
ファイル名やフォルダ名に日本語が含まれる場合、
gdalwarpに渡すoptfileは、UTF-8で作らないとGDALは中身が読めない。
 つまりoptfileは常にUTF-8で作ること。





ho_cad at 16:09|PermalinkComments(0)

2022年12月25日

遂に完成!GeoTiffSpliter32(巨大画像対応版)

思いついてから1週間ちょっとで、できた!
 我ながら これ 来年度からの本業にめっちゃ 使える。

最終テストでTile_sampleMGR

44753 x  75494ピクセルのGeoTiff

3階層のピラミッドで

処理に20分かかったけど

無事エクスポート完了!

HO_CADpaoでも スムースに
 描画してくれる。


エクスポート設定!
Export


 最後の最後に、

上図のようなTifだと、ピラミッドの中間層に全部が真っ白な画像をエクスポートしてしまい、これがディスク上で1.3GBも使うので、真っ白か真っ黒(エンプティ)の画像を自動的に検知して削除するようにした。

 画像がエンプティかどうかを検知するのは、結局Scanlineを使って画像に使われている色数をカウントして、カウントが1なら(白か黒しかない)ならエンプティとした。

 で、やってみたらこれが意外と面倒で、考え方は簡単なんじゃけど、アプローチの仕方によって処理時間がめちゃめちゃ変わる。 

 最初に、バイナリ―アルゴリズムの総当たり方式(シーケンシャル)で色数をカウントしてみたら約50万色使っている3000x3000ピクセルの画像で17秒もかかり「これは実用 無理か―」になり、

 次は、メモリーの専有量は無視して、最初から24ビットカラー分の「この色を使っているかどうか」のリストを確保しておいて、インデックス方式(ランダム)でやってみたら、0.1秒くらいで検出できるようになった。

 これならアプリで使い物になので、⑫が実装できた。

これで 安らかに年が越せそう・・・
 あー できた・・・ 浮世の月にかかる雲無し・・・






 

ho_cad at 15:36|PermalinkComments(0)

2022年12月24日

巨大GeoTiffの処理(ほぼ完成)

ほぼほぼ出来た!

 終盤、ピラミッド化するために解像度を落として切り取るのに、解像度の縮小率は実数なのに対して、画像のピクセル値(画像上での座標)は整数値なので、演算誤差が出ている事に気付き、全体的に座標丸めのタイミングを見直した。
 結果的にうまくいって良かった・・・

ただ、ピラミッドの中層はどうしても1ピクセル未満の誤差は残る。
まあ、実際は最下層でトレースとかするので、この誤差には目をつむることにした。

マウスをコロコロして拡大して行くときに、どんな感じで解像度が切り替われば ええ感じで見えるか? とりあえずは直線的に切り替えるようにした。
 二次曲線みたいな方が ええ感じ の気もするが、実際にしばらく実用してみて考えることにした。

 自分は何か作るときに、最初にカレンダーの裏紙にザックリとしたフローとか、考え方とか実際のシュミレーションとかを殴り書きして整理します。
Fllo







HO_CADを作り始めた頃からカレンダーの裏紙を使っていて、解法とかの殴り書き 捨てられずに昔のカレンダーがたまっていますが・・・
 カレンダーの紙 捨ててませんか? 重宝しますよ。

ho_cad at 02:30|PermalinkComments(0)

2022年12月21日

巨大GeoTiffの処理(オルソタイル化)

 コアな部分をGeoTiffSpliterの32ビット版に移植できた。
GeoTiffSpliter32_1





見た目は64ビット版と同じじゃけど、巨大なTiffも分割できる。

32ビット版なのに64ビット版よりも、はるかに大きな画像が処理できる。
 不思議な感じがする。 GDALのおかげ・・・

GeoTiffSpliter32_2







エクスポートもうまくいった。


テストに時間がかかるので、まだ本当に巨大な画像でテストしてないけど、いけるはず。

後はワールドファイルの書き出しとかトリミングとか こまごま仕上げていくのみ。
あー後、GDALに送るオプション文字列、ユニコードにせんといけんのか確認していかないと。
どうしたってフォルダ名とかに日本語が入ってくるから、これには対応しないと…
 巨大Tiffの処理、「自分には無理!」と一旦はあきらめていたけど 何とかかんとか 出来るもんじゃねー と感慨ひとしお・・・

ho_cad at 01:04|PermalinkComments(0)

2022年12月19日

巨大GeoTiffの処理(備忘録の続き3)

32ビット版アプリでのプロトタイプ完成!
OpenBigGeoTiff1










44753x75494のGeoTiff
 GeoTagも取れてレンダリングもOK。
ただ、やっぱり メッチャ時間が掛かる。
ハードディスクからの読み込みで3~4分かかる。

 読み込み中はウィンドウ内のコントロールを全て無効
にしておかないといけないので、そうしたけど、
 作った本人でさえ「フリーズしたかー」になるので、
い一応コンソールの文字列の変異からプログレスバーに
進行状況を反映するようにしてみた。
 結果 まあ無いよりはまし 程度にはなった。

次はこのやり方を、本来やりたかったGeoTiffSpliterに移植する作業。

 でもまあ
「高価なソフトや機器でなくても同等の事ができるようにする」
 これをモチベーションにもうちょといろいろ頑張ってみよう!

 

ho_cad at 23:52|PermalinkComments(0)