mysql空间类型使用笔记

创建表,填充测试数据

create table geom1(id int not null auto_increment primary key,geo geometry);

insert into geom1(geo)values(ST_GeomFromText(‘point(1 1 )‘,3857));

insert into geom1(geo)values(ST_GeomFromText(‘polygon((0 0,10 0,10 10,0 10,0 0))‘,3857));
select AsText(geo) from geom1;/*以WKT格式获取空间数据*/

select AsBinary(geo) from geom1; /*以WKB格式获取空间数据*/

修改列为自增类型

alter table cc change id id int primary key auto_increment;

建立空间索引,索引列必须为非空

alter table geom1
change geo geo geometry not null;
create SPATIAL  index idx_geo on geom1(geo)

常用空间计算操作

MBRContains(g1,g2) 

返回1或0以指明g1的最小边界矩形是否包含g2的最小边界矩形。

MBRDisjoint(g1,g2) 

返回1或0以指明两个几何变量g1和g2的最小边界矩形是否不相交。

MBREqual(g1,g2) 

返回1或0以指明两个几何变量g1和g2的最小边界矩形是否相同。

MBRIntersects(g1,g2) 

返回1或0以指明两个几何变量g1和g2的最小边界矩形是否相交。

MBROverlaps(g1,g2) 

返回1或0以指明两个几何变量g1和g2的最小边界矩形是否交迭。

MBRTouches(g1,g2) 

返回1或0以指明两个几何变量g1和g2的最小边界矩形是否接触。

MBRWithin(g1,g2) 

返回1或0以指明g1的最小边界矩形是否位于g2的最小边界矩形内。

Contains(g1,g2) 

返回1或0以指明g1是否完全包含g2。

Crosses(g1,g2) 

如果g1在空间上与g2相交,返回1。如果g1为Polygon或MultiPolygon,返回NULL,或如果g2为Point或MultiPoint返回NULL。否则,返回0。

术语“空间上交叉”指的是2个给定几何对象之间的空间关系,它具有下述属性:

o        2个结合对象交叉。

o        其交叉结果将导致其维数小于两个给定几何对象最大维数的几何对象。

o        其交叉不等于两个几何对象中的任何1个。

Disjoint(g1,g2) 

返回1或0以指明g1是否与g2从空间上不相交。

Distance(g1,g2) 

以双精度数值形式返回2个几何对象中2点间的最短距离。

Equals(g1,g2) 

返回1或0以指明g1是否从空间上等同于g2。

Intersects(g1,g2) 

返回1或0以指明g1是否从空间上与g2相交。

Overlaps(g1,g2) 

返回1或0以指明g1是否从空间上与g2交迭。如果2个几何对象交叉而且其交叉将导致具有相同维数但并不等同于任一几何对象的几何对象,将使用术语“空间交迭”。

Related(g1,g2,pattern_matrix) 

返回1或0以指明由pattern_matrix指定的空间关系是否在g1和g2间存在。如果参量为NULL返回-1。模式矩形为字符串。如果实施了该函数,其规范将在此给出。

Touches(g1,g2) 

返回1或0以指明g1是否从空间上与g2接触。如果几何对象的内部不交叉,但1个几何对象的边界与另一个的边界或内部交叉,这两个几何对象是从空间上接触的。

Within(g1,g2) 

返回1或0以指明g1是否从空间上位于g2内。

  

时间: 2024-11-07 00:59:37

mysql空间类型使用笔记的相关文章

MySQL空间类型测试

Mysql空间类型介绍: MySQL支持空间扩展,允许生成.保存和分析地理特征.这些特征可用于MyISAM.InnoDB.NDB.BDB和ARCHIVE表(但是,ARCHIVE引擎不支持索引功能,因此,不能为ARCHIVE列中的空间列编制索引). 测试目的: 想用mysql的专用空间类型来代替整数类型存储坐标信息,从而在地图搜索的时候提高效率. 参考文档: http://dev.mysql.com/doc/refman/5.1/zh/spatial-extensions-in-mysql.htm

Mysql(个人学习笔记20170321-20170328)

Mysql(个人学习笔记20170321-20170328) 数据库定义:按数据结构组织,存储,管理数据的仓库 常见数据库:Mysql,Oracle,Sql server 数据库由二维表组成,表格由若干记录,每条记录由若干字段组成 理解为Excel的话 列为字段,行为记录 设计数据库步骤 1,确定功能列表 2,确定可见数据参数类型 常用类型有 Int 整数型 Float 小数 Varchar(长度) char(长度) 字符串 (赋值需要单引号) 区别:varchar 长度可变,不足位数自动取消,

MYSQL数据库基础学习笔记

一.mysql的安装与初始化: 安装mysql命令: yum install -y mysql-server mysql mysql-devel 初始化: service mysqld start   //第一次启动mysqld服务会自动初始化: 创建用户并初始化密码: mysqladmin -u root passwd '密码' 登陆mysql: mysql -u root -p 退出mysql: quit.exit 设置mysqld服务自启动: chkconfig mysqld on mys

MySQL索引类型&建立索引的时机&索引的不足之处

MySQL索引类型包括: 1.普通索引 这是最基本的索引,它没有任何限制.它有以下几种创建方式: ◆创建索引 CREATE INDEX indexName ON mytable(username(length)); 如果是CHAR,VARCHAR类型,length可以小于字段实际长度:如果是BLOB和TEXT类型,必须指定 length,下同. ◆修改表结构 ALTER mytable ADD INDEX [indexName] ON (username(length)) ◆创建表的时候直接指定

MySQL恢复备份读书笔记

1. 任何执行时间长于 wait_timeout或interactive_timeout选项值得备份,都会导致会话被关闭,这也会隐含执行UNLOCK TABLES命令.2. 对于使用FLUSH TABLES WITH READ LOCK的备份策略来讲,一个共同的缺陷是它们需要两个独立的线程来完成备份过程.运行FLUSH TABLES WITH READ LOCK命令, 然后从当前连接退出将自动执行一条UNLOCK TABLES命令.从FLUSH TABLES WITH READ LOCK成功返回

MySQL索引类型总结和使用技巧以及注意事项

      索引是快速搜索的关键.MySQL索引的建立对于MySQL的高效运行是很重要的.下面介绍几种常见的MySQL索引类型 在数据库表中,对字段建立索引可以大大提高查询速度.假如我们创建了一个 mytable表: CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL ); 我们随机向里面插入了10000条记录,其中有一条:5555, admin. 在查找username="admin"的记录 SEL

六、mysql字段类型选择

1.char类型字段会自动删除字符串后面所带的空格,而varchar不会 2.char比varchar快..... 3.myisam 建议 char类型,memory char跟varchar一样,都作为char类型处理:innodb建议 varchar类型 4.optimize table 清理碎片 text碎片产生实例: create table emp (id tinying(1),content text)engine=myisam; 新建测试表 insert into emp valu

MySQL索引类型及优化

索引是快速搜索的关键.MySQL索引的建立对于MySQL的高效运行是很重要的.下面介绍几种常见的MySQL索引类型. 在数据库表中,对字段建立索引可以大大提高查询速度.假如我们创建了一个 mytable表: CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL ); 我们随机向里面插入了10000条记录,其中有一条:5555, admin. 在查找username="admin"的记录 SELECT *

MySQL索引类型一览 让MySQL高效运行起来

索引是快速搜索的关键.MySQL索引的建立对于MySQL的高效运行是很重要的.下面介绍几种常见的MySQL索引类型. 在数据库表中,对字段建立索引可以大大提高查询速度.假如我们创建了一个 mytable表: CREATE TABLE mytable(   ID INT NOT NULL,    username VARCHAR(16) NOT NULL  );   我们随机向里面插入了10000条记录,其中有一条:5555, admin. 在查找username="admin"的记录