MySQL 空间数据 简单操作

在做的项目中需要,自己绘制区域图形,并存储起来,后面还有更新的需要,存文件不方面,想到现在数据库都支持空间数据库。

现在用的就是 MySQL ,就继续用 MySQL 来存储、管理空间数据。下面就做一些简单的记录。

创建空间数据

CREATE TABLE `t_pot` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `pot` point DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;

上面是建的一个包含点数据的表

CREATE TABLE `t_polygon` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `pgn` polygon DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;

上面是建的一个包含面数据的表

MySQL 中的空间数据类型:point、linestring、polygon、geometry、multipoint、multilinestring、multipolygon、geometrycollection

空间数据操作

下面是对数据的一些查询、分析等操作语句

先插入一些示例数据

INSERT INTO `t_polygon` VALUES (‘1‘, ‘ABCD‘, GeomFromText(‘POLYGON((0 0, 2 0, 2 2, 0 2, 0 0))‘));
INSERT INTO `t_polygon` VALUES (‘2‘, ‘AEGF‘, GeomFromText(‘POLYGON((0 0, 4 0, 4 4, 0 4, 0 0))‘));
INSERT INTO `t_polygon` VALUES (‘3‘, ‘CEGFBD‘, GeomFromText(‘POLYGON((0 2, 0 4, 4 4, 4 0, 2 0, 2 2, 0 2))‘));
INSERT INTO `t_polygon` VALUES (‘4‘, ‘AHJIK‘, GeomFromText(‘POLYGON((0 0, 0 6, 6 6, 6 0, 0 0), (2 2, 4 4, 4 2, 2 2))‘));
INSERT INTO `t_polygon` VALUES (‘5‘, ‘DGK‘, GeomFromText(‘POLYGON((2 2, 4 4, 4 2, 2 2))‘));
INSERT INTO `t_polygon` VALUES (‘6‘, ‘GKJ‘, GeomFromText(‘POLYGON((4 4, 4 2, 6 6, 4 4))‘));
INSERT INTO `t_polygon` VALUES (‘7‘, ‘ADF‘, GeomFromText(‘POLYGON((0 0, 2 2, 4 0, 0 0))‘));
INSERT INTO `t_polygon` VALUES (‘8‘, ‘LDK‘, GeomFromText(‘POLYGON((1 1, 2 2, 4 2, 1 1))‘));

INSERT INTO `t_pot` VALUES (‘1‘, ‘A‘, GeomFromText(‘POINT(0 0)‘));
INSERT INTO `t_pot` VALUES (‘2‘, ‘B‘, GeomFromText(‘POINT(0 2)‘));
INSERT INTO `t_pot` VALUES (‘3‘, ‘C‘, GeomFromText(‘POINT(2 0)‘));
INSERT INTO `t_pot` VALUES (‘4‘, ‘D‘, GeomFromText(‘POINT(2 2)‘));

一些空间对象方法

-- 包含,MBRCONTAINS,第一个参数是包含的要素,第二个是被包含的要素,第一个包含第二个返回1,否则返回0
SELECT py.`name`,p.`name`,MBRCONTAINS(py.pgn,p.pot) FROM t_polygon py,t_pot p;

-- 被包含,MBRWITHIN,和上面一个参数相反,返回结果一样
SELECT py.`name`,p.`name`,MBRWITHIN(p.pot,py.pgn) FROM t_polygon py,t_pot p;

-- 不相交,MBRDISJOINT,参数没有先后分,不相交返回1,否则返回1
SELECT py.`name`,p.`name`,MBRDISJOINT(p.pot,py.pgn) FROM t_polygon py,t_pot p;

-- 相等,MBREQUAL,两个要素是否相等,相等返回1,否则返回0
SELECT py.`name`,p.`name`,MBREQUAL(p.pot,py.pgn) FROM t_polygon py,t_pot p;

-- 相交,MBREQUAL,两个要素是否相交,相交返回1,否则返回0
SELECT py.`name`,p.`name`,MBRINTERSECTS(p.pot,py.pgn) FROM t_polygon py,t_pot p;

-- 重叠,MBROVERLAPS,两个要素是否重叠,重叠返回1,否则返回0
SELECT py.`name`,p.`name`,MBROVERLAPS(p.pot,py.pgn) FROM t_polygon py,t_pot p;

-- 相切,MBREQUAL,两个要素是否相切,相切返回1,否则返回0
SELECT py.`name`,p.`name`,MBREQUAL(p.pot,py.pgn) FROM t_polygon py,t_pot p;

INSERT INTO `t_polygon` VALUES (‘1‘, ‘ABCD‘, GeomFromText(‘POLYGON((0 0, 2 0, 2 2, 0 2, 0 0))‘));INSERT INTO `t_polygon` VALUES (‘2‘, ‘AEGF‘, GeomFromText(‘POLYGON((0 0, 4 0, 4 4, 0 4, 0 0))‘));INSERT INTO `t_polygon` VALUES (‘3‘, ‘CEGFBD‘, GeomFromText(‘POLYGON((0 2, 0 4, 4 4, 4 0, 2 0, 2 2, 0 2))‘));INSERT INTO `t_polygon` VALUES (‘4‘, ‘AHJIK‘, GeomFromText(‘POLYGON((0 0, 0 6, 6 6, 6 0, 0 0), (2 2, 4 4, 4 2, 2 2))‘));INSERT INTO `t_polygon` VALUES (‘5‘, ‘DGK‘, GeomFromText(‘POLYGON((2 2, 4 4, 4 2, 2 2))‘));INSERT INTO `t_polygon` VALUES (‘6‘, ‘GKJ‘, GeomFromText(‘POLYGON((4 4, 4 2, 6 6, 4 4))‘));INSERT INTO `t_polygon` VALUES (‘7‘, ‘ADF‘, GeomFromText(‘POLYGON((0 0, 2 2, 4 0, 0 0))‘));INSERT INTO `t_polygon` VALUES (‘8‘, ‘LDK‘, GeomFromText(‘POLYGON((1 1, 2 2, 4 2, 1 1))‘));

原文地址:https://www.cnblogs.com/zhurong/p/9450930.html

时间: 2024-10-24 01:06:51

MySQL 空间数据 简单操作的相关文章

MySQL基本简单操作02

MySQL基本简单操作 先进入Mysql容器. [[email protected] ~]# docker exec -it mysql /bin/bash [email protected]:/# mysql -uroot -p000000 mysql: [Warning] Using a password on the command line interface can be insecure. Welcome to the MySQL monitor. Commands end with

Ubuntu 安装mysql和简单操作

ubuntu上安装mysql非常简单只需要几条命令就可以完成. 1. sudo apt-get install mysql-server 2. apt-get isntall mysql-client 3.  sudo apt-get install libmysqlclient-dev 安装过程中会提示设置密码什么的,注意设置了不要忘了,安装完成之后可以使用如下命令来检查是否安装成功: sudo netstat -tap | grep mysql 通过上述命令检查之后,如果看到有mysql 的

Ubuntu下安装MySQL及简单操作

Ubuntu上安装MySQL非常简单只需要几条命令就可以完成. 1. sudo apt-get install mysql-server 2. apt-get isntall mysql-client 3.  sudo apt-get install libmysqlclient-dev 安装过程中会提示设置密码什么的,注意设置了不要忘了,安装完成之后可以使用如下命令来检查是否安装成功: sudo netstat -tap | grep mysql 通过上述命令检查之后,如果看到有mysql 的

Ubuntu中安装MySql与简单操作

ubuntu上安装mysql非常简单只需要几条命令就可以了 sudo apt-get install mysql-server apt-get isntall mysql-client sudo apt-get install libmysqlclient-dev 安装完成之后可以使用如下命令来检查是否安装成功: sudo netstat -tap | grep mysql 通过上述命令检查之后,如果看到有mysql 的socket处于 listen 状态则表示安装成功. 登陆mysql数据库可

MySQL 数据库简单操作

对于想要从事或爱好mysql相关工作的童鞋们,有必要掌握在命令行下对mysql实现一些简单的操作.本文从描述了如何登录到mysql数据库服务器,如何在mysql提示符下发布命令,创建数据库,以及执行一些简单的DML操作. 1.连接到与退出mysql 为了连接mysql数据库服务器,当调用mysql时,通常需要提供一个MySQL用户名并且很可能需要一个密码.如果服务器 运行在登录服务器之外的其它机器上,还需要指定主机名.联系管理员以找出进行连接所使用的参数 (即,连接的主机 .用户名和使用的密码)

MySQL数据类型+简单操作

数据类型 数值型整数int(m) 四个字节(-21亿~21亿) ---java:intbigint(m) 八个字节(18次方) ---java:long浮点数float(m,d)单精度浮点数 8位精度四个字节 m总个数 d小数个数 ---java:floatdouble(m,d)双精度浮点数 16位精度八个字节 m总个数 d小数个数 ---java:float定点数浮点型在数据库中永远存放的是近似值,而定点型存放的是精确值decimal(m,d)m<65 d<30且d<m m是总个数d是

mysql的简单操作

创建数据库并设定字符集: CREATE  DATABASE hidb CHARACTER SET 'utf8'; 使用数据库: use hidb; 删除数据库: DROP DATABASE hidb; SHOW DATABASES LIKE '%db' 创建数据库表: CREATE TABLE TBL2 (id SMALLINT UNSIGND NOT NULL AUTO INCREMENT UNIQUE KEY,name HELP DESC DESC tbl2 增加数据库表的字段: ALTER

Linux下安装mysql及简单操作

1. 进入Linux系统挂载光盘,(或下载MysqL-server MysqL),配置yum源 2. yum install -y mysql-server mysql 3. Service mysqld start 4. 登录数据库mysql [-u username] [-h host] [-p[password]] [dbname] 5. 修改密码root用户:usr/bin/mysqladmin -u root password 'new-password' 6. 数据库目录  /var

mysql空间数据相关操作

建表语句: CREATE TABLE ts.points ( name VARCHAR (20) NOT NULL, location POINT NOT NULL, description VARCHAR (200) ); 添加记录如下: INSERT INTO Points (name, location) VALUES ( 'p1' , GeomFromText( ' POINT(10 20) ' ) ) INSERT INTO Points (name, location) VALUES