问题描述:
数据库里用于路径规划的数据的gid被组内小伙伴误删掉导致所有算法失效。
重做拓扑后的source,target(start_no,end_no)怎么都不能是以前的了!!!
问题本质:source,target是根据 pgr_createTopology 函数生成的顶点的id来的。
思路:生成拓扑后重新修改顶点的id和原来一致再更新拓扑就行(只更新且不能重建否者顶点的id又是全新的即pgr_createTopology的clean:=false)。
第一步:利用line重新创建拓扑得到顶点line_vertices_pgr图层。接下来所有操作都是为了修改id和以前一致。
第二步:line_vertices_pgr新增old_id,old_id=之前line_vertices_pgr的id。这里要不数据导出去用空间连接的方式把old_id追加上去。
第三步:给line_vertices_pgr的id加上足够大的值确保与old_id不重复。(因为id是主键所以如果直接update让id=old_id会报错,因此要绕一下)
第四步:更新line_vertices_pgr的id=old_id。
第五步:最后重新计算start_no和end_no。这里定要删除line的start_no和end_no后再重新创建start_no和end_no字段再用pgr_createTopology计算否者还是得不到想要的结果!!!。
完成。