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

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

似乎有一小撮人,正在鼓吹shp必死论(可能是受够了shp的缺点了吧!),我就简单翻译一下。

shp文件具体是什么我就不过多介绍了,它诞生于1990年,马上就是它的30大寿了。

尽管shp文件是Esri维护的,但是它的规范是开放的,也就是说,如果你懂了shp文件的几大数据结构构成,会编程,你也可以手搓一个shp文件读写程序,不需要依赖任何第三方库。

3.1 shp文件的缺陷

但是,下面原文开始重点驳斥shp文件的坏处

为什么Shapefile这么糟糕?以下是Shapefile格式错误的几个原因,您应该避免使用它:

要额外使用prj文件定义坐标系统(shp文件规范不包括prj文件来定义坐标系统,这是额外的)

多文件格式(至少要3个文件,其他软件还会自己扩充更多同名扩展文件,这就使得数据共享非常麻烦,这也是一个非常致命的弱点)

属性名最多为10字符

dbf属性表最多255个字段

数据类型有限,只支持浮点数、整数、日期、文本,一个值最多254字符

文字编码有大问题,在ArcGIS中打开shp文件中文乱码的问题大家肯定遇到过

shp文件和dbf文件最大2GB(虽然GDAL改进了但是毫无卵用)

不能拓扑

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

更复杂的数据结构无法实现,例如不规则三角网等

不能用纹理或材质存储3d数据

...

不展开了,有兴趣的朋友到他们官网看即可

3.1 备选方案

讲道理,现在没有任何一种矢量格式能完全替代shp,但是不得不说其他的格式正在慢慢崛起,有他们的用户。

例如,kml、gml、geojson等

一些Shapefile替代品:

OGC GeoPackage

GeoJSON

OGC GML

SpatiaLite

CSV

OGC KML

其中,第一位列的就是gpkg,而且经过近几年的迭代升级、修订,再加上它可以扩展的特性,使得gpkg更强大。

GeoPackage的一个缺点是,它底层SQLite数据库是一种复杂的二进制格式,不适合流式传输。它必须写入本地文件系统或通过中间服务访问。所以,在本地应用中,gpkg是shp文件的一个不错替代品(如果你有需要)

GeoJson并不是shp文件的代替品,只是地理数据的一种json实现。它的一个特点就是支持流传输;存在的问题是,不是所有的几何都可以表示,高级的坐标系统支持也不算好。

所以,基于XML的GML格式(仅支持矢量数据)就有了用武之地。但是GML也有其缺点,就是数据结构定义标准复杂,较少软件愿意支持它,ArcGIS把它的支持丢进了数据互操作模块。如果GeoJson不能解决问题,可以试试GML。

SpatialLite和gpkg类似,也是一个开源数据库,也是基于SQLite,也是单文件,也支持SQL,但是不如gpkg广泛。究其原因,是因为sl缺乏扩展能力(好比世界之窗vsChrome),也不支持栅格数据。同样的,它也不支持流传输。

csv文件,估计有的同学用过,最大的特点就是简单了。它就是个文本格式的二维数据表格。在非GIS行业中,csv非常受欢迎。作为属性表可能合适,但是它并不具备几何等复杂空间信息的存储能力,而且它没有一个标准。

kml是谷歌在谷歌地球中推荐的格式,基于XML,单文件。它有个特点就是,数据和样式同存在于一个kml文件中。缺点也有,仅支持wgs84坐标。由于它基于XML,所以数据量一大就不好用了。数据和样式存在耦合,这也是个缺点。

当然,除了以上开源格式外,还可以使用更复杂的DBMS或者ArcGIS家使用的面向对象的地理数据库。

笔者的建议是,还是具体问题具体分析。如果你要做真正的GIS项目,通用、标准化、性能高才是不二之选;所以,像kml等非主流但是又有其价值的数据,除了在它本身的平台用外,最好转换到更通用的格式上,例如,就GeoPackage——不然还是老实点用shp文件吧~

项目大的,有高并发、安全要求的,不妨试试PostgreSQL的PostGIS拓展。或者用MySQL、其他商业数据库,那些就不在本文的讨论范围了。

 

参考资料

[1]. OGC的GeoPackage官网:https://www.geopackage.org/

[2]. OGC的GeoPackage起步文档:

[3]. OGC的GeoPackage标准(类似于白皮书)

[4]. 实现了GeoPackage的有关软件:https://www.geopackage.org/implementations.html

[5]. GeoPackage vs Shapefiles:https://www.gis-blog.com/geopackage-vs-shapefile/

[6]. Shp文件必须死!(这个网站有点偏激):

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

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