如何找到给定坐标的区域?

时间:2014-04-02 10:27:48

标签: javascript jquery leaflet

如何找到给定坐标的区域? 要求:  我在地图上有一个多边形坐标,然后我们想找到以公顷和英亩为单位的多边形面积

坐标为十进制度数区域应为十进制度数 我们可以转换公顷和英亩,好好重播我

坐标是

(10.072642780669105,76.3268655538559),(10.078051232146612,76.32986962795258]),(10.073530110959743,76.33390367031097)

代码

    arr=[ [10.075854059674523, 76.32832467556], 
          [10.079825860518895, 76.33338868618011], 
          [10.076234340596953, 76.33806645870209], 
          [10.07065684212598, 76.33806645870209],
          [10.068924417668397, 76.33175790309906] ]; 
    var sum=0; 
    for(var i=0,l=arr.length-1;i<l;i++){ sum+=(arr[i][0]*arr[i+1][1]-arr[i+1][0]*arr[i][1]); }
 alert('The Area of Ploygon is:'+(sum/2)); 

3 个答案:

答案 0 :(得分:1)

这很复杂,并不完全是数学。 如果你想得到现实世界的结果而不是一些数学理论,你必须注意到地球不是球体 - 在Google中寻找WGS 84。

可以非常快速地实施的算法之一是Montecarlo:

找到多边形的最小边界框(对于可以处理地球平坦表面的小区域)

计算MBB的面积,矩形S = a * b

在矩形内获取N个随机点

找到M =多边形内的点

多边形的曲面是S * M / N

增加N可以提高准确度。

您应该很容易找到解析每个步骤的算法(找到从一个地理点到另一个地理点的距离,检查点x / y是否在图中)

答案 1 :(得分:0)

多边形区域代码与another math site where the problem is explained under 2-D polygons相比有利。

问题是你有平方度。

嗯,对于小片土地,地球可以被认为是平坦的,要将平方度转换为公顷或英亩或平方米,您需要知道学位的长度。

在赤道上,地球上的一个度数是地球周长的1/360,即2 * Pi * Rearth或~40000km。

1度约为40000 km的1/360 =每度约111 km。

1km是1000m。 1平方公里^ 2 = 10 ^ 6平方公尺。但1公顷= 10000平方公尺,所以1平方公里是100公顷。

平方度约为(111 ^ 2 km ^ 2)(100公顷/平方公尺)〜= 1232100公顷

啊,但我作弊,这只能在赤道附近工作。

地球比40000公里左右更胖,当你靠近极点时,经度变得更短。纬度N或S始终是地球从极到极的1/360度,但经度在赤道处最宽,变得更窄cos(latitude)

答案 2 :(得分:0)

理想情况下,您需要一个库来为您进行转换。

这实际上取决于你在世界上的位置以及你想要的精确程度。请记住,土地既不是平坦的,也不一定与下面的球体对齐。

我工作的公司从空中喷洒蕨菜,并制作喷涂发生地点的地图,绘制在军械测量地图上,精确到一米或两米。

在英国,你可能会发现这些有用,它们详细说明了这些转换的复杂性,我甚至不打算在这里总结一下。

http://www.ordnancesurvey.co.uk/business-and-government/help-and-support/navigation-technology/os-net/surveying.html

http://www.ordnancesurvey.co.uk/docs/support/guide-coordinate-systems-great-britain.pdf

看来,军械测量局没有我在他们网站上学到的旧转换文件,但我在这里找到了一份副本。 http://www.fgg.uni-lj.si/~/mkuhar/Zalozba/TM_projection.pdf