KMs中MySQL Spatial表中两点之间的精确距离

时间:2012-09-27 16:44:22

标签: php mysql spatial

问候。

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

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

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

我知道它的'丑陋',我担心结果不会在KiloMeters中给出。

我该怎么做?非常感谢。

1 个答案:

答案 0 :(得分:3)

您使用的方法根本无法提供准确的结果。由于GLENGTH使用简单的笛卡尔距离公式。您还可以阅读它不能用于球面的评论here on GLENGTH's MySQL page,它适用于笛卡尔平面。

在这个Stackoverflow answer中,有一个修改后的公式以及如何使用它解释清楚,看看它。您需要修改它以适合您的目的。但它肯定会指导你如何继续。

希望它有所帮助...