首页 > 解决方案 > MySQL POINT 空间索引查询从中心 POINT 半径内

问题描述

我看到了许多解决方案,用于从 a 获取最近的行POINT以转换为X()Y()进行距离的三角计算...据我了解,这似乎没有利用空间索引?

您如何利用空间索引,在最常见的意义上,返回空间POINT在距离中心半径范围内的行POINT

换句话说,你如何得到这样的东西——LatLng每行存储为 POINT 的 lat lng 位置在哪里,以及CenterPoint震中

伪代码查询:SELECT * FROM geotable WHERE d=Distance(LatLng,CenterPoint) < 10 ORDER by d

标签: mysql

解决方案


您可以使用 st_distance_sphere

SELECT * 
FROM geotable 
WHERE st_distance_sphere(POINT(-82.337036, 29.645095 ), POINT(`longitude`, `latitude` ))/1000  < 10

在这里您可以看到一个工作示例


推荐阅读