1、MySQL地理空间数据类型

POINT,存储一个位置点数据

LINESTRING,存储一条线数据

POLYGON,存储一个多边形数据

MULTIPOINT,存储多个位置点数据

MULTILINESTRING,存储多条线数据

MULTIPOLYGON,存储多个多边形数据

GEOMETRY,可以存储任何POINT,LINESTRING,POLYGON 的数据

GEOMETRYCOLLECTION,可以存储任何空间数据类型的集合

创建一个带有空间数据类型的表:

CREATE TABLE geom (g GEOMETRY NOT NULL);

插入空间数据:

INSERT INTO geom VALUES (ST_GeomFromText(‘POINT(1 1)’));

查询空间数据:

SELECT ST_AsText(g) FROM geom;

查询时要加上ST_AsText()函数,将空间数据以WKT文本格式显示出来,如果不用ST_AsText()函数转换,那么查询出来的空间数据将是一串二进制符号,无法阅读。

2、MySQL支持的地理空间数据格式

地理空间数据通常以文本方式来描述,比如一个点可以描述为 POINT(15 20),再使用 ST_GeomFromText()函数将文本转成MySQL内部的地理空间数据,下面列出常用的地理空间数据表示方法。

POINT:

SELECT ST_GeomFromText(‘POINT(15 20)’);

LINESTRING:

SELECT ST_GeomFromText(‘LINESTRING(0 0, 10 10, 20 25, 50 60)’);

SELECT ST_LineStringFromText(‘LINESTRING(0 0, 10 10, 20 25, 50 60)’);

POLYGON:

SELECT ST_GeomFromText(‘POLYGON((0 0,10 0,10 10,0 10,0 0),(5 5,7 5,7 7,5 7, 5 5))’);

SELECT ST_PolygonFromText(‘POLYGON((0 0,10 0,10 10,0 10,0 0),(5 5,7 5,7 7,5 7, 5 5))’);

MULTIPOINT:

SELECT ST_MPointFromText(‘MULTIPOINT (1 1, 2 2, 3 3)’);

SELECT ST_MPointFromText(‘MULTIPOINT ((1 1), (2 2), (3 3))’);

MULTILINESTRING:

SELECT ST_GeomFromText(‘MULTILINESTRING((10 10, 20 20), (15 15, 30 15))’);

MULTIPOLYGON:

SELECT ST_GeomFromText(‘MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0)),((5 5,7 5,7 7,5 7, 5 5)))’);

GEOMETRYCOLLECTION:

SELECT ST_GeomFromText(‘GEOMETRYCOLLECTION(POINT(10 10), POINT(30 30), LINESTRING(15 15, 20 20))’);

SELECT ST_GeomCollFromText(‘GEOMETRYCOLLECTION(POINT(10 10), POINT(30 30), LINESTRING(15 15, 20 20))’);

3、MySQL地理空间索引

创建空间索引的字段必须为NOT NULL,否则创建空间索引报错。

创建表的同时创建空间索引:

CREATE TABLE geom (g GEOMETRY NOT NULL, SPATIAL INDEX(g));

ALTER TABLE方式创建空间索引:

CREATE TABLE geom (g GEOMETRY NOT NULL);

ALTER TABLE geom ADD SPATIAL INDEX(g);

删除空间索引:

ALTER TABLE geom DROP INDEX g;

创建好索引之后,就可以在一些空间查询函数中使用索引,比如 MBRContains(), MBRWithin()

例如:

mysql> SET @poly = ‘Polygon((30000 15000, 31000 15000, 31000 16000, 30000 16000, 30000 15000))’;

mysql> SELECT fid,ST_AsText(g) FROM geom WHERE MBRContains(ST_GeomFromText(@poly),g);

也可以使用explain 来查看select空间查询有没有走空间索引,用法与普通索引类似,不再赘述。

4、MySQL中常用的地理空间函数

MySQL提供了很多地理空间数据相关的函数,包括地理空间对象构造函数,地理空间分析函数等等,种类非常丰富,能够实现各种复杂的地理空间应用。比如

查询两个地理对象之间的距离,可使用函数 ST_Distance()。

判断两个地理对象是否有包含关系,可使用函数 ST_Contains()。

判断一个地理对象是否穿过另外一个地理对象,可使用函数 ST_Crosses()。

判断两个地理对象是否相交,可使用函数 ST_Intersects()。

mysql 地理空间支持_MySQL数据类型-地理空间数据类型相关推荐

  1. mysql表空间权限_MySQL InnoDB表空间加密示例详解

    前言 从 MySQL5.7.11开始,MySQL对InnoDB支持存储在单独表空间中的表的数据加密 .此功能为物理表空间数据文件提供静态加密.该加密是在引擎内部数据页级别的加密手段,在数据页写入文件系 ...

  2. mysql清除表空间导入_MySQL 清除表空间碎片

    碎片产生的原因 (1)表的存储会出现碎片化,每当删除了一行内容,该段空间就会变为空白.被留空,而在一段时间内的大量删除操作,会使这种留空的空间变得比存储列表内容所使用的空间更大; (2)当执行插入操作 ...

  3. mysql表空间不足_MySQL Innodb表空间不足的处理方法 风好大

    官方给出的解决方案: 添加和删除 InnoDB 数据和日志文件 这一节描述在InnoDB表空间耗尽空间之时,或者你想要改变日志文件大小之时,你可以做的一些事情. 最简单的,增加InnoDB表空间大小的 ...

  4. mysql schema数据混乱_MySQL之Schema与数据类型优化

    选择优化的数据类型 MySQL支持的数据类型非常多,选择正确的数据类型对于获得高性能至关重要.不管存储哪种类型的数据,下面几个简单的原则都有助于做出更好的选择: 更小的通常更好 一般情况下,应该尽量使 ...

  5. mysql客户端不支持_MySQL 8.0 - 客户端不支持服务器请求的身份验证协议; 考虑升级MySQL客户端...

    MySQL 8.0 - 客户端不支持服务器请求的身份验证协议; 考虑升级MySQL客户端 我是node.js和MySQL初学者,我刚开始设置并尝试一些基本代码.但是,由于某种原因,我甚至无法与服务器建 ...

  6. mysql 配置中文支持_mysql 中文支持

    //实际上,最新mySQL以上两句已经失效,在命令行中先exit   然后重新登录可以实现这个目的 重新连接数据库,查看编码,数据表内容 1. mysql> show variables lik ...

  7. mysql 增加bit列_mysql – 如何对BIT(…)数据类型列使用substr(…)?

    我有这张桌子: // numbers +---------+------------+ | id | numb | +---------+------------+ | int(11) | bit(1 ...

  8. [GIS原理] 资源共享-SIG|服务篇(服务型GIS、SOA架构、Web Services技术、GIS服务、地理空间服务聚合、地理空间服务网络)

    文章目录 资源共享 空间信息栅格SIG 服务篇 资源共享 空间信息栅格SIG 说明 信息格网 [what]Information Grid ①利用现有的网络基础设施.协议规范.Web和数据库技术,为用 ...

  9. mysql 查看表v空间自增涨_MySQL InnoDB表空间加密

    从 MySQL5.7.11开始,MySQL对InnoDB支持存储在单独表空间中的表的数据加密 .此功能为物理表空间数据文件提供静态加密.该加密是在引擎内部数据页级别的加密手段,在数据页写入文件系统时加 ...

最新文章

  1. java aio_java中的AIO
  2. 我的Android进阶之旅------gt;怎样在多个LinearLayout中加入分隔线
  3. Hdu 1754 . I Hate It
  4. 培训是一种乐趣(3)
  5. 《数据库SQL实战》获取当前(to_date='9999-01-01')薪水第二多的员工的emp_no以及其对应的薪水salary
  6. Mpvue微信小程序时间消耗进度条组件的实现
  7. 中河广播服务器怎么连接无线话筒,无线话筒怎么连接音响 话筒连接音响方法...
  8. 纵观计算机网络发展历程,人工智能在计算机网络技术中的应用分析
  9. 没有别家钱多,没有别家人多,小型培训机构招生怎么做?
  10. php ajax base64,php,javascript_AJax post BASE64编码到后台,php,javascript - phpStudy
  11. 《JAVA程序设计基础与应用》pdf 附下载链接
  12. PSP3000购机心得
  13. php数组递归函数返回值,PHP递归函数返回值使用实例
  14. vue组件库开发遇到的regeneratorRuntime is not defined
  15. 数据结构期末复习速成
  16. 微核Linux(Tiny Core Linux)
  17. 能够创建时间循环并飞檐走壁的 VR 游戏 TRANSPOSE正式上线
  18. 完整的项目管理流程包括什么?
  19. GMT所提供的所有命令和其功能
  20. Mac磁盘工具教程 – 抹掉并重新格式化硬盘/移动硬盘

热门文章

  1. IDEA的一些快捷键被占用问题的详解
  2. excel图表技巧:如何制作自动刷新的动态喜报
  3. LMAX高并发系统架构
  4. Linux环境基础开发工具使用(上)
  5. 杰夫•贝索斯收购《华盛顿邮报》:不是一笔生意,是一种文化的表现
  6. 从阿里云OSS上下载文件的总结
  7. 2022-2028全球临床前医疗设备检测服务行业调研及趋势分析报告
  8. 青龙面板详细搭建教程
  9. 数的三次方(C++算法——二分)
  10. shopex 4.8.5.45144注入和远程shell写入漏洞