使用表
Point
中Geometry
数据类型的值创建点MyISAM
。从Mysql 5.7.5开始,表现在InnoDB
还支持SPATIAL
索引。SPATIAL
在这些点上创建索引使用
MBRContains()
查找值:SELECt *
FROM table
WHERe MBRContains(LineFromText(CONCAt(
‘(‘
, @lon + 10 / ( 111.1 / cos(RADIANS(@lon)))
, ‘ ‘
, @lat + 10 / 111.1
, ‘,’
, @lon - 10 / ( 111.1 / cos(RADIANS(@lat)))
, ‘ ‘
, @lat - 10 / 111.1
, ‘)’ )
,mypoint)
或
MySQL 5.1以上:
SELECt * FROM table WHERe MBRContains ( LineString ( Point ( @lon + 10 / ( 111.1 / COS(RADIANS(@lat))), @lat + 10 / 111.1 ), Point ( @lon - 10 / ( 111.1 / COS(RADIANS(@lat))), @lat - 10 / 111.1 ) ), mypoint )
这将在框中近似选择所有点
(@lat +/- 10 km, @lon +/- 10km)。
实际上,这不是一个盒子,而是一个球形矩形:球体的经度和纬度绑定段。这可能与 弗朗兹·约瑟夫(Franz Joseph Land)
上的普通矩形不同,但在大多数人居住的地方都非常接近矩形。
应用其他过滤以选择圆内的所有内容(而不是正方形)
可能应用其他精细过滤以解决大圆距离(对于大距离)



