2014-03-25 68 views
0

我有一個給定緯度/經度座標(來自谷歌地圖)的位置。得到一個點,當有一個給定點的距離爲lon/lat

現在我想跨越一個給定距離(f.e. 150米)到所有4個天空方向(北,南,西,東)的矩形,並計算它們的座標爲緯度/經度。

如何在C#中執行此操作?

+2

如果距離並不大(150米,小於0.1海里),如果位置是不靠近南/北極,你可以使用Flat Earth模型。 –

回答

1

請檢查這PDF文件,我認爲它應該是非常有幫助的完全找到矩形跨度。 大部分參見slide no 11

+0

瞭解它使用這個PDF。優秀。 –

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/

相關問題