我想创建Android应用程序“兴趣点”。我已经阅读了许多不同的教程,但我不明白为什么我需要将GPS坐标转换为ECEF,然后转换为ENU。你能解释一下吗?
谢谢!
最佳答案
地理空间坐标系是一个很大的话题,但是在ECEF和ENU之类的系统之间的主要选择是要描述地球表面的大区域还是仅描述小区域。
当Android通过geolocation API提供LocationListener时,通常会使用纬度/经度/海拔高度进行此操作,这非常适合表示地球表面上的任何点,但它是“极坐标”或“大地坐标”坐标系是绘制2D位置的理想选择。标准techniques允许将该坐标系转换为ECEF,这是另一种适用于整个地球的坐标系,但是是“笛卡尔”坐标,因此可以使用比原始纬度/经度/高度坐标。
以地球为中心的地球固定(ECEF)使用坐标系,其原点位于地球中心,因此地面上的任何点的坐标值通常都在数百万米之内。这对于描述卫星轨道或跨越多个大洲的位置非常有用,但是对于城镇或城市内的兴趣点的2D图而言却不是很方便。
如果要绘制地球表面一小块区域的2D地图,则东西向北坐标系可能更方便。要使用此功能,您需要一个参考位置(例如特定城市的中心),可以在该参考位置上定义本地的东/北/上方向。然后,这些轴提供一组x / y / z轴,其中x和y轴可能会直接转换为2D屏幕坐标。显然,随着关注区域的扩大(例如,超过100公里),地球曲率的影响将变得更加明显,而ENU坐标系将不再有用。有关更多信息,请参见wikipedia。
从ECEF到ENU坐标系的移动可以通过一组简单的矩阵加法和乘法来完成,可以根据地图中心的ECEF位置以及东/北/上方向的单位矢量进行计算。