【问题标题】:Exact distance between two points in MySQL Spatial table in KMsMySQL空间表中两点之间的精确距离(以公里为单位)
【发布时间】:2012-09-28 01:26:17
【问题描述】:

您好。

我看过一些关于这个主题的帖子和答案,但我认为给出的结果可能并不准确。

假设我在 MySQL 空间表中具有不同点的经度和纬度行。我只想用一个简单的 SELECT 查询来检索它们之间的距离。我试过了:

GLENGTH(
        LINESTRINGFROMWKB(
            LINESTRING(
                GEOMFROMTEXT(
                    ASTEXT(
                        POINTFROMWKB(
                            POINT( X(user_location) , Y(user_location))))),
                GEOMFROMTEXT(
                    ASTEXT(
                        POINTFROMWKB(
                            POINT( $latitude, $longitude )))))))*100

我知道它的那种“丑陋”,恐怕结果不是以千米为单位的。

我该怎么做呢?非常感谢。

【问题讨论】:

  • 格式化您的公式以使其易于阅读会很有帮助。此外,您要查找的内容称为“haversine”或“great circle”距离公式。
  • 另外:这取决于您需要多准确。如果您正在做一个商店查找器应用程序,haversine 公式就可以了。如果您正在为桥梁制定工程计划,则需要了解制图投影;地球不是完美的球形。

标签: php mysql spatial


【解决方案1】:

您使用的方法根本不会给您准确的结果。由于GLENGTH 使用简单的笛卡尔距离公式。您也可以在 cmets here on GLENGTH's MySQL page 中阅读它不能用于球面,它适用于笛卡尔平面。

在这个Stackoverflow answer中,有一个修改过的公式,以及如何使用,解释清楚了,看看吧。您将需要对其进行修改以适合您的目的。但它肯定会指导您如何进行。

希望对你有帮助...

【讨论】:

  • 谢谢我去看看
猜你喜欢
  • 2017-04-17
  • 1970-01-01
  • 2010-09-28
  • 1970-01-01
  • 2011-08-10
  • 1970-01-01
  • 2021-12-22
  • 2016-12-14
  • 1970-01-01
相关资源
最近更新 更多