SpatiaLite中的空间层(表)包括各种支持对象和元数据,包括(至少)geometry_columns
表中的触发器,索引和条目。我正在寻找(最好是)一口气处理所有必要更改的GUI,或者寻找所有必需更改的(备用)文档,以免破坏空间层。
表有:
- 输入
geometry_columns.f_table_name
。 - 有五个名为的触发器
[prefix]_[table_name]_geometry
,其中前缀表示这是事务回滚还是索引更新。 - 命名为三个空间索引
idx_[table_name]_geometry[_suffix]
我已经在两个应用程序QGIS DB Manager和SpatiaLite-GUI中进行了尝试。
QGIS DB Manager出现具有以下效果:
geometry_columns
用新表名正确更新- 不重命名触发器。触发器定义已部分修改,以
BEFORE [INSERT|UPDATE|DELETE]
引用新的表名,但条件仍在中搜索旧名称geometry_columns
。 - 不重命名空间索引。不确定这是否重要,因为触发器仍引用旧的索引名称。
当您在SpatiaLite-GUI中选择“维护”→“重命名”表时,您仅获得一条SQL ALTER TABLE
语句的存根。这是简单易懂的SQL,甚至比QGIS DB Manager还少。如果您填写新的表名,该表将被重命名。其他效果:
- 表格未在中重命名
geometry_columns.f_table_name
,这意味着许多GIS不会将表格视为空间层。 - 不重命名触发器。触发器定义已部分修改,以
BEFORE [INSERT|UPDATE|DELETE]
引用新的表名,但条件仍在中搜索旧名称geometry_columns
。 - 不重命名空间索引。不确定这是否重要,因为触发器仍引用旧的索引名称。
请注意,Spatialite-GUI确实提供了恢复几何列的选项,该列将向其添加正确的条目geometry_columns
(但要求您指定SRID,几何类型和尺寸),构建或重建空间索引以及恢复触发器,但没有这些功能中的一部分会删除旧的表行,触发器或索引,从而导致其中包含很多(可能无害但令人讨厌)schmutz的数据库。
3
我认为,如果我们想摆脱形状文件,非常需要“表管理器”来重新排列,重命名,删除SpatiaLite中的其他字段。但是,据我所知,由于未知的原因,没有这样的工具可以帮助我们。对于众筹计划而言,这可能是一个好项目!
—
Bernd V.
您有哪个版本的spatialite-gui?
—
user30184
SpatiaLite-GUI 1.7.1。
—
Lee Hachadoorian 2015年