我有(minLatitude,maxLatitude)和(minLongitude,maxLongitude)对十进制度,我需要计算这些对定义的框的平均点,我怎样才能获得他们的平均纬度/经度?当计算简单算术平均值时,我得到了相当大的偏移量。
谢谢!
答案 0 :(得分:8)
Pierre-Luc Champigny建议的解决方案是错误的。
在下面的图像中,您可以看到两行:
每条线的半长为绿色,另一半为蓝色。
您可以看到两条线的中心不是同一个点,两个中心都不是多边形的中心。
为了找到多边形的中心:
要获得这些值,您可以使用Pierre-Luc Champigny建议的链接,但是:
答案 1 :(得分:5)
来自: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);