안녕하세요 빙지도의 다각형 면적을 계산하는 데 문제가 있습니다. 이 코드를 사용하여 면적을 계산합니다.빙지도의 다각형 면적
public static double PolygonArea(LocationCollection points, double resolution)
{
int n = points.Count;
var partialSum = 0.0;
var sum = 0.0;
for (int i = 0; i < n - 1; i++)
{
partialSum = (points[i].Longitude * points[i + 1].Latitude) -
(points[i + 1].Longitude * points[i].Latitude);
sum += partialSum;
}
var area = 0.5 * sum/Math.Pow(resolution, 2);
area = Math.Abs(area);
return area;
}
이것은 내가 m^2을 trasform 어떻게 해결 방법
public static double Resolution(double latitude, double zoomLevel)
{
double groundResolution = Math.Cos(latitude * Math.PI/180) *
2 * Math.PI * EARTH_RADIUS_METERS/(256 * Math.Pow(2, zoomLevel));
return groundResolution;
}
입니까?
EDIT1 : 답변을 시도했지만 확대/축소 수준을 변경하면 해당 영역이 변경된 것으로 나타났습니다.
다른 문제에서 내 문제를 설명하려고합니다. 나는 지역
-(long double)calcArea :(CLLocationCoordinate2D*) pastureCordinates :(long) count {
long double area = 0.0;
long double scale = 0.0;
for (int cnt = 1; cnt < count; cnt++) {
area += (MKMapPointForCoordinate(pastureCordinates[cnt - 1]).x)
* (MKMapPointForCoordinate(pastureCordinates[cnt]).y)
- (MKMapPointForCoordinate(pastureCordinates[cnt]).x)
* (MKMapPointForCoordinate(pastureCordinates[cnt - 1]).y);
}
area += (MKMapPointForCoordinate(pastureCordinates[count - 1]).x)
* (MKMapPointForCoordinate(pastureCordinates[0]).y)
- (MKMapPointForCoordinate(pastureCordinates[0]).x)
* (MKMapPointForCoordinate(pastureCordinates[count - 1]).y);
scale = MKMapPointsPerMeterAtLatitude(pastureCordinates[count -1].latitude);
area = (area/(long double)2)/pow(scale,2);
area = fabsl(area);
return area;
}
내가 사용을 여기에있는 함수를 계산하기 위해이 알고리즘을 사용하는 iOS 앱의 포팅 확인해야합니다 : 규모, 지상 해상도를 계산하는 https://msdn.microsoft.com/en-us/library/bb259689.aspx을하지만 결과가 다릅니다 iOS 솔루션에 비해
이 링크는 도움이 될 수 있습니다. http://stackoverflow.com/a/36090029/3918500 –