目录
1.数据存储
计算机中的数据在底层都是以二进制的形式存在的。
硬件上,大多数文件都是存储在磁盘上的。
软件上,可以通过文件系统(树形结构)、数据库(表格形式)来管理(本地)数据。
2.数据类型
在数据库中主要包括以下五大类数据类型:
整数类型:BIT、BOOL、TINY INT、SMALL INT、MEDIUM INT、 INT、 BIG INT;
浮点数类型:FLOAT、DOUBLE、DECIMAL;
字符串类型:CHAR、VARCHAR、TINY TEXT、TEXT、MEDIUM TEXT、LONGTEXT、TINY BLOB、BLOB、MEDIUM BLOB、LONG BLOB;
日期类型:Date、DateTime、TimeStamp、Time、Year;
其他数据类型:BINARY、VARBINARY、ENUM、SET、Geometry、Point、MultiPoint、LineString、MultiLineString、Polygon、GeometryCollection等。
而Geometry、Point、Polygon等就是用来表示空间数据的数据类型。
3.空间数据库与传统数据库的区别
传统数据库主要用于处理文本、数字、图像等普通数据
空间数据库可以处理地理位置相关的数据,如点、线、面、多边形等。空间数据库可以存储各种地理位置信息,如地图、卫星影像、地形图等。空间数据库中的数据可以通过空间查询语言(Spatial Query Language)进行查询,例如搜索某个区域内的所有地点或计算两点之间的距离等。
4.空间数据存储
空间数据包括两大部分,分别是属性以及图形。
如:北京这个点,其空间数据其包含属性(name、population、country,等),和图形(点的图形直接用(x,y)表示)。
普通属性使用数据库基本数据类型;
图形类型为geometry。geometry符合OGC联盟(开放地理空间信息联盟(Open Geospatial Consortium))规范,它是一个父类,其包含子类有point、linestring、polygon等。geometry存储有二进制WKB(Well-Known Binary)和文本WKT(Well-Known Text)。
为了提高数据库管理系统(DBMS)对空间数据的管理能力,国内外较为流行的主要集中在“关系型数据库+空间数据引擎”、“扩展对象关系型数据库”两方面。
关系型数据库+空间数据引擎:
“关系型数据库+空间数据引擎”通常是近年来由GIS厂商研发的一种中间件解决方案。用户将自己的空间数据交给独立于数据库之外的空间数据引擎,由空间数据引擎来组织空间数据在关系型数据库中的存储;当用户需要访问数据的时候,再通知空间数据引擎,由引擎从关系型数据库中取出数据,并转化为客户可以使用的方式。(中间件技术)
因此,关系型数据库仅仅是存放空间数据的容器,而空间数据引擎则是空间数据进出该容器的转换通道(索引?)。这类系统的优点是,访问速度快、支持通用的关系数据库管理系统、空间数据按BLOB存取、可跨数据库平台、与特定GIS平台结合紧密、应用灵活。其缺点主要表现为,空间操作和处理无法在数据库内核中实现、数据模型较为复杂、扩展SQL比较困难、不易实现数据共享与互操作。
扩展对象关系型数据库管理系统:
扩展对象关系型数据库管理系统是由数据库厂商研发的管理空间数据一种解决方案。由于关系型数据库难以管理非结构化数据(包括空间数据),数据库厂商借鉴面向对象技术,发展了对象关系型数据库管理系统。此系统支持抽象的数据类型(ADT)及其相关操作的定义;用户利用这种能力可以增加空间数据类型及相关函数,从而将空间数据类型与函数就从中间件(空间数据引擎)转移到了数据库管理系统中,客户也不必采用空间数据引擎的专用接口进行编程,而是使用增加了的空间数据类型和函数的标准扩展型SQL语言来操作空间数据。
目前开源空间信息软件领域最性能优秀的数据库软件当属PostgreSQL数据库,而构建在其上的空间对象扩展模块PostGIS则使得其成为一个真正的大型空间数据库。
5.空间索引
若要在空间数据库里快速地查找到所需要的空间信息,就需要为空间数据建立空间索引。索引通常是由关键字和存储地址组成。关键字表示数据记录,地址(指针)表示记录在数据库中的位置。索引就是一张关键字与地址的对照表。
所谓空间索引就是依据空间实体的位置和形状或空间实体之间的某种空间关系按照一定的顺序排列的一种数据结构。
常见的空间索引结构有:
(1)树结构
(2)网格
(3)空间填充曲线