Geometry.getarea()和Polygon.getarea()有哪些单位?

Jer*_*emy 3 java jts

因此,我正在处理一组图像,其中角落是地图上的长度.我正在创建多边形以检查给定图像是否重叠.我需要知道与Polygon和几何体的.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的

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

我正在使用的cordinates样本是+30.658739 -086.345670,+ 30.659997 -086.34002,+ 30.664041 -086.345082,+ 30.662783 -086.342750我正在寻找这4点之间的区域.
我从.getArea()返回的值是1.31039680000139E-5这些点是真正接近所以我想它的米是1310.4米

Cod*_*ind 9

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

并非所有学位都是平等的

纬度的度数都具有相同的空间分辨率.每个纬度对应于大约111km的距离.经度不是这种情况.在赤道,经度对应于111km的距离,但在极点,1度经度具有ZERO km的距离.换句话说,如果你有一个Lat/Lon盒子,左上角为10:0,右下角为0:10,它的表面积将大于Lat/Lon盒子,左上角为20:0和更低 - 正好在10:10,即使这些盒子的两侧都是10度长.

第二个问题是地球的曲率.由于地球的曲率,地球表面100km×100km的面积将比10000km ^ 2的表面积更大,因为从地球表面上的一个点到另一个点的最短距离实际上不是直线,而是弧形.

第三个也经常被忽视但不太重要的问题是地球实际上不是一个球体,而是一个椭圆体.它往往在赤道附近膨胀,这打破了我们的假设,即地球上任何地方的纬度与其他任何地方的纬度相同.然而,这个问题并没有像前两个那样在我们的表面积估计中引入那么多的误差.

换句话说,球形(或实际上,椭圆形)表面区域不是一个容易解决的问题,至少不像映射到笛卡尔坐标并使用它们来找到表面区域的欧几里德测量那么容易.如果您正在处理的表面区域跨越非常小的角度距离,您可以侥幸逃脱它,但是您的纬度/经度盒越大,您获得的失真就越大.

可能解决方案

这仅适用于图像为矩形且图像的顶部/底部从左到右具有恒定纬度的情况.这仍然会引入更大范围的纬度误差,因为它仍然忽略了地球的曲率,但是比假设在笛卡尔坐标系中创建所有度数相等做得更好.如果是这种情况,那么您的图像的交点将受以下坐标的限制:

topLat:*leftLon*,bottomLat:*rightLon*

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

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

你从这里获得的面积将以平方公里为单位进行测量,但我再次重申,如果你的图像与平行纬度矩形对齐并且不会跨越很大的角距离,那么这只能很好地工作.