Technical Memo: Generating Elevation Points from Contour Lines Using QGIS's Pseudo-Coordinate GIS Analysis
I have noted down a technique for generating elevation points from contour lines drawn on a plan view of the shell bed on the north slope of the Ariyoshi Kita Shell Mound. This technique utilizes QGIS's pseudo-coordinate GIS analysis function.
有吉北貝塚北斜面貝層の平面図に記入されている等高線から標高点を生成する技術をメモしました。QGISの疑似座標GIS解析機能を利用したものです。
1 有吉北貝塚北斜面貝層平面図のQGISジオリファレンス
有吉北貝塚北斜面貝層平面図(QGISジオリファレンス用メモ記入)
1-1 QGISで使うEPSG
QGISのEPSG6677(日本測地系2011(JGD2011)[平面直角座標系]のⅨ(9)系(東京都 福島県 栃木県 茨城県 埼玉県 千葉県 群馬県 神奈川県)を利用しました。
1-2 座標変換
平面図にはもともとBlender投影用の座標が設定されています。Blender座標体系とQGIS座標体系は異なるので、またQGIS仕様に対応するため、今回次の座標変換等の対応と操作をしました。
・Blender用座標原点(0,0)とQGIS(EPSG6677)原点(0、0)を一致させる。
・Blender用座標X軸の値を正負逆転させてから1000倍して、QGIS座標Y軸に変換する。
・Blender用座標Y軸の値を1000倍して、QGIS座標X軸に変換する。
値を1000倍したのは、Blender用座標値そのままでは値が小さすぎてQGISが動かないためです。
1-3 ジオリファレンス
今回は5座標の値(-2000,0)( 0,0)( 40000,0)( -20000,-20000)( 40000,-20000)でジオリファレンスしました。
有吉北貝塚北斜面貝層平面図のQGISジオリファレンス結果(背景マップは作業と無関係です)
2 等高線トレース
2-1 新規シェープファイル作成
新規シェープファイルレイヤをファイル名とともに、ジオメトリ型:ラインストリング、追加次元:Z値、新規属性名称:elev、新規属性型:倍精度不動小数点型で作成します。
2-2 トレース
編集モードに入り、等高線をトレースします。1本1本についてトレース完了後、ID(通し番号)とelev(標高値)を記入します。
等高線トレース結果(背景マップは作業と無関係です)
3 標高点生成とcsvファイル出力
3-1 標高点生成
等高線レイヤを選択の上、プロセッシングツールボックスから「ジオメトリに沿った等間隔点群」を起動します。
ここでは距離を1000m(間隔)にしました。(平面図上では1m間隔に該当します。)
実行すると標高点が生成します。
生成した標高点(背景マップは作業と無関係です)
3-2 XYZフィールドの生成
生成した標高点には標高はelevフィールドで表現されていますが、XY座標フィールドがありません。そこで、フィールド計算機を起動して、XYZフィールドを作成します。
Xフィールドは式に$Xを、Yフィールドは式に$Yを、Zフィールドは式に"elev"を入力してそれぞれのフィールドを生成します。
XYZフィールドが作成された属性テーブルの様子
3-3 csvファイル出力
XYZフィールドが作成された標高点レイヤをcsvファイルで出力します。
4 標高点からBlender用地形3Dモデル作成
4-1 csvファイルの調整
csvファイルをBlender用座標に戻します。
・Y座標を正負逆転させてから1/1000倍してX座標とする。。
・X座標を1/1000倍してY座標とする。
4-2 Blender用地形3Dモデル作成
今回は等高線から作成した標高点を既存標高点とマージして、それからBlenderPythonで地形3Dモデルを作成しました。
過去には、疑似座標GIS解析でトレースした等高線や標高点からQGIS機能(v.surf.rstツール)で地形3Dモデルを作成したこともあります。
等高線や標高点から地形3Dモデルを作成する方法はさらにいろいろあるので、それぞれを試して、使い勝手の良いものを見つけることにします。





0 件のコメント:
コメントを投稿