如果我有一个lat/lng我假设它在(0,0)那么我如何计算另一个lat/lng对的x, y坐标

If I have one lat/lng which I assume is at 0,0 then how do I calculate the x, y coordinates of another lat/lng pair?

本文关键字:lng lat 另一个 计算 对的 坐标 何计算 如果 有一个 假设      更新时间:2023-09-26

我看到过很多类似的问题,但是我很难将他们的答案与我的具体需求联系起来。

我有几组3 lat/lng坐标对。任何一组的坐标彼此之间的距离都在几公里以内。

对于每个集合,我想将坐标转换为x/y值,以便我可以绘制它们。

我想将1个坐标赋值为0,0,然后计算其他两个坐标的相对x/y值。

这个网站做我想要的,但不幸的是不分享算法:http://www.whoi.edu/marine/ndsf/cgi-bin/NDSFutility.cgi?form=0&从= LatLon& = XY

  1. 首先是一些明确的定义

    • a为纬度<-pi/2,+pi/2>
    • b为经度<0,+2*pi>
    • rerp为地球的赤道半径和极半径
    • a0,b0, a1,b1, a2,b2是你的球坐标点
    • x0,y0, x1,y1, x2,y2是你想要的笛卡尔坐标
  2. 将坐标转换为相对于(a0,b0)

    • 让我们假设东方与x轴对齐,北极与y轴对齐
    • x0=0.0;
    • y0=0.0;
    • r1=re*cos(a1)+rp*sin(a1)//点1实际半径
    • r2=re*cos(a2)+rp*sin(a2)//点2的实际半径
    • x1=x0+((b1-b0)*r1);
    • x2=x0+((b2-b0)*r2);
    • y1=y0+((a1-a0)*re);//这里应该用从0到a1-a0的椭圆曲线长度代替re
    • y2=y0+((a2-a0)*re);//这里应该用从0到a2-a0的椭圆曲线长度代替re

如果你!=rp则y1,y2坐标将不太准确

  • 只需将((a1-a0)*re)替换为适当的公式
  • 用于椭圆弧长计算(此为圆)
  • 我懒得计算积分
  • 无论如何,这已经足够好了(地球的离心率并没有那么糟糕)
  • 你也可以标准化角度后的减法
  • while (a<-pi) a+=2.0*pi; '
  • while (a>+pi) a-=2.0*pi; '

事实上,这并不完全正确。网站确实共享算法,只是不是以人们期望的方式。

参见http://www.whoi.edu/marine/ndsf/utility/NDSFutility.js。

希望对你有帮助。