仅仅看PipeID并不能删除完全重复的线段
需要 https://www.cnblogs.com/2008nmj/p/14301915.html
根据位置的相关信息来判断
(1)线段的起始点和终点编码是否与相同位置的井的ManholeID完全对的上。
(2)需要严格按照ManholeID来给管道的起始编码和终点编码赋值。(前提:ManholeID是唯一的。)
>>删重:1.ManholeID唯一吗?
Arctoolbox->Analysis->Frequency统计
是唯一的。
2.(先为SystemID唯一值为ObjectID)
管->导出dbf->以起始点XY显示,导出为shp文件并添加ManholeID属性,在Arctoolbox->Analysis->Overlay->Spatial Join(与井关联)
将ManholeID属性设为ManholeID_的值
3.管与上一步spatial join得到的结果以systemID进行关联,找到不为''的,起始编码赋值。
4. 备份。起始编码和终点编码为空的,筛选出来,In_JuncID='' or Out_JuncID='',接着反选(或者In_JuncID<>'' or Out_JuncID<>''选择),通过python代码In_JuncID+'-'+Out_JuncID赋值给PipeID。通过FME删重。
5. 通过ArcToolbox->Analysis->Frequency,再次查询PipeID,得到。。283个重复的。参考https://www.cnblogs.com/2008nmj/p/14179249.html,只不过是得到Dupilcate,然后通过SystemID进行关联删除。(其实生成unique值也可以,关联后反选然后删除也可以)
(对于线上的数据,要导出在线下操作以上步骤,再把关联的数据传到线上进行修改。)
>>添加不存在井的管:添加ManholeID
有些管存在,但是井不存在,所以存在有些管的起点和终点匹配0.1米内的井出现为空的现象。
为了解决这个现象。需要把管的起点shp和终点shp按照spatial join进行关联,然后对比ManholeID是否相等。(Select Attribute where shp1.ManholeID=shp2.ManholeID)
(只对比起点和终点编码为空的管即可)
1. 导出起点shp和终点shp
2. 分别对起点shp和终点shp进行删重
3. 对起点shp和终点shp基于ManholeID进行关联。。查询"shp1.ManholeID"= "shp2.ManholeID"发现一共有149个重合。211+149+11=371 需要添加371个点到检查井中。
4. 在添加之前,先对原来的井和要添加的井进行Manhole关联查询,看看是否存在重复。如果存在重复,进行空间关联查询,查看是否存在关联,发现这371个点并不存在与原来的井的关联。
这47个点要不要先留着不复制到ManholeID呢?解决办法:在原来的名字上添加_2进行区分。。
#对于之前添加了_2的属性,由于pipeid字数限定,需要重新进行调整 def Cal(value): if(len(value)>8): value2=value[1:9] value3=value2[1:3]+"2"+value2[4:] return value3 else: return value
>>对于管的属性为空,重新进行将排水管的起始编码和终点编码分别存储shp文件并进行空间映射:spatial join
1. 导出起始点shp和终点shp
2. 与检查井进行spatial join,管再与生成的join文件进行systemid关联