見出し画像

QGIS ベクタデータの座標・長さ・方位・面積を取得

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

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

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

で、フィールドを2つ作って,名前をそれぞれLength、Azimuthとして追加。まず長さから。

編集する列(Length)を選択して、以下の式を入力。
$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で出せる。

ちなみに「ε」をクリックすると、こんなんが出て来る。ここで関数の一覧とその説明、プレビューができる。上のように直接式を入力しても良いけど、複雑な計算や初めての場合はこっちを使う。


長さで色分けした例。 こんな風に、データの統計を取りたい時や分類して視覚化したい時に便利です。


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

この記事が気に入ったらサポートをしてみませんか?