利用Python實現Arcgis批量差分(交集取反)——上

  • 工作上用的數據,涉及中文的使用,所以加上轉碼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))

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章