当前位置:Gxlcms > 数据库问题 > mysql对GIS空间数据的支持,包括创建空间索引

mysql对GIS空间数据的支持,包括创建空间索引

时间:2021-07-01 10:21:17 帮助过:2人阅读

TABLE tb_geo( id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(128) NOT NULL, pnt POINT NOT NULL, SPATIAL INDEX `spatIdx` (`pnt`) <!-- 1、创建表时创建空间索引 --> )ENGINE=MYISAM DEFAULT CHARSET=utf8; <!-- 数据库表引擎设置为 MYISAM--> <!-- 2、已经存在的表上创建索引 --> <!-- ALTER TABLE tb_geo ADD SPATIAL INDEX spatIdx(pnt); --> <!-- 3、使用CREATE INDEX语句创建索引,语法如下 --> <!-- CREATE SPATIAL INDEX spatIdx ON t7(g) --> <!-- 删除索引 --> <!-- ALTER TABLE book DROP INDEX UniqidIdx --> <!-- 表描述信息--> DESCRIBE tb_geo; <!-- 插入数据 --> INSERT INTO `tb_geo` VALUES( NULL, a test string, POINTFROMTEXT(POINT(15 20))); <!-- 查询 --> SELECT id,NAME,ASTEXT(pnt) FROM tb_geo; SELECT id,NAME,X(pnt),Y(pnt) FROM tb_geo; <!-- 空间查询示例 --> SELECT ASTEXT(pnt) FROM tb_geo WHERE MBRWITHIN(pnt,GEOMFROMTEXT(Polygon((0 0,0 30,30 30,30 0,0 0)))); <!-- 删除表 --> DROP TABLE tb_geo; <!-- 几种空间对象比较方法 --> SET @g1 = GEOMFROMTEXT(Polygon((0 0,0 3,3 3,3 0,0 0))); SET @g2 = GEOMFROMTEXT(Point(1 1)); <!-- 注意:比较的都是外包络几何类型对象 --> <!-- 包含 --> SELECT MBRCONTAINS(@g1,@g2), MBRCONTAINS(@g2,@g1), MBRCONTAINS(@g1,@g1); <!-- 被包含 --> SELECT MBRWITHIN(@g2,@g1),MBRWITHIN(@g1,@g2); <!-- 不相交 --> SELECT MBRDISJOINT(@g1,@g2); <!-- 相等 --> SELECT MBREQUAL(@g1,@g2); <!-- 相交 --> SELECT MBRINTERSECTS(@g1,@g2); <!-- 重叠 --> SELECT MBROVERLAPS(@g1,@g2); <!-- 相切 --> SELECT MBRTOUCHES(@g1,@g2);

 

mysql对GIS空间数据的支持,包括创建空间索引

标签:

人气教程排行