2010-07-28 47 views
0

我試圖找到一種方法來計算在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的函數。但是,我不知道哪一個更準確。有什麼建議?

回答

0

這裏實現的方法非常快速和骯髒。它會產生一些可能導致錯誤結果的假設。

首先要知道的是,緯度/長度空間相對於地面上的測量距離是非均勻縮放的。這意味着長度爲1米的矢量在緯度/長度空間中具有不同的長度,具體取決於矢量大致指向東西或南北。此外,緯度/長軸映射到地面單位的差異幅度取決於您在地球上的位置(它們在極點上比赤道上的差異大得多)。

上面的算法做了一個非常快速和骯髒的解決方法,這是基於單位直角三角形的斜邊計算的距離生成一個比例值。這試圖基本上平均地球上這一點的兩個緯度/經度軸的比例。

這有幾個問題。如果多邊形非常大(多個地理單元),則該平均比例值將被關閉,因爲它僅針對0頂點周圍的本地地理單元計算。其次,平均尺度近似值確實非常粗糙,並且如果多邊形在一個維度上變化很大但不是另一個(沿着一個軸向的長方形多邊形),則會顯着分解。這是因爲尺度將作爲兩個軸的尺度的平均值來計算,但是由於頂點的分佈,其中一個軸應該幾乎沒有影響。

我沒有看其他領域的計算器,但我猜如果你看到這個代碼是不太準確的版本差異。

+0

嗨bshields, 謝謝你的非常詳細的答覆。現在,我對這個功能如何工作以及它的弱點有了更好的理解。 我的多邊形是美國東海岸一個城市的街區。平均而言,多邊形的面積從1-3平方公里。所以,希望你列出的問題不會導致很大的不準確。 不幸的是,面積計算器不提供使用的功能所以,我將不得不分別輸入每個多邊形,這將是一個痛苦。你認爲hong007在城市層面的功能是否合理?謝謝! – Laxmidi 2010-07-28 19:13:25

+0

@Laxmidi我只提到的第一件事與多邊形的大小有關。更重要的問題是平均兩軸之間比例的方法。這將爲正方形提供正確的結果,但不規則形狀的多邊形將具有不正確的區域,最壞的情況是那些非常長方形且沿着一個軸定向的區域。如果你想這樣做,我認爲你必須將這些點投影到像UTM這樣的投影座標系並計算該空間的面積。 – bshields 2010-07-28 19:59:50

1

我給這個算法增加了一些字符串。 谷歌地圖實驗,我發現這個號碼:

are = area-(area*0.2187); 

和它的作品對我來說最大(規模= 5米)和最低(500公里)的縮放級別。