空间数据库是一种具有列数据类型的数据库,专门用于存储空间对象——这些数据类型可被添加到数据库表中。存储的信息通常是地理性质的,如点的位置或湖泊的边界。空间数据库还提供用于查询和操作空间数据的函数和索引,可从结构化查询语言(SQL)等查询语言调用这些函数和索引,空间数据库通常只用作空间数据的存储容器,但它能做的远不止这些。虽然空间数据库本质上不必是关系数据库,但其中的大多数都是关系数据库,它集存储工具、分析工具和组织工具于一体。
初步了解PostGIS
PostGIS是一个免费的开源数据库,在空间方面它支持免费开源的PostgreSQL对象-关系数据库管理系统。
为什么选择PostGIS
PosrGIS通过一下支持项目得到增强。
Proj:提供坐标转换功能,现已进入第七代。
几何开源引擎:高级几何处理功能。
地理空间数据抽象库:提供高级栅格处理功能。
计算几何算法库:提供高级3D分析功能。
PostGIS的基础是PostgreSQL对象-关系数据库管理系统,它提供事务支持、空间对象的Gist索引支持和现成的查询管理程序。
强大的PostGIS
PostGIS为PostgreSQL提供了许多空间运算符、空间函数、空间数据类型和空间索引增强功能。
特征:
与GeoJSON、Keyhole标记语言(Keyhole Markup Language,KML)和Mapbox矢量切片(Mapbox Vector Tiles,MVT)搭配使用的函数,允许Web应用程序直接与PostGIS对话,而不需要额外的序列化方案或转换。
远远超出基本几何图形处理的综合几何图形处理函数,包括修复无效几何图形以及简化和解构几何图形的函数。
内置的3D和拓扑支持
三百多个无缝操作,用于支持矢量和栅格协同工作,以及两个体系之间的转换。
GeoJSON是JSON的扩展,用于表示JavaScript对象,添加了对地理对象的JSO标准支持。
KML是Keyhole开发的一种XML格式,最初用于谷歌的地图产品,后来得到了各种地图API的支持。
Mapbox矢量切片(MVT)是Mapbox推广的一种二进制矢量格式,它以二进制矢量数据切片的形式显示数据,支持矢量数据的客户端样式,通常比标准栅格切片更轻便,而且可用于缩放比例。
建立在PostgreSQL之上
PostGIS之所以被建立在PostSQL平台上,主要原因是PostgreSQL为构建新的类型和运算符及控制索引运算符提供了扩展上的便利。
数据类型
PostGIS提供四种关键的空间类型:几何(geometry)、地理(geography)、栅格(raster)和拓扑(topology)。
几何——平面类型。他是第一个模型,并且仍是PostGIS支持的最流行的类型,是其它类型的基础。使用笛卡尔数学。
地理——球面打的测量类型。线和多边形画在地球的曲面上,所以他们是弯曲的,而不是直线的。PostGIS2.2引入了对任意打大地测量空间参考系统的支持,这意味着你可以将geography用于其他星球。
栅格——多波段单元类型。栅格将世界建模为矩形单元网格,每个矩形单元网格包含一个数值矩阵。
拓扑——关系模型类型。拓扑将世界建模为由连接的点、边和面组成的网络。对象由这些元素组成。并可以与其它对象共享这些元素。拓扑中有两个相关概念:定义了每个事物由哪些元素组成的网络和路由。
网络拓扑确保当你更改一个对象的边缘时,共享该边缘的其他对象也会相应的更改。路由通常通过一个长期支持的名为pgRouting的附件组件与PostGIS搭配使用,它不仅关心连通性,还关心连通性的成本。
这四种类型可以共存于同一个数据库中,甚至可以作为同一个表中的单独列。
几何类型
在二维空间中,可以用三个构建模块表示所有的地理实体:点、线和多边形。
几何类型将世界视为一个平坦的笛卡尔网格。
地理类型
对于相距较远的两个地点时,几何类型不再适用,计算记录可以通过添加正弦余弦计算,但是面积很难处理。
更好的解决方案是使用一组基于大地坐标的数据类型——地理,它为PostGIS用户屏蔽了数学的复杂性。不过地理提供的函数更少,并且在速度上落后于集合类型。地理中有相同的点、线和多边形数据类型,这些线和多边形符合地球的曲线。
栅格类型
几何和地理是矢量式数据类型。一般来说,任何能用(含墨水)超细笔描绘的东西都适合使用矢量表示法。矢量非常适用于建模设计或构造特征。栅格数据就像是马赛克。
栅格中的每种颜色称为波段。像素代表地理空间中的某个区域。
栅格数据通常来自辅助数据集,且经常充当生成矢量数据的原料。因此,与矢量数据相比,栅格数据源更多。PostGIS允许将矢量数据叠加到栅格数据上,反之亦然。
拓扑类型
拓扑模型以拼图视角呈现世界的。拓扑识别到地理特征的内在互联特性,并利用它来帮助你更好地管理数据。
拓扑与地理特征的确切形状和地点无关,但与地理特征的内在特性有关。
Comments