将距离转换为坐标

时间:2011-11-02 01:36:34

标签: c math geometry geography

如何将给定距离(以米为单位)转换为地理坐标。

我需要的是在地图上绘制一个多边形(正多边形,如圆形),但是,它的半径以米为单位,如何以度或弧度计算半径?

我会在c

中编写代码

3 个答案:

答案 0 :(得分:1)

那么,考虑到在赤道(纬度0度),一度经度等于大约60海里。在任一极点(纬度为90度),单度经度等于0海里。我记得纬度乘以60的余弦将给出你在单纬度纬度的海里的近似距离。

但是,您将要使用的地图投影的准确程度如何。对于航空地图,他们使用Lambert Conformal Conic投影,这意味着沿锥体切割地球的两个纬度的距离只是精确的。但如果近似值足够好,则可能不需要准确度。

转换时,一海里等于1.852公里。如果我正确地进行了算术运算(不保证,我已经70多岁了),这意味着一个仪表等于(除非你真的靠近极点)纬度为0.0000009度。它也等于赤道上0.0000009度的经度。如果你不在赤道,将0.0000009除以纬度的余弦,得到经度。

因此,纬度为45度的1000米半径圆圈意味着半径为0.0009度纬度和0.0009 / 0.707度经度。大约当然。

所有这一切都来自记忆,所以要带上一粒盐。如果你真的想参与,谷歌地理方程式或其他一些。

答案 1 :(得分:1)

哦,男人,地理坐标可能是背后的痛苦。首先,我假设按地理坐标,你在谈论大地坐标(纬度/经度)。

其次,您无法以弧度或度数找到“半径”。你为什么问?那么,赤道的一度经度比接近北极或南极的一度经度长。一度纬度的弧也会根据你在地球上的位置而改变,因为地球不是一个完美的球体。它通常被建模为椭圆体。

话虽这么说,这里有两种方法将多边形的坐标映射到lat-lon坐标:

1)如果你感觉像是一个完整的坏蛋,你可以在lat-lon做数学运算。很多触发,容易犯错误......不要这样做。我在这里只是包含这个选项,让你知道它是可能的。

2)将您的大地坐标转换为UTM。然后,您可以以米为单位执行任何操作(即查找多边形的顶点),然后将生成的UTM转换回大地测量。就个人而言,我认为这是要走的路。

答案 2 :(得分:0)

结帐http://trac.osgeo.org/proj/wiki/GeodesicCalculations。根据您所需的准确性,这可能会非常复杂,因此您可能最好从一些现有代码开始。