gpt4 book ai didi

java - 在android中测量不规则多边形的面积

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:05:16 25 4
gpt4 key购买 nike

我正在开发一个应用程序,我在 map 上绘制了多边形,我使用的 map 不是谷歌,它的 Mapsforge 开源离线 map 库。我可以通过将地理点转换为像素点轻松地在 map 上绘制多边形。但是在这里我想找到那个不规则的多边形,为此我做了很多尝试,但它让我不成功..我已经尝试使用基本数学计算面积,但在这种情况下它不起作用,因为像素在更改缩放级别时相应地发生变化。这是数学逻辑: Math calculation

 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);

我发现功能停留在服务器端,它从地理点数组获取区域,但在这里我想让它离线。到目前为止我已经尝试过但没有得到任何线索或结果..请帮我解决这个..谢谢

最佳答案

注意:我真的不知道我的回答有多愚蠢。所以请让我知道如果它没有意义,我会删除它。

因为 map 不在Cartesian Coordinate System中,您的计算将不会产生准确的结果。你需要Spherical Trigonometry对于 Spherical Polygon这不是微不足道的。

Calculating area enclosed by arbitrary polygon on Earth's surface 上有很好的讨论.看一看。

但除了所有这些,我还找到了Projection.javamapsforge 中,它有一种方法可以在特定缩放级别从 GeoPoint 找到世界地图上的绝对像素坐标:

Translates the given {@link GeoPoint} to absolute pixel coordinates on the world map.

Point toPoint(GeoPoint in, Point out, byte zoomLevel);

我不是很懂,但我认为它会给你 GeoPoint 在投影 map 上的绝对坐标,这样你就可以使用笛卡尔计算了。

关于java - 在android中测量不规则多边形的面积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16732854/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com