
QGIS ベクタデータの座標・長さ・方位・面積を取得
QGISにはベクタデータの計算機能が付いていて、座標や長さなどの情報を取得することができる。

シームレス地質図の地質断層データを使って実践。長さと方位のフィールドを作って、それぞれ計算してみた。

他の方法もあるけど、属性テーブルのボタンの中から新規フィールドをクリックして、列の名前、タイプ(数値・文字列など)、長さを決める。列の名前はユニークなものでないといけない(他の列との重複はできない)。あと、長いと切られる(多分10バイトまで・日本語だと5文字)。長さはバイト。例えば整数値で長さを4にした場合、5桁の数値は入らない。
で、フィールドを2つ作って,名前をそれぞれLength、Azimuthとして追加。まず長さから。

$length/1000
$lengthが地物の長さを表す。単位はmなので、kmに変換している。全部更新をクリックすると全ての地物の計算結果がセルに入力される。ちなみに長さはちょっと怪しげ。本当はヒュベニの公式とかで出した方が良い。マジで精度が必要なら国土地理院の計算式(https://vldb.gsi.go.jp/sokuchi/surveycalc/surveycalc/algorithm/bl2st/bl2st.htm)とか。

degrees( azimuth( make_point($x_at(0),$y_at(0)),make_point($x_at(-1),$y_at(-1))))
degreesはラジアン→角度の変換。azimuth(始点の座標、終点の座標)で方位を出す。make_pointでXYのセットを作る。$x_at(n)、$y_at(n)で任意の点のX座標あるいはY座標を取り出す。ラインの場合、始点が0で終点が-1となっている。ポリゴンは0から連番。なお、ポリゴンの面積は$areaで出せる。


※元データ:産総研シームレス地質図