欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

MySQL空间数据库

程序员文章站 2022-04-13 22:08:47
...

版权声明:本文为博主原创文章,未经博主允许不得转载。转载及其他事宜请联系QQ号:3234649941

空间数据库

遵从OpenGIS联盟(OGC)的规范,MySQL实施了空间扩展,OGC是一个由250多家公司、代理机构和大学参与的国际联盟,负责开发公开的概念解决方案,这类解决方案对所有用来管理空间数据的应用都是有用的。

1997年,OpenGIS联盟发布了针对SQL的OpenGIS®简单的特征规范,在该文档中,提出了扩展SQL RDBMS以支持空间数据的一些概念性方法。

MYSQL实施了OGC建议的具有Geometry类型的SQL环境的一个子集。该术语指的是用一组集合类型扩展的环境。具有几何值的SQL列是作为拥有集合类型的列实施的。该规范描述了SQL几何类型集合,以及作用在这些类型上用于创建和分析几何值的函数。

开放式地理信息系统(Open GIS)是指在计算机和通信环境下,根据行业标准和接口所建立起来的地理信息系统。它不仅使数据能在应用系统内流动,还能在系统间流动。Open GIS是为了使不同的地理信息系统软件之间具有良好的互操作性,以及在异构分布数据库中实现信息共享的途径。Open GIS规范是由开放地理信息系统协会(Open GIS Consortium,简称OGC)制定的一系列开放标准和接口。

openGIS 的优点

openGIS的优点有以下四大点

  1. 互操作性:不同地理信息系统软件之间连接、信息交换没有障碍。
  2. 可扩展性:硬件方面可在不同软件、不同档次的计算机上运行,软件方面增加新的地学空间数据和地学数据处理功能。
  3. 技术公开性:开放思想主要是对用户公开.公开源代码及规范说明是重要的途径之一。
  4. 可移植性独立于软件、硬件及网络环境,不需修改便可在不同的计算机上运行。

空间数据库的优势

  1. 数据量庞大:空间数据库面向的是地学及其相关对象,而在客观世界中它们所涉及的往往都是地球表面信息、地质信息、大气信息等及其复杂的现象和信息,所以描述这些信息的数据容量很大,容量通常达到GB级。
  2. 具有高可访问性:空间信息系统要求具有强大的信息检索和分析能力,这是建立在空间数据库基础上的,需要高效访问大量数据。
  3. 应用范围广
  4. 空间数据模型复杂
    空间数据库存储的不是单一性质的数据,而是涵盖了几乎所有与地理相关的数据类型,这些数据类型主要可以分为3类:
    4.1. 属性数据:与一般数据库基本一致,主要用来描述地学现象的各种属性,一般包括数字、文字、日期类型。
    4.2.图形图像数据:与一般数据库不同,空间数据库系统中大量的数据借助于图形图像来描述。
    4.3.空间关系数据:存储拓扑关系的数据,通常与图形数据是合二为一的。

几何模型

  1. geometry(非实例化) 几何型
  2. Point(可实例化的)点
  3. Curve(非实例化)曲线
  4. LineString(可实例化的)线串
  5. Line 线
  6. LinearRing 线性环
  7. Surface(非实例化)表面
  8. Polygon(可实例化的)多边形 即 面
  9. GeometryCollection(可实例化的)任何几何集合
  10. MultiPoint(可实例化的)多点
  11. MultiCurve(非实例化)多曲线
  12. MultiLineString(可实例化的)多线串
  13. MultiSurface(非实例化)多表面
  14. MultiPolygon(可实例化)多面

MySQL支持的空间数据类型

  1. Point:简单点
  2. Linestring:简单线
  3. Polygon:简单面
  4. MultiPoint:多点
  5. MultiLineString:多线
  6. MultiPolygon:多面
  7. GeometryCollection:任何几何集合

数据类型

  1. point
    point(25 12)
    注意,指定点坐标时不使用逗号分隔
  2. Linestring
    linestring(0 0,10 10,20 25,50 60)
    注意,点坐标对采用逗号隔开
  3. polypolygon
    polygon((0 0,10 0,10 10,0 10,0 0),(5 5,7 5,7 7,5 7,5 5))
  4. MultiPoint
    具有三个point值
    MultiPoint(0 0,20 20,60 60)
  5. MultiLineString
    具有两个LineString值
    MultiLineString((10 10,20 20),(15 15,30 15))
  6. MultiPolygon
    具有两个polygon值
    MultiPolygon(((0 0,10 0,10 10,0 10,0 0)),((5 5,7 5,7 7,5 7, 5 5)))
  7. GeometryCollection
    由2个Point值和1个LineString构成
    GeometryCollection(POINT(10 10), POINT(30 30), LINESTRING(15 15, 20 20))

WKT及WKB

WKT是一种文本标记语言,该格式由开放地理空间联盟(OGC)制定,用于表示矢量数据中的几何对象,在数据传输与数据库存储时,常用到它的二进制形式,即WKB。WKT与WKB在GIS中的重要作用在于,他们能利用文本简洁明了的表达矢量空间要素的几何信息,使得几何信息能以字段的形式存储于数据库中。
WKT相比WKB更方便人们理解,具有很高的可读性,下图以点线面3种基础矢量数据类型为例,简单说明点构线、线构面的构建关系。WKT中所有的数据类型都以点数据为基础,点坐标的XY值用空格隔开,坐标之间用逗号隔开

空间数据库表操作

建表

create table test1  (
id  int auto_increment primary key ,
shape  geometry
);

注意:值应以内部几何格式保存,你需将其从WKT或WKB格式转换为内部几何格式
插入数据

set @g='point(1 1)';insert into test1(shape) values(ST_GeomFromText(@g));
set @g='Linestring(1 1,1 2)';insert into test1(shape) values(ST_GeomFromText(@g));
set @g = 'POLYGON((0 0,10 0,10 10,0 10,0 0),(5 5,7 5,7 7,5 7, 5 5))';insert into test1(shape) values(ST_GeomFromText(@g));
set @g ='GEOMETRYCOLLECTION(POINT(1 1),LINESTRING(0 0,1 1,2 2,3 3,4 4))';insert into test1(shape) values(ST_GeomFromText(@g));

依次插入的分别是点,线,面,任何几何集合

查询数据
注意:查询数据需要将数据从内部几何格式转换为WKT

select ST_AsText(shape) from test1;