使用GeoPackage代替SpatiaLite,反之亦然吗?


36

我现在正在使用QGIS 2.18,其中包括对GeoPackage格式的支持。

我知道GeoPackage就像Shapefile的替代品一样,但不是完全一样,因为GeoPackage具有数据库功能。同时,GeoPackage不能完全替代SpatiaLite,因为它没有空间查询和功能。此外,Spatialite还支持GeoPackage。

因此,在QGIS编辑的情况下,什么时候使用GeoPackage有意义(并从SpatiaLite访问GeoPackage以执行Spatial SQL任务),什么时候才最好使用Spatialite?


1
我对这个问题也很感兴趣。请记住,由于第一次编辑后出现锁定错误,当前对geopackage-support的支持受到限制。
hilpers

但这已经解决了吗?2.18没问题。
亚光

不幸的是,我确实使用了2.18.3
hilpers '17

我确实使用旧的错误跟踪器中编写的过程对2.18.3进行了测试,无法重现。在什么情况下您遇到了问题?
亚光

在首次使用GeoPackage编辑后,我也遇到了锁定错误,但仅当我在2.18.3中使用新的DWG / DXF导入时才遇到。我可以成功导入DWG,并最初编辑创建的GeoPackage(例如,使用Vector Bender插件对其进行地理定位)。但是,一旦我关闭QGIS项目并重新打开,切换编辑按钮就会变灰,并且GeoPackage无法再次编辑。
罗伯·威尔森

Answers:


33

QGIS中的GeoPackage和SpatiaLite之间的比较。目前,将GeoPackage与QGIS结合使用并不是真正有效的方法。可能会很快改变(请参阅添加内容!)。

关于新QGIS 2.99别名QGIS 3(2017年11月)的一些新增功能(也进行了比较):GeoPackage现在在QGIS 3中几乎没有任何问题。确实遇到了一些可能与QGIS开发人员版本有关的小问题。SpatiaLite最具问题的问题也得到解决。现在可以删除列,而无需任何其他解决方法。两者仍然不支持通过GUI进行栅格写入,这并不是一个大问题,因为数据库中的栅格并不是主要目的。两种格式都是非常好的工作格式。GeoPackage的重点是传输格式,而SpatiaLite的重点是基于文件的简单数据库系统,其中包含用于构建本地数据存储的许多工具(因为RDBMS比文件格式更像是RDBMS)。

都有:

  1. 交易性的
  2. SQL和视图(但使用软件中的视图实现方式有所不同)
  3. “多合一”矢量层,符号体系和文本,栅格
  4. 与shapefile相比几乎没有限制的属性表
  5. 确实需要VACUUM(数据库特定的数据存储)
  6. 大多数几何类型(如曲线)

GeoPackage:

  1. 是基于SQLite的OGC标准,意味着在不同软件中的实现应更加一致;例如,将来使用SLD样式时,符号系统可能会在QGIS和ArcMap中工作
  2. 相当年轻(2014年),在QGIS到2.18中存在很多问题(更新:QGIS 3中的良好支持)
  3. 允许针对反对SpatiaLite的“普通”用户轻松删除QGIS中的列
  4. 目前,DB-Manager不能很好地使用它,并且栅格支持仅限于读取单个集成栅格(不写入栅格)(使用QGIS 2.18.3)(更新:DB-Manager现在可以与geopackage一起使用)
  5. 视图在QGIS中不起作用,但是当不用于许多用户之间共享时,通过虚拟层不会有太大的问题(更新:仍然没有视图,因为QGIS 3可以实际创建视图,但之后无法读取)
  6. 地理处理工具不允许附加到现有文件(仅替换整个文件)(更新:现在可用)

SpatiaLite:

  1. 是SQLite的扩展,在GI软件中以不同方式实现(主要是由于驱动程序和版本问题)
  2. 到现在为止,已有更久远的历史并可以更好地集成到QGIS
  3. 在QGIS中,如果没有不复杂的SQL查询,就无法删除列,但是对于某些用户来说,“代码”已经太多了(更新:QGIS 3现在就这样做了)
  4. 当只有一堆几何图形时,它是一个很大的文件,不是很好的传输格式,但用于本地数据库存储(它的起始大小约为5MB)
  5. 许多其他工具(视图,可能会创建道路网络,许多导入/导出格式,ST_Queries等)

您是否打算仅将QOS或其他软件与GeoPackage或SpatiaLite一起使用?SpatiaLite也支持所有不带QGIS的gaia-gis.it/gaia-sins/spatialite-sql-latest.html独立版本。
user30184 '17

我主要将SpatiaLite与QGIS一起使用,还与SpatiaLite-GUI一起使用。我确实在我的QGIS培训课程中对其进行了介绍。唯一的问题是为初学者删除列的问题。我没有在ArcGIS培训中介绍它,因为在某些培训机构中有FileGeodatabase是强制性的(在10%的地方不是shapefile仍然是最新技术...)。我开始在高级QGIS课程中宣布GeoPackage,但是上面已经写了一些缺点。但是,由于GDAL具有良好的实现方式,因此直到QGIS具有所需的按钮都不会太久。
亚光

如您所知,您的比较是关于QGIS使用情况的。我想强调一点,通过“投递列”的情况来判断SpatiaLite或GeoPackage是否更好是非常QGIS特定的。SQLite本身不直接支持此操作sqlite.org/lang_altertable.html。SpatiaLite和GeoPackage都可以使用相同的解决方法,即使某些软件可能会错过这些按钮。
user30184 '17

1
我把它放在有关QGIS的原始问题的上下文中。专栏文章的重点是一个示例,我希望该标准将导致程序中更一致的使用,因为这是“普通”用户的主题。不知道使用SpatiaLite是否可以实现这一目标,因为即使在几年之后,集成程度仍然相差甚远。最后,对我而言,这可能是一种新的标准化传输格式(GeoPackage)。SpatiaLite更像是具有内置功能(ST查询,大量数据导入选项,网络...)的GIS。
亚光

GeoPackage和SpatiaLite均基于SQLite。
Matthias Kuhn,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.