码迷,mamicode.com
首页 > 数据库 > 详细

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

时间:2016-04-18 22:18:09      阅读:202      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!