小言_互联网的博客

利用Python实现Arcgis批量差分(交集取反)

375人阅读  评论(0)
  • 工作上用的数据,涉及中文的使用,所以加上转码u
  • 代码中使用的路径不要过长,容易报错
  • Arcgis10.1如果结果为空不生成shp,Arcgis10.2会生成空shp
#coding = utf-8
import arcpy
import os

#Workspace
inWorkspace = r'D:\19Q4\DATA\19Q4_BACK\prjBACK'
updateWorkspace = r'D:\PythonCode_inWork\06BACK_SYMDIFF_COUNT\19Q3G2_BACK\prj_result_19Q3G2'
outWorkspace = r'D:\19Q4\DATA\19Q4_BACK\BACK_SYMDIFF_19Q4G2'

#City List
##file_names_ls = os.listdir(inWorkspace)
###print(file_names_ls)
##city_ls = []
##for file in file_names_ls:
##    city = file.split('_')[0]
##    if city not in city_ls:
##        city_ls.append(city)
##print(city_ls)
city_ls = [u'三亚', u'东莞', u'中山', u'乌鲁木齐', u'佛山', u'保定', u'兰州',\
            u'南京', u'南宁', u'南昌', u'南通', u'厦门', u'台州', u'合肥',\
            u'呼和浩特', u'哈尔滨', u'唐山', u'大连', u'天津', u'太原', u'宁波',\
            u'常州', u'徐州', u'惠州', u'成都', u'扬州', u'无锡', u'昆明', u'杭州',\
            u'柳州', u'武汉', u'泉州', u'济南', u'海口', u'温州', u'潍坊', u'烟台', \
            u'珠海', u'盐城', u'石家庄', u'福州', u'秦皇岛', u'绍兴', u'芜湖', \
            u'苏州', u'西宁', u'西安', u'贵阳', u'郑州', u'重庆', u'金华', u'银川',\
            u'长春', u'长沙', u'青岛', u'沈阳', u'广州', u'上海', u'深圳', u'北京']

dict = {u'绿地':'_GREENURBAN.shp',u'水系':'_WATER.shp'}

num_ok = 0
num_fail = 0
for city in city_ls:
    cnt = 0 #计数器
    for key in dict:
        inFeatures = inWorkspace + '\\' + city + dict[key]
        updateFeatures = updateWorkspace + '\\' + city + dict[key]
        outFeatureClass = outWorkspace + '\\19Q4' + city + key +  u'差分量.shp'
        clusterTolerance = 0.001    
        # Execute SymDiff
        try:
            arcpy.SymDiff_analysis(inFeatures, updateFeatures, outFeatureClass, "ALL", clusterTolerance)
            cnt += 1
        except:
            print(city + key + u'差分失败!请确认!')
            num_fail += 1
    if cnt==2:
        num_ok += 1
print(u'差分完成!共{0}城市成功,{1}差分失败项,请确认!'.format(num_ok,num_fail))

 


转载:https://blog.csdn.net/lzqg1990/article/details/101375879
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场