mysql 空间数据操作,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 ('', 'ABCD', GeomFromText('POLYGON((0 0, 2 0, 2 2, 0 2, 0 0))'));

INSERT INTO `t_polygon` VALUES ('', 'AEGF', GeomFromText('POLYGON((0 0, 4 0, 4 4, 0 4, 0 0))'));

INSERT INTO `t_polygon` VALUES ('', 'CEGFBD', GeomFromText('POLYGON((0 2, 0 4, 4 4, 4 0, 2 0, 2 2, 0 2))'));

INSERT INTO `t_polygon` VALUES ('', '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 ('', 'DGK', GeomFromText('POLYGON((2 2, 4 4, 4 2, 2 2))'));

INSERT INTO `t_polygon` VALUES ('', 'GKJ', GeomFromText('POLYGON((4 4, 4 2, 6 6, 4 4))'));

INSERT INTO `t_polygon` VALUES ('', 'ADF', GeomFromText('POLYGON((0 0, 2 2, 4 0, 0 0))'));

INSERT INTO `t_polygon` VALUES ('', 'LDK', GeomFromText('POLYGON((1 1, 2 2, 4 2, 1 1))'));

INSERT INTO `t_pot` VALUES ('', 'A', GeomFromText('POINT(0 0)'));

INSERT INTO `t_pot` VALUES ('', 'B', GeomFromText('POINT(0 2)'));

INSERT INTO `t_pot` VALUES ('', 'C', GeomFromText('POINT(2 0)'));

INSERT INTO `t_pot` VALUES ('', 'D', GeomFromText('POINT(2 2)'));

--多面的更新

UPDATE street s SET s.spatial_data = GEOMETRYFROMTEXT('MULTIPOLYGON(((0 0, 2 0, 2 2, 0 2, 0 0)),((0 0, 4 0, 4 4, 0 4, 0 0)))') WHERE s.id = 4;

--根据字段更新

UPDATE street s SET s.coord_point = GeomFromText(CONCAT('POINT(',s.longitude,' ',s.latitude,')')) WHERE s.id = 1

--根据空间数据查询

SELECT * FROM street s WHERE s.coord_point = GeomFromText('POINT(116.7551422 27.9147577)')

一些空间对象方法

-- 包含,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;

对于上面的几个方法,其空间关系是用的:最小边界矩形做的分析。

所以需要进行的时候比较准确的时候,用的应该是:对象形状做分析。

上面的几个函数的“MBR” 替换为 “ST_” 就可以了

Linux下MySQL的简单操作

Linux下MySQL的简单操作 更改mysql数据库root的密码 首次进入数据库是不用密码的: [root@localhost ~]# /usr/local/mysql/bin/mysql -ur ...

MySQL基本简单操作03

MySQL基本简单操作 现在我创建了一个数据表,表的内容如下: mysql> select * from gubeiqing_table; +----------+-----+ | name | ...

MySQL基本简单操作02

MySQL基本简单操作 先进入Mysql容器. [root@promote ~]# docker exec -it mysql /bin/bash root@30d60b852cf5:/# mysql ...

MySQL基本简单操作01

MySQL基本简单操作 学会了安装Docker,那么就将它利用起来.(/滑稽脸) 之前想学习Mysql(Windows下配置真麻烦),学会了Docker就方便了,直接使用Docker创建一个Mysql ...

Ubuntu 安装mysql和简单操作

http://www.cnblogs.com/zhuyp1015/p/3561470.html ubuntu上安装mysql非常简单只需要几条命令就可以完成. 1. sudo apt-get inst ...

python对mysql进行简单操作

python 连接MySQL数据库,进行简单操作 一.连接MySQL数据库,关闭连接 import pymysql db = pymysql.connect(host="xxx.xxx.x. ...

Ubuntu下安装MySQL及简单操作

Ubuntu上安装MySQL非常简单只需要几条命令就可以完成. 1. sudo apt-get install mysql-server 2. apt-get isntall mysql-client ...

MySQL数据库简单操作

title date tags layout MySQL简单操作 2018-07-16 Linux post 登录mysql mysql -h 主机名 -u 用户名 -p 查看所有数据库 show d ...

MySQL 基础 简单操作

一.数据库基础 什么是数据库 数据库:保存有组织的数据的容器(通常是一个文件或一组文件). 表:是一种结构化的文件,可以用来存储数据(类似Excel表).数据库就是由成千上万个表组成. 什么事SQL ...

随机推荐

给swift程序猿留下深刻印象的10个Swift代码

通过使用单行代码完成同样的 10 个练习,我们来看看 Swift 和其他语言之间的较量. 将数组中每个元素的值乘以 2 使用map来实现 var arr = [1,2,3,4]; var newArr ...

框架Spring笔记系列 一 基础

主题:Spring 1.什么样的问题,使得Spring框架应用而生?使用Spring解决了那些问题? 2.

Knockout.Js案例三单页面应用程序

  •      
  • & ...

    话说C语言const用法

    const在C语言中算是一个比较新的描述符,我们称之为常量修饰符,意即其所修饰 的对象为常量(immutable). 我们来分情况看语法上它该如何被使用. 1.函数体内修饰局部变量. 例: void ...

    android浪漫樱花凋零动态壁纸应用源码

    android浪漫樱花凋零动态壁纸应用源码,是从那个安卓教程网拿过来的,本项目是一套基于安卓的樱花动态壁纸项目源码,安装以后桌面没有图标,但是可以在修改壁纸-动态壁纸中找到.我的分辨率是480×854 ...

    C# 高精度减法 支持小数(待优化)

    是现实思路 1,先小数点补位,8913758923475893274958738945793845-4893127498372459823745324532453245.284929384729837 ...

    C# 如何添加Word文本和图片超链接

    超链接简单来讲就是内容链接,通过设置超链接可以实现对象与网页.站点之间的连接.链接目标可以是网页.图片.邮件地址.文件夹或者是应用程序.设置链接的对象可以是文本或者图片. 在以下内容中,我将介绍如何用 ...

    html学习中

    Html常用标签一

    Body 标签 Style 属性 background-color:red ...

    Swashbuckle.AspNetCore3.0的二次封装与使用

    关于 Swashbuckle.AspNetCore3.0 一个使用 ASP.NET Core 构建的 API 的 Swagger 工具.直接从您的路由,控制器和模型生成漂亮的 API 文档,包括用于探 ...

    洛谷 P1112 波浪数

    题目描述 波浪数是在一对数字之间交替转换的数,如 121212112121211212121 ,双重波浪数则是指在两种进制下都是波浪数的数,如十进制数 191919191919191919 是一个十进 ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值