【问题标题】:MySQL query for geographic midpointMySQL查询地理中点
【发布时间】:2010-12-12 19:46:28
【问题描述】:

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

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

点表中的每个点都具有十进制格式的相关纬度和经度。我希望有人已经有一个他们正在使用的 MySQL 查询(或函数),或者在地理空间计算方面比我有更多的经验。提前感谢您的帮助!

【问题讨论】:

  • 数据库中当前存储的经纬度值是什么格式的?
  • 正如我在原始帖子中提到的,经纬度值存储为小数。更具体地说,纬度小数(11,7)和经度小数(12,7)。希望对您有所帮助!

标签: sql mysql spatial latitude-longitude


【解决方案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

您的参考暗示了基线调整,但我不确定是否需要这样做。

【讨论】:

  • 这也是我的猜测,但从查看解释我不知道是否需要做一些更复杂的事情才能将十进制坐标转换为笛卡尔坐标以便计算准确。希望你和我是对的。感谢您查看它!
猜你喜欢
  • 2014-01-18
  • 2018-04-06
  • 1970-01-01
  • 1970-01-01
  • 2014-04-09
  • 1970-01-01
  • 2012-02-24
  • 2013-10-06
  • 2012-02-15
相关资源
最近更新 更多