VBA(Excel)でポリゴンの重心位置を求めてみます


なんでこんなものが必要なのかというと….。

複数の図形を地図上に置いた場合、地図の初期位置を決める場合や、

ポリゴンの座標列の向きを判定するのに、この中の面積計算式の符号が判定用のパラメータに使えるからです(^^)。

それに、不思議だけど、探してもVBA関連にはこの手の関数やライブラリがほとんど無いみたい。

で、作ってみました。

Excelで使うポリゴン・サークルのデータファイルはこのページで作成します。

ポリゴン・ポリライン

サークル

 


Excelブック

例えばこんな感じ。

ポリゴン・ポリラインのページで以下のような図形を描いて、データをGeoJSONで保存しておきます。

Excelを開いて作成したデータファイルを読み込みます。

 

読込後データをセットして、即重心計算を開始します。

途中でデータ列が右手系(反時計回り)か左手系(時計回り)かを判定。

 

計算終了後、Xg、Ygに重心位置を表示。

Xgが経度、Ygが緯度です。

地図で確認。

青丸の中の十字がこのポリゴンの重心位置です。

 


点群の重心

(X1,Y1),(X2,Y2),(X3,Y3),………………………….,(Xn,Yn)

各点が均等な重みを持つ場合

Xg = (X1 + X2 + X3 + …………………………… + Xn) /n

Yg = (Y1 + Y2 + Y3 + …………………………… + Yn) /n

 

各点の重みが異なる場合

wiは各点の重みの度合(例:代表点の人口密度)

Xg = ∑(i = 1,n) Xi*wi*cos(Yi) / ∑(i = 1,n) wi*cos(Yi)

Yg = ∑ (i = 1,n) (Yi*wi) / ∑ (i = 1,n) wi

 


 

Be the first to comment

Leave a Reply

Your email address will not be published.


*