【MYSQL】空间字段POLYGON

空间字段

MYSQL支持空间数据类型,包括:

Geometry:可以存储所有的几何类型

Point:简单点

LINESTRING:简单线

POLYGON:简单面

MULTIPOINT:多点

MULITILINESTRING:多线

MUILITIPOLYGON:很多方面

GEOMETRYCOLLECTION:任何几何集合

简单的点数据一般表示为POINT(X Y);
简单的面数据则由多个点坐标组成POLYGON((X Y, X Y, X Y…))
多面数据比较复杂MUILITIPOLYGON(((X Y,X Y, X Y, X Y…..)))

简单的计算方法

如下可以通过点数据point与半径radius求以point点为圆心,radius为半径的圆范围内的数据。

SELECT A.* FROM mapTable A WHERE INTERSECTS(A.GEO, GEOMFROMTEXT(CONCAT('POLYGON((',  
X(GEOMFROMTEXT(#{point})) - #{radius}, ' ', Y(GEOMFROMTEXT(#{point})) - #{radius}, ',',  
X(GEOMFROMTEXT(#{point})) + #{radius}, ' ', Y(GEOMFROMTEXT(#{point})) - #{radius}, ',',  
X(GEOMFROMTEXT(#{point})) + #{radius}, ' ', Y(GEOMFROMTEXT(#{point})) + #{radius}, ',',  
X(GEOMFROMTEXT(#{point})) - #{radius}, ' ', Y(GEOMFROMTEXT(#{point})) + #{radius}, ',',  
X(GEOMFROMTEXT(#{point})) - #{radius}, ' ', Y(GEOMFROMTEXT(#{point})) - #{radius}, '))'  
)))

INTERSECTS为计算包含关系的函数方法,若参数1被参数2包含(实际是判断两个几何的MBR是否相交),则表示TRUE
除此之外也可以用ST_Contains来表示几何之间的包含关系。
GEOMFROMTEXT函数表示将字符串类型的数据转化成空间数据类型。

更多方法

https://blog.csdn.net/qq_27690839/article/details/90377659