将 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
...只是其中之一。
我正在开发一个可以跟踪运动的 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
...只是其中之一。