我有一对 (minLatitude,maxLatitude) 和 (minLongitude,maxLongitude) 的十进制度数值,需要计算这个矩形框的平均点,如何获取它们的平均纬度/经度?当使用简单的算术平均值时,会出现相当大的偏差。
谢谢!
我有一对 (minLatitude,maxLatitude) 和 (minLongitude,maxLongitude) 的十进制度数值,需要计算这个矩形框的平均点,如何获取它们的平均纬度/经度?当使用简单的算术平均值时,会出现相当大的偏差。
谢谢!
来源:http://www.movable-type.co.uk/scripts/latlong.html
您的数值应全部使用弧度制,因此使用中点公式:
var lat1 = minLatitude; // In radian
var lat2 = maxLatitude; // In radian
var lon1 = minLongitude; // In radian
var lon2 = maxLongitude; // In radian
var dLon = (lon2-lon1);
var Bx = Math.Cos(lat2) * Math.Cos(dLon);
var By = Math.Cos(lat2) * Math.Sin(dLon);
var avgLat = Math.Atan2(
Math.Sin(lat1) +
Math.Sin(lat2),
Math.Sqrt((
Math.Cos(lat1)+Bx) * (Math.Cos(lat1)+Bx) + By*By));
var avgLong = lon1 + Math.Atan2(By, Math.Cos(lat1) + Bx);