0
点赞
收藏
分享

微信扫一扫

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

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


文章目录

  • ​​当前矢量数据标准格式​​
  • ​​Shapefile 的问题​​
  • ​​GeoJSON 的问题​​
  • ​​什么是Geopackage​​
  • ​​好处​​
  • ​​Geopackage2Shapefile​​

当前矢量数据标准格式

如果你一直在使用矢量数据并进行空间分析,你就会知道 shapefile 和 geojson。Ť ħ ESE是两种最常用的矢量数据格式来存储数据和执行任何空间分析。特别是 GeoJSON,在向 Web 应用程序提供数据时一直是首选格式。但是,当您希望扩展工作并为大规模部署构建集成和自动化的工作流时,这两种格式都有很多缺点。Geopackage 格式在这方面提供了多种功能。这就是为什么您需要使用 Geopackage 文件而不是 shapefile 或 GeoJSON。让我们深入了解细节。

Shapefile 的问题

Shapefiles 已经存在很长时间了。ESRI 在 1990 年代初期开发了这种格式,从那时起,它已成为广泛采用的标准格式之一,用于在人们之间处理和共享矢量数据。Shapefile 将非拓扑矢量数据与相关属性数据一起存储。虽然被广泛使用,但对于现代用例来说,它有很多明显的缺点;

  • Shapefile 是一种多文件格式。您保存的每个矢量图层至少有 3 个文件(.shp、.shx 和 .dbf)和其他几个具有不同扩展名的附加文件。因此,如果您想与某人共享 shapefile,则必须共享一层的所有这些文件。如果您有多个图层,则文件数量会很大。每个项目的文件数量是大约 4-6 倍并不理想。
  • Shapefile 支持相关属性数据,类似于带有列标题的表格数据集。但是您只能用十个字符来定义列标题,并且列标题的缩写形式并不总是理想的,因为列标题需要一些描述/标识。
  • shapefile 的最大大小为 2GB。您无法将具有更多可能超过 2GB 的特征的矢量图层导出为 shapefile。
  • shapefile 在一个文件中不能有多个几何类型。
  • 随着 shapefile 的大小增加以及处理更多的属性列和行,shapefile 的性能会急剧下降,即使在 QGIS 上使用空间索引也会变得缓慢。

GeoJSON 的问题

GeoJSONs 的部分创建是为了解决 shapefile 的多文件问题。作为 Web 应用程序中使用的 JSON 对象的扩展而构建,它确实解决了 shapefile 提出的一些问题。但它有其自身的局限性;

  • 对于具有属性的相似数量的矢量特征,在大多数情况下,GeoJSON 的文件大小几乎是 shapefile 的两倍。
  • GeoJSONs 没有空间索引。因此,在处理大量功能时很难处理。大多数情况下,仅仅围绕空间特征进行平移以在 QGIS 地图画布上进行探索是一项令人厌烦的任务。
  • 每当您加载文件以运行某些任务时,整个文件都会立即加载到内存中,这可能会在多种情况下产生问题,尤其是大文件。
  • 此外,与 shapefile 和 geopackages 相比,文件的加载通常更慢,但内存消耗相似或更多。
  • 如果文件大小超过某个限制(根据我的经验约为 10-11 GB),则功能可能会写入不完整,从而导致文件损坏。

什么是Geopackage

由OGC开发作为地理空间信息的开放格式,他们将 GeoPackage 定义如下;

GeoPackage 是一种开放的、基于标准的、独立于平台的、便携的、自描述的、紧凑的格式,用于传输地理空间信息。

地理包本质上是一个带有 OGC 编码标准的 SQLite 容器,用于存储矢量特征、瓦片矩阵(栅格数据)、非空间属性数据和扩展。

默认情况下,每个 geopackage 文件都有很少的元表,如下所示来理解和处理地理空间层。

“gpkg_spatial_ref_sys”、
“gpkg_contents”、
“gpkg_ogr_contents”、
“gpkg_geometry_columns”、
“gpkg_tile_matrix_set”、
“gpkg_tile_matrix”、
“gpkg_extensions”、
“sqlite_sequence”

好处

  • 开源,基于SQLite数据库
  • 非常轻巧但跨环境高度兼容(尤其是在连接和带宽有限的移动设备中)
  • 与 shapefile 相比,Geopackage 的文件大小通常轻约 1.1-1.3 倍,而与 geojsons 相比,其文件大小几乎轻了 2 倍。
  • 由于geopackage 中的矢量图层本质上是rtree 索引(空间索引),因此在QGIS 上加载文件或在文件数据库上进行查询很快。
  • 文件大小没有限制,它可以在较小的文件大小中处理大量功能。
  • 与 shapefile 相比,通过为每列提供正确的上下文,列标题可以是全名和正确的。
  • 与 shapefile 相比,您将在地理包上看到更快的运行和算法输出(您可以在 QGIS 上尝试此操作)。
  • 单个地理包文件可以有多个矢量图层,每个层具有不同的几何类型。

Geopackage2Shapefile

将.gpkg导入到QGIS中,然后直接以shapefile格式导出

为什么需要使用 Geopackage 文件而不是 shapefile 或 GeoJSON_文件大小_02


举报

相关推荐

0 条评论