您的位置:首页 > 编程语言 > Go语言

根据经纬度计算多边形的面积(calculcate polygon's area by lon and lat)

2017-08-04 10:23 489 查看
代码如下:

private static double CalculatePolygonArea(CoordinateCollection coordinates)
{
double area = 0;

if (coordinates.Count > 2)
{
var coordlist = coordinates.ToList();
for (var i = 0; i < coordlist.Count - 1; i++)
{
SharpKml.Base.Vector p1 = coordlist[i];
SharpKml.Base.Vector p2 = coordlist[i + 1];
area += ConvertToRadian(p2.Longitude - p1.Longitude) * (2 + Math.Sin(ConvertToRadian(p1.Latitude)) + Math.Sin(ConvertToRadian(p2.Latitude)));
}

area = area * 6378137.0 * 6378137.0 / 2.0;
}

return Math.Abs(area);
}

private static double ConvertToRadian(double input)
{
return input * Math.PI / 180;
}

来源:

Calculate the area of polygon according to the longitude and latitude.

assuming your source is WGS1984, if not then you'll need to adjust the ellipsoid used by the second line.

area = rad(x2 - x1) * (2 + sin(rad(y1)) + sin(rad(y2))) + rad(x3 - x2) * (2 + sin(rad(y2)) + sin(rad(y3))) + rad(x4 - x3) * (2 + sin(rad(y3)) + sin(rad(y4))) + rad(x5 - x4) * (2 + sin(rad(y4)) + sin(rad(y5)))

area = abs(area * 6378137.0 * 6378137.0 / 2.0)
rad() is a function that converts Degrees to Radians (i.e. Degrees * PI / 180).
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: