なんでこんなものが必要なのかというと….。
複数の図形を地図上に置いた場合、地図の初期位置を決める場合や、
ポリゴンの座標列の向きを判定するのに、この中の面積計算の符号が判定用の指標に使えるからです(^^)。
それに、不思議だけど、探してもVBA関連にはこの手の関数やライブラリがほとんど無いみたい。
で、作ってみました。
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は各点の重みの度合(例:代表点の人口密度などを標準化したもの)
$$\begin{align} X_g = \displaystyle \sum_{ i = 1 }^{ n } X_i \times W_i \times cos(Y_i) / \displaystyle \sum_{ i = 1 }^{ n } W_i \times cos(Y_i) \\ Y_g = \displaystyle \sum_{ i = 1 }^{ n } (Y_i \times W_i) / \displaystyle \sum_{ i = 1 }^{ n } W_i \hspace{ 83pt } \end{align}$$
Leave a Reply