MySQL查询地理中点

时间:2009-11-03 21:48:54

标签: sql mysql spatial latitude-longitude

我需要MySQL查询(或函数)来计算任意数量的纬度/经度坐标的地理中点。我想使用方法C(平均纬度/经度),如本页http://www.geomidpoint.com/calculation.html所述,但无法弄清楚如何将其转换为SQL查询。我正在寻找形式的东西:

从积分中选择LATITUDE_AVG_FORMULA(points.latitude),LONGITUDE_AVG_FORMULA(points.longitude);

点表中的每个点都有十进制格式的相关纬度和经度。我希望有人已经拥有他们正在使用的MySQL查询(或函数),或者拥有比我更多的geospacial计算经验。在此先感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

方法C似乎基本上是加权平均值。您的问题与MySQL语法很接近。鉴于这些是十进制格式。

如果你有重量:

SELECT
    SUM( longitude * weight ) / SUM( weight ) AS Avg_Long,
    SUM( latitude * weight ) / SUM( weight ) AS Avg_Lat
FROM
    points

或未加权:

SELECT
    AVG( longitude ) AS Avg_Long,
    AVG( latitude ) AS Avg_Lat
FROM
    points

您的参考提到了基线调整,但我不确定是否需要。