我有一个纬度和经度值的文件,我想把x和y转换成km 我想测量从每个点的距离。
例如,我把经纬度的第一个点(分别是51.58,-124.6)
到(0,0)在我的x和y系统中,所以基本上,我想找出其他点是什么,它们从原点的位置,所以我想找出,在(x,y)中,51.56(lat)-123.64(long)在(x,y)中,在km中,等等,在文件的其余部分。
我想用python完成这一切,有什么排序代码吗?
例如,我在网上找到了一些网站
http://www.whoi.edu/marine/ndsf/cgi-bin/NDSFutility.cgi?form=0&from=LatLon&to=XY
我不知道他们是怎么做到的。
以下是你的答案(以公里为单位)。如果你需要比这更好,你必须在数学上更加努力-例如通过遵循给出的一些链接。
变量名应该很明显。这给了你
一旦选择坐标(例如,
lon1, lat1
)作为原点,就应该很容易看到如何计算所有其他XY坐标。注:系数40000是地球的周长,单位为千米(通过两极测量)。这能让你接近。如果您查看您提供的链接的来源(您必须四处搜索才能找到javascript which is in a separate file),您会发现它们使用了一个更复杂的方程式:
在我看来,他们实际上是在考虑地球并不是一个球体这一事实。。。但即便如此,当你假设你可以把地球的一部分当作一个平面来看待时,你也会有一些错误。我相信用他们的公式,误差更小。。。
UTM投影以米为单位。所以您可以在这个链接上使用类似utm库的东西:
https://pypi.python.org/pypi/utm
谷歌python lat lon到UTM将指向几个选项。
UTM区域为6度经度宽,从本初子午线的0开始。每个UTM区域的起点位于赤道(x轴),y轴位于经度的最西端。这将使栅格正对北部和东部。你可以从这些结果中计算出你的距离。值在UTM区域的中间最为精确。
您还应该知道原始纬度值所基于的基准面,并在转换中使用相同的基准面。
您可以使用Great Circle Distance formula获取GPS点之间的距离。纬度和经度是在一个大地坐标系中,所以你不能仅仅转换成平面二维网格并使用欧几里德距离。您可以将足够近的点转换为近似网格,方法是取一个任意点,如(X,Y),将其设置为原点(如您所做的),然后使用大圆距离和bearing绘制平面上相对彼此的点,但这是一个近似值。
相关问题 更多 >
编程相关推荐