我有一個給定緯度/經度座標(來自谷歌地圖)的位置。得到一個點,當有一個給定點的距離爲lon/lat
現在我想跨越一個給定距離(f.e. 150米)到所有4個天空方向(北,南,西,東)的矩形,並計算它們的座標爲緯度/經度。
如何在C#中執行此操作?
我有一個給定緯度/經度座標(來自谷歌地圖)的位置。得到一個點,當有一個給定點的距離爲lon/lat
現在我想跨越一個給定距離(f.e. 150米)到所有4個天空方向(北,南,西,東)的矩形,並計算它們的座標爲緯度/經度。
如何在C#中執行此操作?
這取決於它需要多精確。你可以使用球形模型。
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/
如果距離並不大(150米,小於0.1海里),如果位置是不靠近南/北極,你可以使用Flat Earth模型。 –