Mismatch between AREAINT and AREAQUAD around (0,0).
2 次查看(过去 30 天)
显示 更早的评论
Dear all,
E_earth = referenceEllipsoid( 'earth' ) ;
lat = [-1, 1] + 0 ; % +0 is placeholder for easy manual shift.
lon = [-1, 1] + 0 ;
areaquad( min(lat), min(lon), max(lat), max(lon), E_earth )
areaint( [min(lat), min(lat), max(lat), max(lat), min(lat), NaN], ...
[max(lon), min(lon), min(lon), max(lon), max(lon), NaN], E_earth )
This outputs:
ans =
4.9234e+10
ans =
7.7333e+10
Their ratio is close to pi/2, and the output of AREAQUAD matches what I get with ArcGIS for example.
Thanks!
Cedric
1 个评论
Marcus Adkins
2022-4-1
Comparing the results of a 0.02x0.02 (lat/lon) area against STK's computations, you get agreement to 5 significant digits until you hit +/- 1 deg latitude. In that range the Matlab areaInt function is off by as much as 50%
采纳的回答
Amy Haskins
2016-1-29
The doc for areaint hints that the accuracy of the function improves with denser sampling. In your you example, you only have the corner points of the quadrangle in the polygon passed to areaint. The function outlinegeoquad can be used to get a more densely sampled boundary of the quadrangle. Using this function, I get answers which are increasing close to that returned by areaquad.
>> E_earth = referenceEllipsoid( 'earth' ) ;
>> [latq,lonq] = outlinegeoquad(lat,lon,0.1,0.1);
>> areaint( latq, lonq, E_earth )
ans =
4.9304e+10
>> [latq,lonq] = outlinegeoquad(lat,lon,0.01,0.01);
>> areaint( latq, lonq, E_earth )
ans =
4.9235e+10
更多回答(0 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!