【问题标题】:Distance in meters between two Spacial Points in MySQL queryMySQL查询中两个空间点之间的距离(以米为单位)
【发布时间】:2017-04-17 13:03:44
【问题描述】:

我正在尝试查询 MySQL 数据库(版本 5.7.15)以检索距离某些坐标(在我的情况下为 40.7542、-73.9961)300 米范围内的所有位置:

SELECT *
FROM location 
WHERE st_distance_sphere(latlng, POINT(40.7542, -73.9961)) <= 300

来自MySQL documentation:

ST_Distance_Sphere(g1, g2 [, radius])

返回两点之间的最小球面距离和/或 球体上的多点,以 米 为单位,如果有任何几何参数,则为 NULL 为 NULL 或空。

不幸的是,查询还返回了距离 POINT(40.7542, -73.9961) 超过 300 米的点,例如:

  • POINT(40.7501, -73.9949)(现实生活中约 470 米)
  • POINT(40.7498, -73.9937)(现实生活中约 530 米)

【问题讨论】:

  • 必须通过这种方式设置点 POINT(lng, lat) select st_distance_sphere(POINT(-73.9949,40.7501), POINT( -73.9961,40.7542)) 给我们 466.9696023582369 - 正如预期的那样
  • @MituhaSergey 但为什么查询返回的距离大于 300?
  • 因为您使用了不正确的 POINT。例如select st_distance_sphere(POINT(40.7501, -73.9949), POINT(40.7542, -73.9961)) 将返回 183.3146597410617
  • 嗨,我正在尝试解决类似的问题,但是我的位置设置为这种格式 b'\x00\x00\x00\x00\x01\x01\x00\x00\x00\xca\x15 \xde\xe5"\xc2_@\x04\xe6!S>\xbeB@'。我的猜测是它是创建多边形的点集,但它是点数据类型

标签: mysql geospatial


【解决方案1】:

请注意,在 MySql 中坐标的顺序是:
1.POINT(lng, lat) - 没有 SRID
2.ST_GeomFromText('POINT(lat lng)', 4326) - 带有 SRID

select st_distance_sphere(POINT(-73.9949,40.7501), POINT( -73.9961,40.7542)) 

将按预期返回 466.9696023582369,当然返回 466.9696023582369 > 300

【讨论】:

    【解决方案2】:

    只是为了让未来的人(比如我自己)清楚:

    Mituha Sergey 在 OP 的 cmets 中回答了这个问题。问题是 OP 使用的是POINT(lat, lng),而实际上 MySQL 期望的是 POINT(lng, lat)。

    不确定 OP 发布问题的时间,但截至今天,官方文档使其更加清晰:

    几何参数应该由指定的点组成 (经度、纬度)坐标值:

    • 经度和纬度分别是该点的第一个和第二个坐标。
    • 两个坐标都以度为单位。
    • 经度值必须在 (-180, 180] 范围内。正值位于本初子午线以东。
    • 纬度值必须在 [-90, 90] 范围内。正值位于赤道以北。

    发件人:https://dev.mysql.com/doc/refman/5.7/en/spatial-convenience-functions.html#function_st-distance-sphere

    如果您收到“无效参数”错误,可能就是因为这个。为了安全起见,请尝试添加WHERE lat between -90 and 90 AND lng between -180 and 180 哈哈:)

    【讨论】:

    • 感谢@MacAnthony 修正错别字^^
    猜你喜欢
    • 2017-08-22
    • 1970-01-01
    • 2012-05-13
    • 2012-01-17
    • 2020-08-10
    • 1970-01-01
    • 2011-12-21
    • 2015-02-26
    • 1970-01-01
    相关资源
    最近更新 更多