16bitグレースケール段彩図を書き出したい

1,267 views
Skip to first unread message

QP

unread,
May 6, 2017, 7:03:14 AM5/6/17
to QGIS初心者質問グループ
QGISなどのGIS系アプリケーションの知識は皆無に等しい初心者です。(3Dグラフィック系の人間です)
このタイトルのためだけに数日の使用経験しかありません。

QGIS 2.18.7
Win 10 64bit OS メモリ16Gb GPU 有 ノート、デスクトップ

基盤地図情報 大阪 生駒山エリア FG-GML-5235-05-DEM5A FG-GML-5235-05-DEM5B
このデータを取り込み、バーチャルラスタの構築でグレイスケールの段彩図表示までたどり着いています。
8bitグレースケールの画像保存でなく、なんとかこの画像を16bitグレースケールとして保存すべく、ググリまくりましたが解決できず、この質問となりました。

レイヤ右クリックの保存でGeotiff保存しても、GINP2.9では表示されたグレイスケール状態とは違っていますし、32bitとは言え最適化するには無理かと思いました。

生駒山の標高が642Mですので、できれば0~1000Ⅿの高さパレットで置き換え、3Dアプリのheightmapとして利用を考えています。
その際、16bitデータであれば、8bit256色で丸められていない近似データになるかと思っています。

ググレばGDALコマンドでできる?みたいな感じなんですが、本当でしょうか?
”gdal213.zip”なるものはDL済ですが、解凍してもどうしていいものか....

もしできるならご教示いただけないでしょうか?

wata909

unread,
May 6, 2017, 7:57:43 AM5/6/17
to QGIS初心者質問グループ
QPさま

GDALのコマンドを使用すると、ではないかと思います。ただ、私はコマンドラインのツールの使い方しか分からないので、そちらでの説明になります。
まず、スタートメニューから、OSGeo4W Shellというのを探して実行して下さい。そうすると、いわゆるコマンドラインでの入力ツールが表示されます。
(以下の図を参照)。このツール上で、gdalの各種コマンドの実行が可能です。


次に、このツール上で、目的とするデータが格納されているフォルダに移動します。

そこで、


 gdal_translate -of PNG -ot UInt16 -scale 80 2600 0 65535 入力ファイル名(たとえば、523505.tif)  (出力ファイル名(たとえば、523505-16bit.png)


とします。各項目は半角スペースで区切って下さい。入力例は、以下の通りです。この例では、二次メッシュ5438(長野)の変換を行っています。


コマンドのうち、


 -scale 80 2600 0 65535 


のところが16bitグレースケールへの変換に関するところで、最初の「80 2600」が入力ファイルの最大値と最小値、あとの「0 65535」が出力ファイルの最大値と最小値になります。入力の最大と最小値は、入力ファイルの標高値を参考に変更して下さい。

ただこれですと、QGIS上で指定した段彩図表示を使用することができないのが難点です。


その他、gdal_translateのコマンドの詳細については、英語になりますが、以下のマニュアルをご参考下さい。

http://www.gdal.org/gdal_translate.html


以上、参考までに。

arai...@gmail.com

unread,
May 6, 2017, 10:50:11 AM5/6/17
to QGIS初心者質問グループ
wata909様

画像付きで素早いお答え、大変ありがとうございます!
見事16bitPNGを取得できました。しかし、もとデータがおかしいのか、山頂付近がかなり切り取られ、フラットな状態でした。Max白状態といいましょうか。
バーチャルラスタの構築後のQGIS画面上でも、フラットな状態になっており、必然な結果かもしれません。

もともと疑問だったのですが、山頂642であるのに、レイヤ上の数値2つがQGISではバーチャルラスタの構築後2.55138と448.08で高さ数値であるなら、448?おかしいと思っていました。
ほかのアプリでは近い数値が見れていたと記憶しているのですが、QGISではレイヤが増えるたびにコロコロ変わるので、何を基準に高さを把握するのか分からないでいます。

もうひと手間パレット調整のような作業が必要なのでしょうか?ほかのアプリではMax値を希望の高さでグレイスケール化でき、QGISではそのような作業をすることがわかりませんでした。

16bit変換前のGeotiffはバーチャルラスタの構築後のレイヤ右クリックのGeotiff保存したファイルを指定しています。

福岡

unread,
May 6, 2017, 11:40:55 AM5/6/17
to QGIS初心者質問グループ

QP 様

横入り失礼します。
DEMの正確な最大値と最小値を把握したいということでよろしいでしょうか?

レイヤパネルでDEMレイヤの上で右クリックしてレイヤのプロパティを呼び出します。


スタイルタブで最大値と最小値を確認できますが、実は上下がカットされています。


次図のように、最小値/最大値のロードを「最大/最小」、精度を「実際の値(低速)」にして「読み込み」ボタンをクリックします。
そうすると正確な最小値と最大値を得ることができると思います。



wata909 様

gdalをコマンドで使用する経験がほとんど無かったので、とても勉強になります。
ありがとうございます。

arai...@gmail.com

unread,
May 7, 2017, 11:17:55 AM5/7/17
to QGIS初心者質問グループ
福岡様

素早いご回答ありがとうございます!
なるほどそういうことなんですね。山頂標高もしっかり確認でき、min maxを「0 1000」を入れることで、上部余白を含めた段彩図を取り出せて、3D確認までできました。

しかし、違う問題が出てきました。取り出した画像とQGISで表示されている画像の縦横比が違います。
そもそも、Geotiffの保存の仕方が違っているのでしょうか?レイヤ右クリックの保存でGeotiff保存したものをGIMPで開いてみると、画像の縦横比が違います。
このGeotiffをQGISで新規書類で開いても元の縦横比とも違います。

まあ、比率計算してPNGを変形すればいいだけのことなんですが、ここまで来てスッキリしません。何か基準みたいな物があるのでしょうか?

ついでにもう一つ、空中写真をレイヤに乗せた場合のその図葉だけとか、タイルで他の図葉込みとか、ずっとスクロールする表示から切り離した表示はできるのでしょうか?
無駄に読みこむ必要は無いし、図葉レベルで空中写真を明確にしたいのです。

何か、教えて君状態で申し訳ありません。

福岡

unread,
May 7, 2017, 8:54:34 PM5/7/17
to QGIS初心者質問グループ

おはようございます。

DEMの縦横比が違うということですが、おそらく元データが緯度経度を基準にして整備されているからだと思います。
5mメッシュが0.2秒、10mメッシュが0.4秒の間隔になっています。

国土地理院の説明
http://www.gsi.go.jp/kiban/faq.html#3-3

私の場合、Geotiffへの変換はエコリスさんが提供しているツールを利用しています。
統合したmarge.tiffというファイルも作ってもらえるし、変換する際に投影系のUTMや平面直角座標を選べば、縦横のセルサイズが同じくなったはずです。
レイヤプロパティのメタデータタブのプロパティで確認できると思います。


エコリスさんの標高DEMデータ変換ツール
http://www.ecoris.co.jp/contents/demtool.html

空中写真の表示ですが、取り込んだ画像毎にレイヤが分かれている状態でしょうか?
もし、レイヤの数が多くないのであれば、レイヤ名の左横にあるチェックボックスをクリックすると表示のオンオフができます。

arai...@gmail.com

unread,
May 8, 2017, 4:51:56 AM5/8/17
to QGIS初心者質問グループ
福岡様

ありがとうございます。

大分前にエコリスさんのツールは利用していましたが、merge.tifの周囲にゴミが作成されるので、3Dをやる人間にはなじめません。修正をしないとだめなんで。
かつ、写真との兼ね合いもルーズになります。なので、やたらめったらGeotiffを作成できそうなアプリをさがしてたのですが、ゴミを確認したのはエコリスさんのツールだけだったと
記憶しています。タイル用?ゴミに何か意味が有るように思いもしますが。

全くの部外者の私には緯度経度を基準にしているかは分からないので画像をUPしてみます。本日、仕事場のマシンにQGISをインストしました。

下はエコリスさんのツールでmerge.tifを取り込んだものです。連休中に自宅でQGISのDEMインポータープラグインでFG-GML-5235-05-DEM5A FG-GML-5235-05-DEM5B、この2つの
ファイルを取り込んだ時の比率と同じです。やはりゴミが確認できます。なぜか、自宅で作成したPNGと同じ比率です。11.4kmと9.3km。


次はDEMインポータープラグインでFG-GML-5235-05-DEM5A FG-GML-5235-05-DEM5B、この2つのファイルを取り込みました。
最初からこれだったら疑問も生じていません。ゴミもなくありがたいですね。
でも、南北の距離が自宅と違う!たしか、自宅14kmと11.2km、本日14kmと9.2km。

さて次は、エコリスさんのツールでマージする前の沢山のGeotiffを取り込んでみました。どういうわけかmerge.tifの比率とは違います!元は同じはずなのに!



上の物をバーチャルラスタの構築してみました。ゴミは無くなりました。


グーグルで該当エリアを図ってみると、11.4kmと9.3km、ということはmerge.tifの比率が正しい?


本日の結果、どんどんスッキリしなくなりました。

空中写真の表示は、web>タイルレイヤプラグイン>タイルレイヤの追加>GSIMaps>写真、で表示しています。結果、ネットより随時取り込んでいると思っています。
数は写真レイヤが1つだけです。必要部分を分割で利用できる操作が有るのでしょうか?

arai...@gmail.com

unread,
May 8, 2017, 5:13:11 AM5/8/17
to QGIS初心者質問グループ
ちなみにエコリスさんのツールでできたmerge.tifをPNGにしたものです。やはり、ゴミ付きです。4mbほどあります。ゴミさえなければ...うれしい。


福岡

unread,
May 8, 2017, 8:27:26 AM5/8/17
to QGIS初心者質問グループ
QP 様

エコリスさんの変換ツールで得たmerge.tiffにゴミがあるということですが、おそらくデータ無しの部分かと思います。
基盤地図情報からダウンロードしたデータは、南北と東西方向に0.2秒または0.4秒毎のメッシュデータです。
これをGeoTiffに変換する際に投影座標系を選ぶと、同じ0.2秒(或いは0.4秒)でも北の方の東西距離は短くなり、どうしてもデータ無しのセルができてしまいます。
そしてmerge前のGeoTiffにゴミが無いということですが、確認してみたところmerge前のGeoTiffの参照空間系はJGD2000の地理座標系(緯度経度)でした。

ここからは3Dについては門外漢なので、的外れだったら申し訳ありません。
前述したような理由から、QPさんがおっしゃられていたゴミは縁にしか発生しません。
素人考えなのですが、縁を切り落としたら駄目なのでしょうか?
ラスタ → 抽出 →クリッパー を使うと、縁を切り落としたGeoTiffを簡単に得ることができます。

空中写真ですが、私の早とちりでした。申し訳ありません。
図葉という言葉から、ワールドファイル付きの空中写真を購入しているのではないかと勝手に思い込んでいました。
タイルレイヤプラグインでは個別のタイル毎に表示・非表示の切り替えはできません。


sakuya_izayoi

unread,
May 8, 2017, 9:49:28 AM5/8/17
to QGIS初心者質問グループ
QP様
横やり失礼いたします。sakuya_izayoiと申します。

福岡さまがおっしゃいますように、基盤地図情報はJGD2000で作られているために、平面系に投影した場合、どうしても変換誤差が出てしまうみたいです。
エコリスさんのソフトを使用するときには座標系を「緯度経度:0」を使用しております。
対処方法として、どうしても空白が出てしまう時はカットすることにより対応しております。

私の場合は3DCGではなく3DCADでの経験なのですが、
緯度経度投影法で作成したgeotiffから等高線を抽出し、等高線をdxfで出力し、3DCADに取り込みロフト機能により立体図を作成しております。

空白部ができないのが理想なのですが、なかなか思ったようにいきませんよね。こちらでも何か思いつきましたら、また投稿させていただきます。

arai...@gmail.com

unread,
May 9, 2017, 4:42:23 AM5/9/17
to QGIS初心者質問グループ
福岡様

お付き合い頂きありがとうございます。

まず、訂正事項として、1つめの画像のところ
誤:なぜか、自宅で作成したPNGと同じ比率です。11.4kmと9.3km。
正:なぜか、自宅で作成したGeotiffと同じ比率です。11.4kmと9.3km。

クリッパー
一見切り取るだけの機能と見たのですが、データが有る部分も一緒に切り取られれば、欠損部分は無駄にされた?
そこに自宅が有る場合、悲しいw

私なりにわかってきたことを整理していこうと思います。

対処方法、これが正しいかどうか分かりません。間違った解釈があればぜひともご指摘ください。

ゴミ(データなし部分)について
ゴミが出る四周の隣接DEMを用意して一緒にマージしてもらう。(エコリスさんの基盤地図情報標高DEM変換ツール)
(QGISに取り込んだところ境界部分がうまく処理されていたので。生駒山の下のエリアだけですが、テストしました。)

縦横比について
エコリスさんの基盤地図情報標高DEM変換ツールで
平面直角座標:2 これで一般的な地図と合わすことができる?
海域の標高:いいえ>9999 ゴミ、河川とか水面が把握しやすい?
結果、CADデータ、空中写真、地図絵柄とリンクしやすいGeotifが得られる?

sakuya_izayoi様

情報ありがとうございます。

土木寄りの方でしょうか?空白部は気持わるいですよねw
そこはなんとかしなきゃならないのが性な業種かと思います。それが分からないように、かつ、破綻してないようになっていればOKですかね。
私に比較的近い見方ができそうで、書いていて気持安心できます。
上記の平面直角座標ではだめなんでしょうか?つぎめが上手く合いそうに思うのですが。

sakuya_izayoi

unread,
May 9, 2017, 9:01:14 AM5/9/17
to QGIS初心者質問グループ
QP様
こちらsakuya_izayoiです。
私は土木建築系ですね。場合によってはフィールドワークもやり、踏査したGPSデータからマップを作成したりもしております。
あとは趣味でCGモデリングするときのステージに使ったりするためにもしてますかね。

公共測量データでも空白部分やエラー値はあるため、そこをうまくつなぐなり補完するなりが腕の見せ所というか、初心者と中級者の分水嶺となる部分だと思います。
完璧なものが作れればそれが最適なのですが、もともとのデータに欠損があればどうしても補間せざるを得ません。おっしゃる通り、破たんしないようにそれっぽくなるように
するのも腕前だと考えております。いわゆる、エンジニアリングジャッジメントというもので、技術者倫理に基づいて行う範囲という事で。といっても、あからさまなデータ操作は論外ですが・・・。

QP様が使われた手は私もたまに行います。言われてから気が付きましたけど、余分にダウンロードしてきて、それをクリッピングして使っていますわ。

私が緯度経度でやっている理由は、基盤地図がJGD2000という緯度経度系だからです。できるだけ、もとの座標系を維持したまま変換した方がtiffを作成した時にずれにくいという経験論みたいなものです。
経験論なので、よく見たら違うじゃないというのはありますが、今のところ、これで不都合ないのでそれでやっております。
あとは客先に納品時にJGD2000と平面直角座標系の二種類要望されるときがあるからです。
そのため、最初に緯度経度系でマップを作っておいて、いらない部分をQGISでクリッピングし、クリッピングしたものをQGISで座標変換して平面直角座標系にして別ファイルとして保存しております。
そうすることで緯度経度系と平面直角座標系で同じ範囲のマップが作れるからという客先対応の理由も少なからずはありますね。

福岡

unread,
May 9, 2017, 9:09:29 AM5/9/17
to QGIS初心者質問グループ
QP 様

ある程度の目処がついたようで何よりです。

地図と合わせやすいとすれば、距離が地図上から読み取ることができる投影系を選択せざるを得ないので、平面直角座標かUTMで良いと思います。
また、縁を切り落とす際に必要な部分が無くなるようであれば、私も隣接部のデータをダウンロードして一緒にマージすると思います。
つまりは、QPさんのお考えと一緒だと思います。

arai...@gmail.com

unread,
May 13, 2017, 3:44:06 AM5/13/17
to QGIS初心者質問グループ
コメント頂いた皆さま、ありがとうございました。

おかげでなんとか整理できました。

16bit画像が出せるようになったことは、今まで検索していた時間を考えるとワープゾーンに入ったかのように、時を超えることができ、大変感謝しております。
また、つまずいたことによって、違う良い機能にも気づき、それをどう使おうか思案中です。うれしい誤算でした。

ただ、写真レイヤなどを乗せるとリドローの遅さが半端なく、エラーのような表示もでたりするのがつらいです。普通の地図のように動いてくれたら、今のところ言うことは有りません。

今後ともよろしくお願いいたします。
Reply all
Reply to author
Forward
0 new messages