sde要素类的数据自动覆盖另一个要素类数据

0
分享 2019-12-30
以下方法实现两个相对字段结构的要素类,一个要素类的数据覆盖另一个文档,可用于数据定时同步等场景
 
使用py实现,以下提供模板:
# coding:utf-8
# encoding=utf-8
# Import arcpy module
import arcpy

# 默认工作空间必须设,否则会报错ERROR 000732 不存在或不受支持
arcpy.env.workspace = r"C:\\"

# dict_fc_source类型是字典(对应java就是Map),key是数据同步的目标图层,value是数据同步的源图层
dict_fc_source = {}
# 以下两条是例子,内容可以使用catalog批量处理和excel结合使用来生成
dict_fc_source[
r"数据库连接\Connection localhost-mctw_bak.sde\mctw_bak.sde.pipe\mctw_bak.sde.PS_CANAL_ZY"] = r"数据库连接\连接到 localhost-sde_mctw.sde\sde_mctw.sde.pipe\sde_mctw.sde.PS_CANAL_ZY"
dict_fc_source[
r"数据库连接\Connection localhost-mctw_bak.sde\mctw_bak.sde.pipe\mctw_bak.sde.PS_ALTER_DIA_ZY"] = r"数据库连接\连接到 localhost-sde_mctw.sde\sde_mctw.sde.pipe\sde_mctw.sde.PS_ALTER_DIA_ZY"

# 遍历图层每个处理
for fc_target in dict_fc_source:
# key是数据同步的目标图层,value是数据同步的源图层
fc_source = dict_fc_source[fc_target]

# 先删除要素(只删数据,不删图层)
arcpy.DeleteFeatures_management(fc_target)
print '完成删除要素:' + fc_target

# 然后把源图层的要素复制到目标图层
arcpy.Append_management(fc_source, fc_target, "TEST")
print '完成复制要素,从 ' + fc_source + ' 复制到 ' + fc_target

print '处理完成'




然后按上面的注释修改成具体内容
 
py脚本文件编辑完成后,写个bat来运行py
 
调用py文件用到arcmap自带的python(arcmap安装时自带py,而且这里也必须用这个自带的,而不能自己装原版的py)
PS:arcmap自带py有个标志是安装目录下有个ArcGIS10.4(名称根据ArcGIS版本而不同)文件夹
 
q1.png


cmd到py安装目录的这一个文件夹
 
q2.png


cmd执行命令:python D:\test1\test21.py,其中后面的文件路径要按实际改
执行成功的样子
q3.png


到此说明py脚本是正常的,然后可以把cmd运行内容写成bat,如下图:
q4.png

 

0 个评论

要回复文章请先登录注册