测量android中不规则多边形的面积
我正在开发一个应用程序,在该应用程序中,我在地图和地图上绘制了多边形,我使用的不是Google,它的Mapsforge开放源代码离线地图库。通过将地理点转换为像素点,可以轻松地在地图上绘制多边形。但是,此处我想发现是不规则的多边形,为此,我做了很多尝试,但它让我不成功..我已经尝试用基本数学计算面积,但它不工作在这种情况下,情况下pixcel是改变accodingly而改变缩放级别。 这里是数学逻辑:数学计算
for(int miAreainc = 0;miAreainc < x.length-1; miAreainc++)
{
sumX += x[miAreainc] * y[miAreainc + 1];
sumY += y[miAreainc] * x[miAreainc + 1];
}
int unit = ((sumX - (sumY)) / 2);
AppLog.showLogE(TAG,"UNIT >> " + unit);
我发现功能停留在从地理位置阵列获取区域的服务器端,但在这里我想让它离线。 我已经尝试过,但没有得到任何线索或结果..请帮我解决这个问题..谢谢
注意 :我真的不知道我的答案是多么愚蠢。 所以请让我知道,如果它没有意义,我会删除它。
由于地图不在笛卡尔坐标系中,因此您的计算结果不会产生准确的结果。 球面三角形需要球面多边形,这不是微不足道的。
在地球表面任意多边形围成的计算区域有一个很好的讨论。 看一看。
但除了所有这些之外,我在mapsforge
中找到了Projection.java
,它有一种方法可以在特定缩放级别从GeoPoint
中查找世界地图上的绝对像素坐标:
将给定的{@link GeoPoint}转换为世界地图上的绝对像素坐标。
Point toPoint(GeoPoint in, Point out, byte zoomLevel);
我并不是很懂行,但我认为它会给你投影地图上GeoPoint
的绝对坐标,所以你可以使用笛卡儿计算。
对于面积计算,您需要将Lat,lon转换为单位米的笛卡尔坐标。 (非像素)研究变换模式
链接地址: http://www.djcxy.com/p/71597.html