为什么需要使用 Geopackage 文件而不是 shapefile 或 GeoJSON

文章目录
-
现行矢量数据的标准格式
-
Shapefile存在的主要问题
-
GeoJSON存在的主要问题
-
简述Geopackage的概念
-
其优点主要体现在以下几个方面:
- Geopackage2Shapefile
当前矢量数据标准格式
如果你长期致力于矢量数据分析与空间建模, 你必定会对 shapefile 和 geojson 这两个文件格式耳熟能详。这些 ES/ħ ESE 被公认为存储地理空间数据与执行各种空间分析任务最为常用的矢量数据格式。其中 GeoJSON 在将地理数据导入Web应用程序方面始终占据着优先位置。然而, 当您希望增强工作能力, 构建支持大规模部署的集成化与自动化的工作流时, shapefile 和 GeoJSON 就会暴露出各自的局限性。而 Geopackage 格式在这方面恰恰弥补了这些不足之处, 因此我们强烈推荐采用Geopackage文件而非传统的shapefile或GeoJSON格式来进行项目开发。让我们深入探讨这一技术细节吧!
Shapefile 的问题
自其开发以来,Shapefiles 已经沿用了相当长的时间。于 1990 年代初推出这一数据格式的公司——ESRI,在随后的时间里迅速发展起来并获得了广泛的知名度。自推出以来便迅速成为一种被广泛采用的标准数据格式之一,在地理信息系统(GIS)领域发挥着重要作用。该种空间数据存储方案不仅便于不同用户在同一平台或网络环境中进行处理和共享矢量数据(vector data),还能够有效整合相关的属性信息(metadata)。尽管应用范围较广,在现代应用中仍面临诸多局限性。
- Shapefile 是一种以多文件形式存在的矢量数据格式。每个保存的矢量图层都至少包含三个核心文件:.shp 表示形状数据本身;.shx 用于优化读取 .shp 文件时的速度;而 .dbf 则用于存储与图形相关的元数据信息。此外还有其他具有不同扩展名的附加文件以支持完整的功能集。因此,在分享 shapefile 时,请确保共享完整的一层数据包。如果拥有多个图层,则会导致文件数量剧增。
- Shapefile 支持相关属性数据集的形式化存储类似于带有列标题的表格数据集但其特点在于对字段名称(字段缩写)的限制较为严格且存在一些表述不够精确的问题因为字段名称通常需要一定的描述性和标识性。
- Shapefile 的最大容量限制为2GB这意味着任何包含超过2GB特征的数据都无法直接导出为shapefile格式这可能导致在处理大数据集时遇到性能瓶颈。
- 另一个重要特性是shapefile无法在一个单一文件中存储多种几何类型例如点、线和面这使得其在处理复杂地理空间关系时会存在局限性。
- 随着shapefile规模的增长以及处理的数据属性列和行数量的增加其内部的数据结构将面临性能瓶颈特别是在使用QGIS等地理信息系统工具进行空间索引操作时效率会显著下降。
GeoJSON 的问题
GeoJSONs 的一部分构建旨在解决 shapefile 所带来的多文件问题。 GeoJSON 被开发为在Web应用程序中被广泛使用作为 JSON对象的一种扩展形式,并有效地解决了 shapefile 提出的一些问题。 但是尽管如此仍存在一些限制,
通常在处理具有属性的相似数量矢量特征时,在大多数情况下(尤其是 GeoJSON 格式),其文件大小接近于 shapefile 格式的两倍。
一般而言(特别是 GeoJSON 格式),缺少空间索引功能会导致处理大量操作变得较为不便。
当打开文件进行操作时(尤其是在使用 QGIS 地图进行探索),整个文件会一次性加载到内存中——这可能会在多种场景下造成困扰,并且对大型数据集来说尤为明显。
此外(相较于 shapefile 和 geopackages 格式),数据加载过程通常会耗费更多时间——然而其占用内存资源的程度却并未因此减少。
需要注意的是(根据个人经验判断),当文件大小超过某一阈值时(约 10-11 GB),功能可能会出现不完全读取的情况而导致数据丢失或损坏。
什么是Geopackage
由OGC开发作为地理空间信息的开放格式,他们将 GeoPackage 定义如下;
GeoPackage 是一种开放源代码的标准地理数据格式,在GIS领域被广泛应用于空间数据管理与共享。这种格式能够跨平台兼容并具备轻量化设计的特点。它不仅支持标准化格式还能自动解析地理数据文件并且其存储方案非常高效地满足了对大范围地理信息处理的需求。
地理包本质上遵循 OpenGIS 共享资源协议编码标准的 SQLite 容器,在存储矢量特征的同时整合了瓦片矩阵(栅格数据)和非空间属性数据,并支持扩展功能。
通常情况下,默认情况下而言,在每一个 geopackage 文件中都包含少量元表,并为此提供了一种方式去理解和处理地理空间层。
“gpkg 空间参考系”、
“gpkg 内容”、
“ gpkg OGR 内容 ”、
“ gpkg 几何列 ”、
“ gpkg 地图矩阵集合 ”、
“ gpkg 地图矩阵 ”、
“ gpkg 扩展包 ”、
“ SQLite 序列”
好处
- 免费开源软件,默认配置基于SQLite数据库
- 高度可扩展的云原生解决方案,在连接和带宽有限的移动设备上也能很好地兼容
- 在数据存储容量上相比shapefile轻约1.1-1.3倍的同时,在数据体积上几乎轻两倍于geojson格式
- 基于RTree空间索引结构实现的矢量图层特性使其在QGIS中加载文件以及进行空间数据库查询操作都非常高效
- 支持超大数据集处理能力无需担心存储压力
- 支持全名显示及精确匹配的地名标注展示效果
- 在运行速度和算法效率方面相较shapefile有显著提升,并建议您在QGIS中进行验证以体验这一优势
- 单一地理包文件可包含多个不同几何类型的矢量图层组合
Geopackage2Shapefile
将.gpkg导入到QGIS中,然后直接以shapefile格式导出

