首页 > 数据库技术 > 详细

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

时间:2016-04-18 22:16:30      阅读:577      评论:0      收藏:0      [点我收藏+]
CREATE 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空间数据的支持,包括创建空间索引

原文:http://www.cnblogs.com/xrab/p/5405866.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!