GeoPackage - 一个简便轻量的本地地理数据库

GeoPackage(以下简称gpkg),内部使用SQLite实现的一种单文件、与操作系统无关的地理数据库

当前标准是1.2.1,该版本的html版说明书:https://www.geopackage.org/spec121/index.html。

本文简单介绍一些最需要关注的特点,因为笔者也是菜鸡(刚开始学)

1. 简介 1.1 扩展名与数据库识别方法

它在非编辑、非连接状态时,扩展名是*.gpkg;在数据连接或编辑状态时,会多出来两个同名不同拓展名的文件:*.gpkg-wal、*.gpkg-shm。

如果不确定获得的gpkg文件是否是SQLite数据库,可以用二进制查看器看最开始的字节信息,前16个字节应为以null结尾的ASCII字符串“SQLite format 3”。有关更多二进制信息,请到OGC官网上查看说明书。

1.2 数据存储上限与支持的数据

gpkg最大数据量为140TB(应该没多少项目用得到吧...)

它能存储的数据有:

矢量数据

栅格数据

属性数据(非空间数据)

其他

“其他”意味着可以扩展gpkg数据库,但是目前笔者没有这个能力。

1.3 与其他类似的本地数据库比较

因为单文件的特点,与ArcGIS家族中的Geodatabase模型的实现——mdb和gdb很像。它们同为本地数据库。

gpkg没有类似ArcGIS中要素数据集的概念,也没有PostGIS中模式的概念(可能我没发现,暂时做狗头处理)

1.4 创建gpkg和打开gpkg的方法

如果想直接用SQL访问gpkg,请使用DB Browser for SQLite

如果要在网络端访问gpkg,推荐用NGA’s application 

如果想在桌面端访问,那么可以用的工具有很多,比如GDAL、QGIS、ArcGIS等。

gpkg可以直接被ArcGIS识别并增删改查数据(即ArcGIS内置了支持)

gpkg也可以被QGIS识别并增删改查数据。

1.5 什么时候用gpkg

因为SQLite“单文件”、“轻量化”的特点,所以gpkg特别适用于小规模的场景和移动场景。比如学生练习、手机等。

如果想多种途径创建gpkg,请阅读此文:

但是,通常使用GIS桌面客户端就可以了。

1.6 支持gpkg的GIS客户端、服务器、开发工具

客户端:QGIS、ArcGIS(10.2.2及更高版本支持读写,总之用新版本就好了)、GeoTools、FME、Skyline、MapInfo等

服务器:GeoServer

开发工具:GDAL

此外,SpatialLite 4.2.0以上也支持gpkg。

1.7 OGC中GeoPackage官网的常见问题

gpkg会代替shp吗?

看你怎么想。可以替代,但是没必要。像简单的交换数据和显示简单的数据,GeoJson就可以完成。(详细的看第二节)

gpkg安全吗?

gpkg只是SQLite的一种编码、规定,没有像其他DBMS一样的安全管理。不过,已经有人实践了SQLite的安全扩展模块,可以考虑一下或者换更安全的数据库管理系统,例如PostgreSQL。

为什么gpkg用的WKB编码与PostGIS、SpatialLite的WKB不同?

因为原始的WKB标准不能满足gpkg,所以要扩展。PostGIS和SpatialLite都这么做了。

2. gpkg vs shp文件(部分翻译)

QGIS 3.X默认从shp文件切换到gpkg,因此,渲染变得非常快。使用gpkg比使用shp文件在加载,平移和缩放时更快。

2.1 gpkg的优缺点

优点:

开源

OGC标准之一

软件支持广泛,有GDAL、QGIS、R、Python、Esri家族...

比传统意义上的地理数据库轻量化,但是和地理数据库速度相差无几

单文件,比shp文件好管理

在工作流上比shp快速

几乎没有限制(指的是体积)

缺点:

还不成熟(现在版本才1.2.1,原文写的时候才是1.0)不过,这个只是时间问题

个人体验中栅格数据的支持比较受限制

2.2 shp文件的优缺点

优点:

通用标准!(2020年就是shp文件的30岁)

它就是个矢量数据的标志(GIS矢量数据几乎会问有没有shp文件?)

缺点:

Esri维护

数据访问上有些迟钝

是一个多文件格式(有很多GIS菜鸟不知道要发送多个同名文件,只发送了几何数据的shp文件)

不能拓扑

属性名限制为10字符

它使用的是Esri定制的WKT,切换平台时可能会导致不一致

每个shp文件只支持最大2GB

每个shp文件只能是一种几何类型

没有真正的3D支持(gpkg已经根据社区的贡献拓展出了3d支持)

2.3 建议

原作者希望更多人使用gpkg而不要再继续使用shp了(笔者注:旧事物还有利用的余地时,新事物的推动就会非常困难;除非使用政治或者垄断手段强行更改(比如当年Esri的Coverage格式被Esri自己干掉了)——不太可能,这些都非常符合马克思主义;而且,是否使用gpkg或者shp或者其他数据库,都要具体问题具体分析

如果你有庞大的数据需要存储、管理,原作者建议使用PostGIS。如果您喜欢GeoPackage,请与您的同事和合作者分享这些信息!

 

3. shp文件必须死!(偏激预警,不喜勿喷,部分翻译)

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wspsdd.html