MySQL数据库的geometry字段类型类型可以存储坐标点信息并进行一系列的关系计算(包含/相交),可以满足某个坐标点是否在某个区域内的条件筛选需求。
怎么做 建表插入sqlCREATE TABLE temp(
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAr(20) COMMENT '名称' NOT NULL,
coordinate_center_geometry GEOMETRY COMMENT '边界-使用GEOMETRY存储' NOT NULL
) COMMENT '用于测试空间数据字段的临时表';
方法(判断一个区域和另外一个区域的关系)insert into temp (id,coordinate_center_geometry)values (1,geomfromtext('point(116.555555 39.555555)'));
MyBatis语法拼接示例-- 构建用于测试的一个矩形和两个点,一个点在矩形内部,一个点在矩形边界上。
SET @geo1 = ST_GeomFromText('MULTIPOLYGON(((116.111111 39.111111,116.999999 39.111111,116.999999 39.999999,116.111111 39.999999,116.111111 39.111111)))');
SET @geo2 = ST_GeomFromText('POINT(116.555555 39.555555)');
SET @geo3 = ST_GeomFromText('POINT(116.111111 39.111111)');
-- @geo2上的点都在@geo1的内部或边界,并且@geo2至少有一个点在@geo1的内部,所以结果是1
SELECt ST_Contains(@geo1,@geo2); -- 1
SELECT ST_Within(@geo2,@geo1); -- 1
-- @geo2上的点都在@geo1的内部或边界,但是不满足@geo2至少有一个点在@geo1的内部,所以结果是0
SELECT ST_Contains(@geo1,@geo3); -- 0
SELECT ST_Within(@geo3,@geo1); -- 0
and ST_Contains(ST_GeomFromText('MULTIPOLYGON(((${bo.geometryString})))'),a.coordinate_center_geometry);



