代码之家  ›  专栏  ›  技术社区  ›  Arshdeep Singh

将纬度转换为(x,y)坐标

  •  -2
  • Arshdeep Singh  · 技术社区  · 6 年前

    我正在研究谷歌地图,它将显示多辆车。我有两点(一点是旧的位置,另一点是现在的位置),这个定位系统将帮助写一个通过这两点的线的方程。它可能会与其他线相交,告诉我碰撞的可能性。

    但问题是我要从GPS模块中获取坐标,它将以经纬度格式给出位置。

    我需要x,y坐标,来写出穿过它们的线的方程。我已经在不同的网页中探索了大多数方法,但问题是他们会要求一些屏幕大小(或地图边界),这与我的方法类型有点不兼容。

    问题: 将纬度和经度转换为(x,y)坐标的方法是什么,就像我们从空间和地球上看到的是平坦的,以几内亚湾(lat:0_度,lon:0_度)为原点一样。

    2 回复  |  直到 6 年前
        1
  •  0
  •   Alexey Kornev    6 年前
    1. 如果你的任务需要高精度,你必须使用经纬度和解决大圆交叉任务。地球并不平坦。

    2. 如果您可以接受计算中存在的一些错误,并且您的所有车辆都位于小的有限区域(最长100公里,尽管这取决于您可以接受的错误),则您可以假设此受限区域为平坦区域。

    例如,如果您的车辆位于N10.0 E10.0,第二个位于N10.1 E10.2,则可以选择N10.0 E10.0作为原点。

    因此,这两辆车将具有以下(x,y)坐标(假设x轴沿赤道运行): 1)(0.0公里0.0公里) 2)(21.86公里11.1公里)

    第二辆车X为(40000km/360度)*cos(10.0)*(10.2-10.0)=21.86km

    第二辆车Y(40000km/360度)*(10.1-10.0)=11.1km

    如果您试图对彼此相距10000公里的车辆应用平线交叉-您的计算很可能不正确。

        2
  •  -1
  •   LuisTavares    6 年前

    对于小距离,毕达哥拉斯定理可用于等矩形项目:

    var x = (λ2-λ1) * Math.cos((φ1+φ2)/2);
    var y = (φ2-φ1);
    

    其中_ 1,_»1=0(根据最后一段的结尾)。

    请注意,您可以使用x,y作为公式的输入,但不能在谷歌地图上可视化。