ArcPy按属性批量导出CAD文件
工作:批量导出户型图及标注到CAD
GIS版本:10.2
原本构建了批量导出模型,但因数据量大,每次运行1000余就卡住了 最终想起还是自己写更靠谱,运行速度也更快一些。
程序部分:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
# -*- coding: utf-8 -*- # Import arcpy module import arcpy aa=0 zrz_RH="E:/大英户型图/数据库/数据库处理中.gdb/户型融合/ZRZ_2层融合" zrz_line="E:/大英户型图/数据库/数据库处理中.gdb/户型line/ZRZ_2层line" zrz_lineA="E:/大英户型图/数据库/数据库处理中.gdb/户型line/ZRZ_2层line注记" #创建要素图层,按属性选择的前提必须是图层或视图,故先创建图层 arcpy.MakeFeatureLayer_management(zrz_line, "zrz_line_ly") arcpy.MakeFeatureLayer_management(zrz_lineA, "zrz_lineA_ly") path_DC="E:/大英户型图/GIS导出/层2/" cursor=arcpy.da.SearchCursor(zrz_RH,["BDCDYH"]) for row in cursor: aa=aa+1 if aa%1000==1: print "正在处理条数:"+str(aa) # Process: 按属性选择图层 arcpy.SelectLayerByAttribute_management("zrz_line_ly", "NEW_SELECTION", "BDCDYH ='"+str(row[0])+"'") arcpy.SelectLayerByAttribute_management("zrz_lineA_ly", "NEW_SELECTION", "BDCDY ='"+str(row[0])+"'") #导出CAD arcpy.ExportCAD_conversion("zrz_line_ly;zrz_lineA_ly", "DWG_R2004", path_DC+str(row[0])+".dwg", "Ignore_Filenames_in_Tables", "Overwrite_Existing_Files", "") del row del cursor
以上程序能完美运行,但数据量过大(我的数据分两部分,一部分50000条,另一部分250000条),查询速度变的很慢,预计2天,故后期建模型先将数据按字段批量分开,再改进如下:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
# -*- coding: utf-8 -*- # Import arcpy module import arcpy import sys aa=0 path_DC="D:/daying/DC/" zrz_DJ="D:/daying/ZRZ1.gdb/zrzall/ZRZ_1RHok" cursor_DJ=arcpy.da.SearchCursor(zrz_DJ,["DJZQ"],'"OBJECTID"<11 and "OBJECTID">0') for row_DJ in cursor_DJ: print "正在处理地籍子区:"+str(row_DJ[0]) zrz_RH="D:/daying/ZRZ1.gdb/ZRZ_RH/H"+str(row_DJ[0]) zrz_line="D:/daying/ZRZ1.gdb/ZRZline/L"+str(row_DJ[0]) zrz_lineA="D:/daying/ZRZ1.gdb/ZRZzj/T"+str(row_DJ[0]) #创建要素图层 arcpy.MakeFeatureLayer_management(zrz_line, "zrzline"+str(row_DJ[0]) ) arcpy.MakeFeatureLayer_management(zrz_lineA, "zrzzj"+str(row_DJ[0]) ) cursor=arcpy.da.SearchCursor(zrz_RH,["BDCDYH"]) for row in cursor: aa=aa+1 if aa%100==1: print "正在处理条数:"+str(aa) # Process: 按属性选择图层 arcpy.SelectLayerByAttribute_management("zrzline"+str(row_DJ[0]), "NEW_SELECTION", "BDCDYH ='"+str(row[0])+"'") arcpy.SelectLayerByAttribute_management("zrzzj"+str(row_DJ[0]), "NEW_SELECTION", "BDCDY ='"+str(row[0])+"'") #导出CAD arcpy.ExportCAD_conversion("zrzline"+str(row_DJ[0])+";zrzzj"+str(row_DJ[0]), "DWG_R2004", path_DC+str(row[0])+".dwg", "Ignore_Filenames_in_Tables", "Overwrite_Existing_Files", "") del row del cursor print "处理完成!" del row_DJ del cursor_DJ
经以上修改,速度居然提升10倍以上,仅仅花了5个小时。早知一开始就不偷懒了,第一批50000条运行了8个小时,哎。