关于C#:将距离转换为坐标

converting distance into coordinates

本问题已经有最佳答案,请猛点这里访问。

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

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

我可能会用c

对其进行编码


哦,天哪,地理坐标可能会让人感到痛苦。首先,我假设通过地理坐标,您正在谈论的是大地坐标(纬度/经度)。

第二,您找不到以弧度或度为单位的"半径"。你为什么问?好吧,赤道的一度经度比靠近北极或南极的一度经度长。因为地球不是一个完美的球体,所以一度纬度的弧也会根据您在地球上的位置而变化。通常将其建模为椭圆体。

话虽这么说,以下是将多边形的坐标映射到经纬度坐标的两种方法:

1)如果您感觉像一个完整的坏蛋,可以在纬度上进行数学运算。大量尝试,容易出错...别这么做。我只是在此处包括此选项,以便让您知道这是可能的。

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


好吧,请考虑在赤道(纬度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度。当然大约。

所有这些都是从记忆中获得的,所以要加一点salt。如果您真的想参与其中,可以使用Google地理方程式或其他类似的方法。


查看http://trac.osgeo.org/proj/wiki/GeodesicCalculations。根据所需的精度,这可能会变得非常复杂,因此最好从一些现有代码开始。