mysql查询两个数之间的关系,MySQL查询中两个空间点之间的距离(以米为单位)...

I am trying to query a MySQL database (version 5.7.15) to retrieve all locations that are within 300 meters from some coordinates (40.7542, -73.9961 in my case):

SELECT *

FROM location

WHERE st_distance_sphere(latlng, POINT(40.7542, -73.9961)) <= 300

ST_Distance_Sphere(g1, g2 [, radius])

Returns the mimimum spherical distance between two points and/or

multipoints on a sphere, in meters, or NULL if any geometry argument

is NULL or empty.

Unfortunately, the query also returns points that are more than 300 meters away from POINT(40.7542, -73.9961) such as:

POINT(40.7501, -73.9949) (~ 470 meters in real life)

POINT(40.7498, -73.9937) (~ 530 meters in real life)

解决方案

Note that in MySql the order of coordinates are:

1. POINT(lng, lat) - no SRID

2. ST_GeomFromText('POINT(lat lng)', 4326) - with SRID

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

will return 466.9696023582369, as expected, and 466.9696023582369 > 300 of course

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值