2010-07-28 75 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公里)的缩放级别。