我已经看到了这个问题的许多变化,但我很难将他们的答案与我的具体需求联系起来。
我有几组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
答案 0 :(得分:0)
首先要明确一些定义
a
成为纬度<-pi/2,+pi/2>
b
为经度<0,+2*pi>
re
,rp
为赤道和地球的极半径a0,b0, a1,b1, a2,b2
是球坐标中的点x0,y0, x1,y1, x2,y2
是您想要的笛卡尔坐标将坐标转换为相对于(a0,b0
)
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 如果re!= rp那么y1,y2坐标将不太准确
while (a<-pi)
a + = 2.0 * pi;`while (a>+pi)
a- = 2.0 * pi;`答案 1 :(得分:0)