我正在使用在这篇帖子中找到的解决方案:使用从笛卡尔空间和世界文件生成的经纬度计算多边形面积
这里可能出了什么问题?需要帮助吗?
有些地方出现了问题,因为我得到的值不是真实的。例如,我们知道一个足球场应该有大约5,300.00平方米,对吧?但是计算出来的是5,759,154.21。
这是代码:
private static double CalculatePolygonArea(IList<Position> coordinates)
{
double area = 0;
if (coordinates.Count > 2)
{
for (var i = 0; i < coordinates.Count - 1; i++)
{
Position p1 = coordinates[i];
Position p2 = coordinates[i + 1];
area += (ConvertToRadian(p2.Longitude) - ConvertToRadian(p1.Longitude)) * (2 + Math.Sin(ConvertToRadian(p1.Latitude)) + Math.Sin(ConvertToRadian(p2.Latitude)));
}
area = area * 6378137 * 6378137 / 2;
}
return Math.Abs(area);
}
private static double ConvertToRadian(double input)
{
return input * Math.PI / 180;
}
这里可能出了什么问题?需要帮助吗?