gpt4 book ai didi

java - Geometry.getarea() 和 Polygon.getarea() 的单位是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:56:56 43 4
gpt4 key购买 nike

所以我正在处理一组图像,其中角在 map 上是经纬度。我正在创建多边形来检查给定图像是否重叠。我需要知道与多边形和几何的 .getarea() 方法关联的单位。我正在使用以下对象来创建我的多边形和几何图形

http://tsusiatsoftware.net/jts/javadoc/com/vividsolutions/jts/geom/Geometry.html#getArea() http://www.vividsolutions.com/jts/javadoc/com/vividsolutions/jts/geom/Polygon.html

当使用上述两个对象时,我得到了一个数字,但是我没有发现与数字相关联的单位是什么的指示。那么我们说的是米、公里还是英里?

我正在使用的坐标样本是+30.658739 -086.345670, +30.659997 -086.34002, +30.664041 -086.345082, +30.662783 -086.342750 我正在寻找这 4 个点之间的区域。
我从 .getArea() 返回的值是 1.31039680000139E-5 这些点实际上很接近,所以我认为它以米为单位,即 1310.4 米

最佳答案

如果不知道底层坐标系是什么,这很难说清楚。在快速浏览了您链接到的 Javadoc API 之后,我怀疑您的 geometry 包可能正在处理原始笛卡尔坐标,并且不知道所使用的测量单位。如果是这种情况,你就处在一个非常湿滑的斜坡上。问题是:

并非所有学位生而平等

纬度的度数都具有相同的空间分辨率。每个纬度对应大约 111 公里的距离。经度不是这种情况。在赤道,经度对应 111 公里的距离,但在两极,1 经度的距离为零公里。换句话说,如果你有一个左上角在 10:0 和右下角在 0:10 的纬度/经度框,它的表面积将比左上角在 20:0 和下部的纬度/经度框有更大的表面积- 就在 10 点 10 分,即使这些盒子的边长都是 10 度。

第二个问题是地球的曲率。由于地球的曲率,地球表面100km乘100km的正方形的表面积将超过10000km^2,因为地球表面一点到另一点的最短距离实际上不是直线,而是弧线。

第三个经常被忽视但不太重要的问题是,地球实际上并不是一个球体,而是一个椭球体。它倾向于在赤道附近凸起,这打破了我们的假设,即地球上任何地方的一个纬度与其他任何地方的另一个纬度的距离相同。然而,这个问题并没有像前两个问题那样给我们的表面积估计带来那么多的误差。

换句话说,球形(或者实际上,椭球)表面积不是一个容易解决的问题,至少不像映射到笛卡尔坐标并使用它们来找到欧氏测量那么容易表面积。如果您要处理的表面积跨度非常小,您可以摆脱它,但您的纬度/经度框越大,您获得的失真就越大。

可能的解决方案

这仅适用于您的图像是矩形且图像的顶部/底部从左到右具有恒定纬度的情况。这仍然会在更宽的纬度范围内引入更多的误差,因为它仍然忽略了地球的曲率,但比假设在笛卡尔坐标系中所有度数都相等要好。如果是这种情况,则图像的交点将以下列坐标为界:

topLat:*leftLon*, bottomLat:*rightLon*

计算平均纬度,然后用它来计算该平均纬度处每度经度的距离,kmPerLon。我们现在有以下等式:

区域 = ((topLat - bottomLat) * 111km) * (rightLon - leftLon ) * kmPerLon)

您从中获得的面积将以平方公里为单位进行测量,但我想再次重申,只有当您的图像与平行纬度成直角对齐并且不跨越太大的角距离时,这才会相当有效。

关于java - Geometry.getarea() 和 Polygon.getarea() 的单位是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17599474/

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