【发布时间】:2013-11-13 03:46:27
【问题描述】:
我允许用户绘制一个多边形,我想看看是否有一种方法可以根据 lat/lng 路径计算面积。
以前有人做过吗?如果可能的话,我也想考虑地球的球面面积。
【问题讨论】:
标签: javascript google-maps-api-3
我允许用户绘制一个多边形,我想看看是否有一种方法可以根据 lat/lng 路径计算面积。
以前有人做过吗?如果可能的话,我也想考虑地球的球面面积。
【问题讨论】:
标签: javascript google-maps-api-3
你可以做到(没有曲率)。我曾经遇到过同样的问题,并得出了这个基于几何的公式。
给定一个包含 N 个二维点 P[i]:= (X[i], Y[i]) 的封闭多边形,i 从 1 到 N 且 P[1] = P[N](它是封闭的)然后面积计算如下:
Area = Abs(Sum(Z value of cross product (P[i]-P[1]) X (P[i+1]-P[1])))/2
with i ranging from 2 to N-1
作为伪代码:
Area:= 0
for i:= 2 to N-1 do
Area:= Area + ((X[i]-X[1]) * (Y[i+1]-Y[1]) - (Y[i]-Y[1]) * (X[i+1]-X[1]))
Area:= Abs(Area)/2
此代码适用于 2D 上的非凸多边形、简单多边形或子多边形的凸多边形。
如果点在 3D 中,您将仅使用 X 和 Y(设置 Z:= 0)来获得 3D 多边形在 2D X-Y 平面上的投影面积。
【讨论】:
是的,这实际上只是一道数学题,但我很乐意提供一点帮助。
所以,除非您有一个正多边形可以使用(听起来您没有)并且您需要考虑曲率,否则您将需要求解描述所绘制多边形的参数方程的二重积分在一个球体上。
或者你可以使用这个方法http://www.mathsisfun.com/geometry/area-irregular-polygons.html 并忽略地球的球形性质......
您可能只想使用 google api。 Calculating area of a polygon drawn on google map
【讨论】: