我試圖找到一種方法來計算在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