空间数据库管理系统哪家强?

作者: 不剪发的Tony老师
毕业于北京航空航天大学,十多年数据库管理与开发经验,目前在一家全球性的金融公司从事数据库架构设计。CSDN学院签约讲师以及GitChat专栏作者。csdn上的博客收藏于以下地址:https://tonydong.blog.csdn.net


文章目录

        PostGIS
        SpatiaLite
        H2GIS
        rasdaman
        GeoMesa
        更多

    🍺博学之,审问之,慎思之,明辨之,笃行之。——《中庸》

大家好!我是只谈技术不剪发的 Tony 老师。

空间数据库管理系统(Spatial DBMS)是一种用于高效存储、操作和查询空间数据的数据库管理系统。空间数据代表了几何空间中的对象,例如点、线和多边形。

空间数据库管理系统通常为空间数据提供了专用的数据类型,同时为了优化空间数据集的访问提供了空间索引。例如,空间索引可以高效地检索距离某一对象一定距离之内的数据点。另外,空间数据库管理系统还提供了操作空间对象或者执行基于空间对象的操作功能。例如,计算对象之间的距离、对象合并或交叉以及计算对象的属性(例如多边形的面积)。

地理空间数据(Geospatial data)是空间数据的一个重要子集,用于处理描述地球表面位置的数据。地理信息系统(Geographic information systems、GIS)可以处理地理空间数据。

时空数据(Spatio-temporal data)是另一种常见的相关数据类型,它们将空间数据与时间戳相结合,从而为数据存储和操作提供了另一个额外的维度。

下面给大家介绍几个主流的空间数据库管理系统。如果你觉得文章有用,欢迎评论📝、点赞👍、推荐🎁
PostGIS

PostGIS

PostGIS 是基于 PostgreSQL 对象关系数据库的空间数据库扩展,它增加了对地理对象的支持,允许使用 SQL 执行位置查询。

PostGIS 增加了一些额外的数据类型(几何、地理、格栅类型等)和相关的函数、操作符以及索引(基于 GiST 的 R-树空间索引)支持,增强了 PostgreSQL 核心功能,使其成为了一个高性能、功能丰富、健壮的空间数据库管理系统。

PostGIS 提供的功能包括:

    基于 SQL 处理和分析矢量和栅格数据的功能,包括拼接、切割、变形、重新分类和收集/合并等。
    用于细粒度栅格处理的栅格地图代数。
    可直接用于 SQL 语句的矢量和栅格数据的空间重投影函数。
    支持通过命令行和 GUI 工具导入/导出 ESRI shapefile 矢量数据,同时通过其他第三方开源工具支持更多格式的导入/导出。
    用于导入多种标准格式(GeoTiff、NetCDF、PNG、JPG 等)数据的命令行工具。
    使用 SQL 展示和导入标准文本格式(KML、GML、GeoJSON、GeoHash 以及 WKT 等)的矢量数据。
    使用 SQL 展示各种标准格式(GeoTIFF、PNG、JPG、NetCDF 等)的格栅数据。
    可直接用于 SQL 语句的无缝格栅/矢量数据处理函数,例如按几何区域拉伸像素值、按区域运行统计信息、按几何体剪裁光栅以及光栅的矢量化等。
    3D 对象的支持,包括空间索引和函数。
    网络拓扑支持。
    Tiger Loader / Geocoder/ 反向 Geocoder / 使用美国人口普查 Tiger 数据。

PostGIS 是一个开源空间信息基金会 OSGeo 项目,遵循开放地理空间信息联盟 OGC 提供的 Simple Features for SQL Specification 规范。PostGIS 基于 GNU 通用公开许可证(GPLv2 或者更高版本)发行,目前最新的版本为 PostGIS 3.1.2。

另外,pgRouting 为 PostGIS 提供了地理空间路由功能。
SpatiaLite

SpatiaLite

SpatiaLite 是一个基于 SQLite 的开源代码库,为后者提供了成熟的空间 SQL 功能支持。SpatiaLite 被完美地整合到 SQLite 之中,从而提供了一个完整而强大的空间数据库管理系统(兼容 OGC-SFS 规范 )。

SQLite + SpatiaLite 可以作为 PostgreSQL + PostGIS 的替代产品。

SpatiaLite 基于 MPL 1.1、GPL v2.0 以及更高版本或者 LGPL v2.1 以及更高版本协议,目前最新的版本为 SpatiaLite 5.0.1。

另外,spatialite_gui 是 SpatiaLite 的图形用户界面,spatialite-tools 是 SpatiaLite 的命令行工具,librasterlite2 则为 SpatiaLite 提供了存储和检索大型格栅数据的功能。
H2GIS

H2GIS

H2GIS 是一个基于 H2 数据库的空间扩展,遵循开放地理空间信息联盟 OGC 提供的 Simple Features for SQL Specification 规范。

H2GIS 基于 LGPL 3 协议,目前最新的版本为 H2GIS 1.5.0。

另外,H2Network 为 H2GIS 提供了地理空间路由功能。
rasdaman

rasdaman(raster data manager)是一个灵活可扩展的数组处理引擎,允许管理和分析大规模的多维数组,例如地球、空间、生命科学中的传感器、图像、仿真以及统计数据。从简单的地理图像服务到复杂的分析,rasdaman 提供了关于时空格栅数据的全功能支持。rasdaman 支持各种常用的客户端,包括 Leaflet、NASA WorldWind、QGIS、R 以及 python 等。

rasdaman
rasdaman 的主要特点包括:

    快速:在小数秒内并发访问百亿亿级归档和 TB 数量级对象。
    可扩展:从笔记本到高并发、高可用的云和服务器集群。
    灵活性:使用“数组 SQL”进行导航、提取、处理以及即席查询。数组数据可用存储在传统数据库、rasdaman 优化文件或者已有归档中。
    开放标准:遵循 OGC 标准 WMS、WCS、WCS-T以及 WCPS。
    免费:由 Jacobs University 管理的一个活跃、成熟的开源项目,由 开源空间信息基金会 OSGeo 孵化。
    节约成本:智能,经济的资源利用和免费的源代码。

GeoMesa

GeoMesa

GeoMesa 是一个开源工具套件,支持基于分布式计算系统的大规模地理空间数据查询和分析,可以让用户管理和分析物联网、社交媒体、追踪以及移动电话应用程序的海量时空数据集。GeoMesa 属于 Eclipse 基金会 LocationTech 项目组的一员。

GeoMesa 提供了基于 Accumulo、HBase、Google Bigtable、Redis 以及 Cassandra 等数据库的时空索引,从而能够存储大量的点、线和多边形数据。GeoMesa 还通过在 Apache Kafka 之上构建分层空间语义来提供时空数据的近实时流处理。GeoMesa 通过 GeoServer 集成了各种遵循开放地理空间信息联盟 OGC 的客户端 API 和协议,例如 WFS 和 WMS。GeoMesa 支持基于 Apache Spark 的自定义分布式地理空间分析。

GeoMesa 基于 Apache Version 2.0 协议,目前最新的版本为 GeoMesa 3.2.0。
更多

除了以上介绍的数据库系统之外,许多传统的数据库管理系统也提供了空间数据的支持,包括 Oracle、MySQL、Microsoft SQL Server、Db2、MongoDB、Redis、Elasticsearch 等,具体可以查看相关数据库文档。