将 WSG84 gps 坐标转换为平面上的 x y 笛卡尔坐标

convert WSG84 gps coordinate to x y cartesian coordinate on a plane

我正在开发一个可以跟踪运动的 android 应用程序。我的问题是我需要将 gps 坐标转换为平面 二维坐标

我现在得到的坐标是WSG84格式的。我需要这些坐标,因为我需要计算点和线之间的距离,以便了解我是否离预定义路径太远。我工作的区域相对于整个地球来说并不大,所以我认为不关心 z 轴是可以的。

我没有地图,所以我只需要在后台计算这些坐标。谢谢!

这个:

I need to compute the distance between a point and a line in order to understand if I'm getting too far from a pre-defined path

似乎是你提出的关键问题。这就是我要回答的。

从严格意义上讲,从球坐标转换为欧氏坐标是不可能的,这就是为什么人们发明了 UTM 系统等。为您的目的使用 UTM 的问题是给定的 lat/lon 可能位于不同的区域,因此 (x,y) 对不会有效关联。

假设你有三个点 A、B 和 P,其中 A 和 B 定义你的线的起点和终点,而 P 是你想知道的点,那么我最好的建议是:

  • 计算P到B的大圆距离(d)
  • 计算 P 到 B 的方位 (theta)
  • 计算从 A 到 B 的方位角(alpha)

如果这些点实际上彼此非常接近那么你正在工作的space是局部欧几里得,所以从A到B的线的距离是:

d sin(alpha - theta)

在 Java 中有许多关于 WGS84 大圆距离和方位角计算的在线参考资料。例如

http://openmap.bbn.com/svn/openmap/trunk/src/openmap/com/bbn/openmap/proj/GreatCircle.java

...只是其中之一。