2

ポリゴンを表す緯度/経度の座標ペアの配列があります。そのポリゴン内の総面積を決定しようとしています。Rubyでそれを行うにはどうすればよいですか?

ポリゴンの配列の例を次に示します。

[[37.7663613767094, -122.452969210084], [37.7674219449606, -122.444718340349], [37.7701838510542, -122.445330289514], [37.7709974013834, -122.439159589248], [37.7700761930893, -122.438861402472], [37.7703501163684, -122.436868738421], [37.7712650571321, -122.437078116573], [37.7736056746515, -122.437533130227], [37.7714671036087, -122.453964210266], [37.7663613767094, -122.452969210084]]
4

5 に答える 5

3

言語に関しては、おそらくそれほど重要ではありません。ポリゴンの面積を計算するために、ここで言及されている式を利用できます。

http://mathworld.wolfram.com/PolygonArea.html

ポイントが (x1, y1) (x2, y2) .. (xn, yn) であり、それらが小さな領域を囲んでいると仮定します。

Area = 0.5 * (x1 * y2 - x2 * y1 + x2 * y3 - x3 * y2 ..... + xn * y1 - x1 * yn)

: これは、角度座標を含むより複雑な方法を使用して面積を計算する必要がある、より大きな面積では機能しません。ただし、これは、平面であると想定できる小さな領域で機能します。

編集:

平方マイルで面積を取得するには、次のようにします。そこから、必要な単位に変換します。

areaInSqMiles = Area * (60 * 60 * 1.15 * 1.15)
于 2011-02-08T19:17:35.137 に答える
3

言語に依存しないソリューション:

与えられた: 多角形は常に、重ならない n-2 個の三角形で構成できます (n = ポイントまたは辺の数)。1 つの三角形 = 3 辺のポリゴン = 1 つの三角形。1 つの正方形 = 4 辺の多角形 = 2 つの三角形。など 吐き気 QED

したがって、三角形を「切り取る」ことで多角形を縮小することができ、総面積はこれらの三角形の面積の合計になります。紙とはさみで試してみてください。プロセスを視覚化してからフォローするのが最善です。

ポリゴン パスで任意の 3 つの連続するポイントを取得し、これらのポイントで三角形を作成する場合、考えられる 3 つのシナリオのうちの 1 つだけになります。

  1. 結果の三角形は完全に元のポリゴンの内側にあります
  2. 結果の三角形は完全に元のポリゴンの外側にあります
  3. 結果の三角形は元のポリゴンに部分的に含まれています

最初のオプション (完全に含まれる) に該当するケースのみに関心があります。

これらのいずれかを見つけるたびに、それを切り取り、その面積を計算し (簡単な説明です。ここでは式を説明しません)、辺が 1 つ少ない新しい多角形を作成します (この三角形を切り取った多角形と同等です)。残りの三角形が 1 つになるまで。

これをプログラムで実装する方法:

ポイントの配列を作成します。ポイント x、x+1、および x+2 から三角形を作成する配列を実行します。各三角形を形状から領域に変換し、多角形から作成された領域と交差させます。結果の交差が元の三角形と同一である場合、その三角形はポリゴンに完全に含まれており、切り取ることができます。配列から x+1 を削除し、x=0 からやり直します。それ以外の場合は、配列内の次の点 x+1 に移動します。

さらに、マッピングとの統合を検討していて、ジオポイントから開始する場合は、ジオポイントからスクリーンポイントに変換する必要があります。これには、地球の形状のモデリングと式を決定する必要があります (地球を球体と考える傾向がありますが、実際には、へこみのある不規則な卵形 (卵形) です。詳細については、wiki で多くのモデルがあります。

于 2011-08-21T14:41:44.620 に答える
2

GEOS (C 地理空間ライブラリ自体が JTS のポート) をラップするこのライブラリを使用できます。 https://github.com/dark-panda/ffi-geos

このライブラリは、座標空間での計算を処理し、近似を処理します。

必要な精度に応じて、最初にデータを適切な投影 (メルカトルではなく) に投影します。次に、あなたの面積を計算します

于 2011-02-28T00:45:13.927 に答える
0

頂点を乗算する方法に関する素晴らしい例があります。本質的にまさにあなたがやりたいことです!!

http://www.wikihow.com/Calculate-the-Area-of-a-Polygon

于 2011-02-08T19:19:56.180 に答える
0

これには、統合 (ポリゴンを緯度帯に分割して統合する方法) などの手法があります。また、平面に投影してその面積を計算することもできます。

于 2011-02-08T19:50:04.793 に答える