使用 MySQL 空间扩展在圆内定位点
背景
MySQL 空间扩展允许用户操作和分析存储在 MySQL 数据库中的空间数据。一项常见任务是识别位于给定圆内的点。这种情况在基于位置的服务和地理空间分析等应用中经常遇到。
使用 MySQL 距离函数获取纬度和经度
已弃用的信息:
问题最初指出MySQL空间扩展不支持纬度和经度距离计算。然而,这些信息已经过时了。从 MySQL 5.7 开始,空间扩展支持使用纬度和经度坐标定义的点之间的欧几里德距离计算。
示例实现
使用 MySQL 空间选择圆内的点扩展,您可以使用 ST_Distance() 函数。该函数计算两点之间的距离(以米为单位)。通过围绕用户位置创建一个半径为 100 米的虚拟圆,并检查“标志”坐标与圆中心之间的距离是否在此半径内,您可以过滤圆内的点。
下面是一个示例查询:
SELECT id, name, ST_Distance(coordinates, ST_PointFromGeoJSON('{ "type": "Point", "coordinates": [<user_longitude>, <user_latitude>] })) AS distance_in_meters FROM flags HAVING distance_in_meters <= 100 ORDER BY distance_in_meters ASC;
此查询检索 100 米半径圆内的所有“标志”,按其邻近程度排序到用户的位置。
附加说明:
以上是如何使用 MySQL Spatial Extension 查找圆内的点?的详细内容。更多信息请关注PHP中文网其他相关文章!