【发布时间】:2018-04-05 07:41:46
【问题描述】:
所以,我有一个方法可以返回由其点定义的形状区域(以 CCW 或 CW 顺序给出,这并不重要)。我用一些形状对其进行了测试,它似乎可以正常工作。
问题是,我想将此方法与 GPS 坐标一起使用,并且我想以 m² 或 km² 为单位返回结果,但这绝对不会发生。事实上,我什至不知道当我在那种坐标下使用这种方法时,结果是哪个单位。
所以问题是,如何将我得到的结果转换为 m² 或 km² ?我尝试了一些方法,但要么不起作用,要么不准确。
这是我的方法,如果你想检查:
public static double getArea(List<Vector2D> points) {
double firstSum = 0, secondSum = 0;
for (int i = 0 ; i < points.size()-1 ; i++) {
firstSum += points.get(i).x * points.get(i+1).y;
secondSum += points.get(i).y * points.get(i+1).x;
}
firstSum += points.get( points.size()-1 ).x * points.get(0).y;
secondSum += points.get( points.size()-1 ).y * points.get(0).x;
return Math.abs((firstSum-secondSum)/2);
}
(Vector2D 是我用于点的类,x 为纬度,y 为经度)
【问题讨论】:
-
@AndyTurner 你确定它是重复的吗? “重复”大约是google-maps。
-
如果您想要以 m² 或 km² 为单位的结果,您首先必须将您的 GPS 坐标(可能是 lon/lat)转换为某个公制坐标参考系统。
-
哦,你是对的,对不起。我会删除这个问题。顺便谢谢!
-
我觉得这个问题还可以。
-
还是重复的吗?