二点間の直線距離の求め方について

2,555 views
Skip to first unread message

take a n

unread,
Aug 24, 2021, 3:19:01 AM8/24/21
to QGIS初心者質問グループ
初めて質問させて頂きます。
あるポリゴンデータから生成した重心と任意の点の直線距離を求めたいです。
「計測」は手動で求める方法だと思うんですが、これ以外で何か方法はありますでしょうか?

もしくは、重心の座標を求める方法はありますか?
回答よろしくおねがいします。

使用しているQGISのバージョンは3.16.7です。

sakuya_izayoi

unread,
Aug 24, 2021, 3:58:44 AM8/24/21
to QGIS初心者質問グループ
初めまして。
長さを求めたいだけなら、「フィールド計算機」を用いて
「$length」で計測ができます。

また、同じようなものですが「length&(geometry)」というのもありますので、最初は混乱するかもしれません。
過去に「ありたさん」が分かりやすい説明をしてくださっているのでリンクを貼っておきます。

2021年8月24日火曜日 16:19:01 UTC+9 ta.an...@gmail.com:
Message has been deleted

sakuya_izayoi

unread,
Aug 24, 2021, 4:00:49 AM8/24/21
to QGIS初心者質問グループ
「length&(geometry)」は誤字で「length($geometry) 」です。

基本的に「$length」で良いとは思います。
2021年8月24日火曜日 16:58:44 UTC+9 sakuya_izayoi:

ありた

unread,
Aug 24, 2021, 7:51:24 AM8/24/21
to QGIS初心者質問グループ
こんにちは

length($geometry) ですが、ジオメトリの長さを求めるもので、ジオメトリタイプが
ラインになっている必要があります。(ラインでないと長さが測れない)
$length についても同様です。


「あるポリゴンデータから生成した重心」と「任意の点」がどのような状態であるかに
よりますが、重心点を格納したレイヤと、それとは別の点レイヤ(ただし地物数は1つ)で
あるとします。

プロセシングツールより「最寄りのハブの距離」を選択し、入力レイヤとして重心点レイヤ、
ハブレイヤとして計測対象の任意の点のレイヤを選択してハブの属性、計測単位を設定し
実行してください。
重心点レイヤをベースとし、ハブレイヤの属性と距離の属性値をもった新しいレイヤが
生成されます。

sakuya_izayoi

unread,
Aug 24, 2021, 8:12:19 AM8/24/21
to QGIS初心者質問グループ

申し訳ありません。ありたさんのおっしゃられる通りです。今回の条件は点と点の距離でしたか。
ありたさん、ありがとうございます。
2021年8月24日火曜日 20:51:24 UTC+9 ありた:

take a n

unread,
Aug 24, 2021, 9:41:52 PM8/24/21
to QGIS初心者質問グループ
皆様、ご回答していただきありがとうございました。
おかげさまで求めたい値を算出することが出来ました。
本当にありがとうございました。

2021年8月24日火曜日 21:12:19 UTC+9 sakuya_izayoi:

ありた

unread,
Sep 12, 2021, 9:29:31 PM9/12/21
to QGIS初心者質問グループ
申し訳ありません。
メールにて追加質問がきておりましたが見逃していました。

> お世話になっております。
> 先日は質問にご回答頂きありがとうございました。
> 追加で質問させて頂きたいです。

> 地物が複数ある場合はどのようにして計測すればよいのでしょうか?
> 地物が今回の場合は一つのレイヤ内に43個有り、『重心』と43個の中で『一番遠い地物』の
> 距離を計測したいです。(地物はいずれも点です)
> このような場合でも計測可能でしょうか?

最遠点取得は全点の距離を「距離行列 (distance matrix)」で計測し、最遠のものを取得する
必要があると思います。

プロセシングツールから「距離行列 (distance matrix)」を選択し、「線形距離行列 (N * k x 3)」形式を
選択して実行します。こうすることにより、すべての点間において距離計算を行います。
(点数 N 個と M 個のレイヤの場合 NM 個の結果が得られる)


次にプロセシングツールの「QGIS 式による抽出」を選択し、下記式に合致する地物のみを抽出し、
最大距離をとる点ペアを探します。
maximum("Distance", group_by:="InputID") = "Distance"


これで、最遠点が取得できると思います。
想像されるとおり、 NM 回の距離計算が必要なので、点数が増えると非常に処理量が増えます。
Reply all
Reply to author
Forward
0 new messages