1.介绍
1.1、什么是空间数据库
postgis是一个空间数据库,oracle spatial和sql server也是一个空间数据库,那什么是空间数据库,如何让一个普通数据库变为一个空间数据库
这个问题的回答就是
Spatial databases store and manipulate spatial objects like any other object in the database.
空间数据库就像普通数据库存储普通数据一样存储空间数据
下面简要介绍了空间数据库的演变,然后回顾了将空间数据与数据库相关联的三个方面——数据类型、索引和函数。
1.空间数据类型是指点、线和多边形等形状;
2.采用多维空间索引的方法可以有效地处理空间操作;
3.在SQL中提出的空间函数,是用于查询空间属性和关系。
组合的空间数据类型、索引和函数为优化性能和分析提供了一个灵活的结构。
1.1.1、写在开始
在传统的第一代GIS实现中,所有的空间数据都存储在平面文件中,需要特殊的GIS软件来解释和操作数据。这些第一代管理系统旨在满足用户需要的所有数据都在用户的组织域内的用户的需求。它们是专门为处理空间数据而构建的专有的独立系统。
第二代空间系统将一些数据存储在关系数据库中(通常是“属性”或非空间部分),但仍然缺乏直接集成所提供的灵活性。
当人们开始将空间特征视为一类数据库对象时,真正的空间数据库就诞生了。
空间数据库将空间数据与关系数据库完全集成。系统方向从以gis为中心转变为以数据库为中心。

空间数据库管理系统可以用于地理世界之外的应用。空间数据库用于管理与人体解剖结构、大规模集成电路、分子结构和电磁场等相关的数据。
1.1.2 空间数据类型
一个普通的数据库具有字符串、数字和日期。空间数据库添加了用来表示地理特征的其他(空间)类型。这些空间数据类型抽象并封装了空间结构,如边界和维度。在许多方面,空间数据类型可以简单地理解为形状。
空间数据类型被组织在一个类型层次结构中。每个子类型都继承其超级类型的结构(属性)和行为(方法或函数)。
1.1.3 空间索引和边界框
普通数据库提供索引,允许快速随机访问数据子集。对标准类型(数字、字符串、日期)的索引通常使用b树索引来完成。
b树使用自然排序顺序对数据进行分区,以将数据放到层次树中。数字、字符串和日期的自然排序顺序很容易确定——每个值都小于、大于或等于每个其他的值。
但是由于多边形可以重叠,可以彼此包含,并且在二维(或更多)空间中排列,因此b树不能用来有效地索引它们。真实的空间数据库提供了一个“空间索引”,用来回答“哪些对象在这个特定的边界框中?”
边界框是与坐标轴平行的最小的矩形,能够包含一个给定的特征。

各种数据库实现的实际空间索引差异很大。最常见的实现是R-Tree和四叉树索引(在PostGIS中使用),但在其他空间数据库中也实现了基于网格的索引和GeoHash索引。
1.1.4 空间函数
为了在查询过程中操作数据,普通数据库提供了一些功能,如连接字符串、对字符串执行哈希操作、对数字进行数学计算以及从日期中提取信息。
空间数据库提供了一组完整的函数,用于分析几何组件、确定空间关系和操作几何图形。这些空间功能是任何空间项目的基石。
大部分空间功能可分为以下五类之一:
1.Conversion:在几何图形和外部数据格式之间进行转换的函数。
2.Management:管理有关空间表和PostGIS管理的信息的功能。
3.Retrieval:检索几何图形的属性和度量值的函数。
4.Comparison:比较两种几何形状的空间关系的函数。
5.Generation:从其他对象中生成新几何图形的函数。
可能的函数列表非常大,但是一组公共的函数由OGC SFSQL定义,并由PostGIS实现(以及其他有用的函数)。
1.2 postgis是什么
PostGIS通过增加对空间类型、空间索引和空间功能这三个特性的支持,将PostgreSQL数据库管理系统转化为空间数据库。由于它是建立在PostgreSQL上的,因此PostGIS自动继承了重要的“企业”特性以及可供实现的开放标准。
1.2.1 但postgresql又是什么?
PostgreSQL是一个功能强大的关系数据库管理系统(RDBMS)。它是在bsd风格的许可下发布的,因此是免费的开源软件。与许多其他开源程序一样,PostgreSQL不由任何一家公司控制,但有一个全球的开发人员和公司社区来开发它。
PostgreSQL从一开始就考虑到了类型扩展——能够在运行时添加新的数据类型、函数和索引。因此,PostGIS扩展可以由一个单独的开发团队开发,但仍然非常紧密地集成到核心的PostgreSQL数据库中。
1.2.1.1 为什么选择PostgreSQL?
熟悉开源数据库的人的一个常见问题是,“为什么PostGIS不是建立在MySQL上的?”。
PostgreSQL 有如下优势:
- 默认情况下已证明的可靠性和事务完整性(ACID)
- 完善支持SQL标准(完整的SQL92)
- 可插拔的类型扩展和功能扩展
- 面向社区的发展模式
- 不限制支持大型GIS对象的列大小(“TOAST”元组)
- 通用索引结构(GiST),以允许R-Tree索引
- 易于添加自定义函数
总的来说,PostgreSQL提供了一个非常简单的开发路径来添加新的空间类型。在专有领域,只有Illustra(现在的Informix通用服务器)允许如此简单的扩展。这不是巧合;Illustra是对20世纪80年代原始的PostgreSQL代码库的专有重构。
因为向PostgreSQL添加类型的开发路径非常简单,所以从那里开始是有意义的。当MySQL在4.1版本中发布了基本的空间类型时,PostGIS团队查看了他们的代码,这个练习加强了使用PostgreSQL的最初决定。
因为MySQL空间对象必须作为特殊情况在字符串类型上被黑客攻击,所以MySQL代码分布在整个代码库上。PostGIS0.1的开发时间不到一个月。做一个“MyGIS”0.1将需要更长的时间,因此,可能永远不会看到曙光。
1.2.2 为什么不是文件?
自GIS软件首次编写以来,shapefile(以及其他格式,如Esri文件地理数据库和geo软件包)一直是存储和与空间数据交互的标准方式。但是,这些“平面”文件有以下缺点:
1.文件需要特殊的软件来读写。SQL是一个用于随机数据访问和分析的抽象版本。如果没有这个抽象,您将需要自己编写所有的访问和分析代码。
2.并发用户可能会导致损坏和速度放缓。虽然可以编写额外的代码,以确保对同一文件的多个写入不会损坏数据,但当您解决问题并解决相关的性能问题时,您将已经编写了数据库系统的大部分。为什么不仅仅使用一个标准的数据库呢?
3复杂的问题需要复杂的软件来回答。 复杂而有趣的问题(空间连接、聚合等)可以在数据库中的一行SQL中表达,在针对文件进行编程时,需要数百行专门的代码来回答。
PostGIS的大多数用户正在设置系统,希望多个应用程序将访问数据,因此拥有一个标准的SQL访问方法就简化了部署和开发。一些用户正在处理大型数据集;对于文件,它们可能会被分割成多个文件,但在数据库中,它们可以存储为单个大表。
总之,对多用户的支持、复杂的特殊查询和对大型数据集的性能的结合是使空间数据库区别于基于文件的系统的原因。
1.2.3 postgis的简要历史
2001年5月,Refractions Research 公司发布了第一版的PostGIS。PostGIS0.1有对象、索引和少数几个函数。结果是一个适合存储和检索的数据库,但不适合分析。
随着功能数量的增加,对组织原则的需要变得很明显。来自开放地理空间联盟的“SQL的简单特性”(SFSQL)规范为这种结构提供了功能命名和需求的指导方针。
由于PostGIS对简单分析和空间连接的支持,Mapserver成为第一个提供数据库中数据可视化的外部应用程序。
在接下来的几年里,POSTGIS功能的数量有所增加,但它的能力仍然有限。许多最有趣的函数(例如,ST_Intersects()、ST_Buffer()、ST_Union())都非常难以编码。从零开始写它们要付出多年的工作。
幸运的是,第二个项目,“Geometry Engine, Open Source”或GEOS,出现了。GEOS库为实现SFSQL规范提供了必要的算法。通过在GEOS中的链接,PostGIS通过0.8版本提供了对SFSQL的完全支持。
随着PostGIS数据容量的增长,另一个问题浮出水面:用于存储几何图形的表示被证明相对低效。对于像点和短线这样的小对象,表示中的元数据具有高达300%的开销。出于表现上的原因,有必要坚持饮食。通过缩小元数据头和所需的维度,大大降低了开销。在PostGIS1.0中,这种新的、更快、轻量级的表示成为默认的。
最近发布的PostGIS继续添加特性和性能改进,以及对PostgreSQL核心系统中的新特性的支持。
1.2.4 谁使用PostGIS
有关完整的案例研究列表,请参见PostGIS case studies页面。
1.2.4.1 法国国家地理研究所
IGN是法国的国家测绘机构,它使用PostGIS来存储该国的高分辨率地形图“BDUni”。BDUni拥有超过1亿个功能,由100多名现场工作人员维护,他们每天验证观察结果并向数据库添加新的映射。IGN安装使用数据库事务系统来确保更新过程中的一致性,并使用热备用系统在系统故障时保持正常运行时间。
1.2.4.2 RedFin
RedFin是一家房地产代理公司,拥有基于网络的服务来探索房产和估价。他们的系统最初是建立在MySQL之上的,但他们发现移动到PostgreSQL和PostGIS在性能和可靠性方面提供了巨大的好处。
2.2.5 哪些程序支持PostGIS
PostGIS已经成为一个广泛使用的空间数据库,支持使用它存储和检索数据的第三方程序的数量也在增加。支持PostGIS的程序包括服务器和桌面系统上的开源和专有软件。
下表显示了一些利用PostGIS的软件的列表:

网友评论