QGIS初识-离线编辑

注:QGIS版本为3.4.8

        选择数据库,离线编辑功能,首次选择该工具,可点击转换为离线项目,选择需要离线的图层,在本地会生成一个offline.gpkg本地包。

         

           

1 - Offline.gpkg本地包内容

         

 

如上图所示,除了将我们选择的图层数据(以图层名+guid命名)本地缓存外,本地包中多了8张log日志表。

1)        log_added_attrs,新增属性日志表,原表为空,图层新增字段后,相关记录保存到该日志表。如下图,在PIPESECTIONUSER表中新增了gcbh(工程编号字段),该表记录了相关信息。

           

 

2)        log_added_features,新增要素日志表,原表为空,新增要素后如下,该表只记录新增要素的图层id和要素id,新增的要素删除,会从本表直接移除,新增要素的图形和属性信息仍然记录在本地对应的图层表中。如下图pipesectionuser图层(layerid为 4)新增了3条记录,日志表中对应记录了layer_id为4的1、2、3共3个要素。

            

            

3)        log_feature_updates,属性更新日志表,原表为空,编辑图层属性后记录各图层属性信息变更情况。

          

4)        log_fids, 记录当前所有图层layer_id与要素fid的对应关系,目前测试发现要素的新增、删除,几何对象的编辑(平移、顶点编辑、旋转、切分、合并、删除),要素属性的修改操作均不修改该表。用以与服务器端图层fid比对。  

           

 

5)        log_geometry_updates,几何图形更新表。在对现有的几何图形进行要素移动、拆分、旋转、顶点编辑(增加、删除、移动顶点)等编辑动作,将最终的几何对象保存到该表。

   

6)        log_indices,commit_no,编辑保存计数,每编辑保存一次,last_index自增加1。layer_id,当前图层数量计数。

  

 

7)        log_layer_ids,图层ld表

  

8)        log_remove_features,要素删除日志表。要素删除时从本地图层表中删除该记录同时在该表记录删除要素的layer_id和要素fid。

  

2 - 发现的问题

1)        测试过程中用高级数字化工具对同一管线依次进行切分、合并操作,要素记录到了log_remove_features、log_added_features,(合并过程手动更改了fid,手动选择合并的两个要素中的一个fid)但同步过程,会导致部分要素丢失或与保存前状态不相符!例:图中竖线进行了两次拆分动作,一根线段分成了左图中的三段,然后上面的两段合并,并保存。提交同步后,中间那段线段丢失。

注:手动更改fid会导致各种bug,不手动改发生问题概率低。

    

 

 

2)        字段删除未记录在任何表中,提交后该变更未同步。

3 - 离线编辑功能总结

1)        要素编辑以fid为唯一标识,手动修改fid会导致各种bug,完善该功能时考虑fid禁止编辑。

2)        管线的切分,起点那段管线会保留原有fid,另一段会新增个fid记录。

3)        管线的合并,fid会变成新的,如手动编辑fid与合并前的某一段fid一致,会导致要素丢失等问题。

4)        要素的移动、顶点编辑、旋转、属性编辑均不会导致fid发生变化。

5)        支持图层属性字段的新增,不支持图层属性字段的删除(本地包删除后并不会同步到服务端)。

6)        服务端属性发生变化(与客户端离线前对比),离线包log_fids日志表记录了离线时所有图层的fid记录,离线包同步到服务端时,会先通过该表与服务端进行比对,服务端删除过的fid,离线端对该fid的编辑不生效。对比后服务端仍存在的fid的状态以离线端为准(不论服务端进行过什么操作)。对比fid的过程在数据量较大时会导致qgs客户端卡死。

posted @ 2019-07-16 12:24  GoodGF  阅读(1003)  评论(0编辑  收藏  举报