ArcPy按属性批量导出CAD文件

工作:批量导出户型图及标注到CAD

GIS版本:10.2

原本构建了批量导出模型,但因数据量大,每次运行1000余就卡住了  最终想起还是自己写更靠谱,运行速度也更快一些。

程序部分:

# -*- 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
View Code

 

以上程序能完美运行,但数据量过大(我的数据分两部分,一部分50000条,另一部分250000条),查询速度变的很慢,预计2天,故后期建模型先将数据按字段批量分开,再改进如下:

# -*- 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
View Code

 

经以上修改,速度居然提升10倍以上,仅仅花了5个小时。早知一开始就不偷懒了,第一批50000条运行了8个小时,哎。

posted @ 2021-10-28 13:36  生活不该得过且过  阅读(258)  评论(0编辑  收藏  举报