获得具有距离的给定点的lon / lat的点

时间:2014-03-25 12:35:09

标签: c# geometry

我有一个带有给定纬度/经度坐标的位置(来自谷歌地图)。

现在我想跨越一个给定距离(f.e. 150米)的矩形到所有4个天空方向(北,南,西,东),计算它们的坐标为纬度/经度。

我怎样才能在C#中做到这一点?

2 个答案:

答案 0 :(得分:1)

请检查此PDF文件,我认为应该非常有帮助找到矩形跨度。 大多数人看到第11张幻灯片

答案 1 :(得分:0)

这取决于它需要多精确。您可以使用球形模型。

void pointAtDistace(double lat1, double lon1, double brng, ref double lat2, ref double lon2)
{
    lat2 = Math.Asin( Math.Sin(lat1)*Math.Cos(d/R) +  Math.Cos(lat1)*Math.Sin(d/R)*Math.Cos(brng) );
    lon2 = lon1 + Math.Atan2(Math.Sin(brng)*Math.Sin(d/R)*Math.Cos(lat1), Math.Cos(d/R)-Math.Sin(lat1)*Math.sin(lat2));
}

坐标需要以弧度为单位。但由于地球不是球形球,这里的库是为了这些目的使用更精确的库的方式:

http://www.gavaghan.org/blog/free-source-code/geodesy-library-vincentys-formula/