【发布时间】:2023-03-16 03:50:01
【问题描述】:
我正在使用我在这篇文章中找到的解决方案: Polygon area calculation using Latitude and Longitude generated from Cartesian space and a world file
出了点问题,因为我得到的值不是真实的。例如,我们知道一个足球场应该有大约 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;
}
这里有什么问题?有什么帮助吗?
【问题讨论】:
-
你的4分值是多少?
标签: c# google-maps xamarin geolocation