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

时间:2014-08-22 08:01:50

标签: javascript math coordinates geo

我已经看到了这个问题的许多变化,但我很难将他们的答案与我的具体需求联系起来。

我有几组3个lat / lng坐标对。任何一组中的坐标都在彼此的几公里范围内。

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

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

这个网站做了我想要的但很遗憾没有分享算法: http://www.whoi.edu/marine/ndsf/cgi-bin/NDSFutility.cgi?form=0&from=LatLon&to=XY

2 个答案:

答案 0 :(得分:0)

  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

    的相对位置
    • Leta假设East与您的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); //此处而不是re应该是椭圆曲线的长度,从0到a1-a0
    • y2=y0+((a2-a0)*re); //这里代替re应该是椭圆曲线的长度从0到a2-a0
  3. 如果re!= rp那么y1,y2坐标将不太准确

    • 用正确的公式
    • 来纠正那个只是替换((a1-a0)* re)
    • 用于椭圆弧 - >长度计算(这个用于圆圈)
    • 我懒得计算那个积分
    • 无论如何,即使这样也足够好(地球偏心也不差)
    • 你也可以在减法后对角度进行归一化
    • while (a<-pi) a + = 2.0 * pi;`
    • while (a>+pi) a- = 2.0 * pi;`
    • 只是为了安全...

答案 1 :(得分:0)

实际上,这并非完全正确。网站 共享算法,而不是人们期望的那样。

请参阅http://www.whoi.edu/marine/ndsf/utility/NDSFutility.js

希望有所帮助。