我试图找到一种方法来计算在Flex 3网站中使用纬度长坐标的多边形的面积。 Hong007在谷歌地图的Flash组不够冷静,发布以下功能:当多边形的点数为Lat Long时,计算多边形的面积:哪个函数更准确?
private function GetPolygonArea (polygon : Polygon):Number
{
var nVer : int = polygon.getOuterVertexCount();
var sz : Number =0;
var s : Number =0;
var x : Number =0;
var y0 : Number =0;
var y1 : Number =0;
var Maplatlng:LatLng;
if (nVer>=3){
for (var i:int=0; i<nVer; i++){
Maplatlng = polygon.getOuterVertex(i);
x = Maplatlng.lng();
if (i>0){
Maplatlng = polygon.getOuterVertex(i-1);
y0 = Maplatlng.lat();
}
else{
Maplatlng = polygon.getOuterVertex(nVer-1);
y0 = Maplatlng.lat();
};
if (i<(nVer-1)){
Maplatlng = polygon.getOuterVertex(i+1);
y1 = Maplatlng.lat();
}
else{
Maplatlng = polygon.getOuterVertex(0);
y1 = Maplatlng.lat();
};
s = x * (y0-y1);
sz+=s;
};
//경위도시 1도의 m값을 곱한다(대략 면적 환산)
Maplatlng = polygon.getOuterVertex(0);
var Maplatlng1:LatLng = new
com.google.maps.LatLng(Maplatlng.lat()+1, Maplatlng.lng()+1);
var TempDISTANCE:Number =
Maplatlng.distanceFrom(Maplatlng1)/Math.sqrt(2);
return Math.abs((sz/2.0) * Math.pow(TempDISTANCE, 2));
};
return 0.0;
}
我也与面积计算器玩弄于http://www.freemaptools.com/area-calculator.htm。
这些函数产生的结果稍有不同。我试图找出哪一个更准确。看来hong007的函数产生的结果平均稍大于freemaptools的函数。但是,我不知道哪一个更准确。有什么建议?
嗨bshields, 谢谢你的非常详细的答复。现在,我对这个功能如何工作以及它的弱点有了更好的理解。 我的多边形是美国东海岸一个城市的街区。平均而言,多边形的面积从1-3平方公里。所以,希望你列出的问题不会导致很大的不准确。 不幸的是,面积计算器不提供使用的功能所以,我将不得不分别输入每个多边形,这将是一个痛苦。你认为hong007在城市层面的功能是否合理?谢谢! – Laxmidi 2010-07-28 19:13:25
@Laxmidi我只提到的第一件事与多边形的大小有关。更重要的问题是平均两轴之间比例的方法。这将为正方形提供正确的结果,但不规则形状的多边形将具有不正确的区域,最坏的情况是那些非常长方形且沿着一个轴定向的区域。如果你想这样做,我认为你必须将这些点投影到像UTM这样的投影坐标系并计算该空间的面积。 – bshields 2010-07-28 19:59:50