此例子是从Oracle空间库导出图层到shp文件的Python脚本,并支持创建Arcgis工具。
此脚本的目的是自动去除一些不需要的属性字段,同时修改导出字段名称。
import arcpy from arcpy import env #toolbox界面输入参数 #infc = arcpy.GetParameterAsText(0) #outpath = arcpy.GetParameterAsText(1) #outfc = arcpy.GetParameterAsText(2) #arcpy.AddMessage("in featureclass:" + infc) #arcpy.AddMessage("outpath: " + outpath) #arcpy.AddMessage("out featureclass: " + outfc) #直接运行参数 #输入sde连接、要素类 print "featureclass to shp" env.workspace = r"C:UsersAdministratorAppDataRoamingESRIDesktop10.2ArcCatalogxxxxx.sde" infc = "dataset_name.features_name" print "in workspace: " + env.workspace print "in featureclass:" + infc #输入要导出的shp文件夹路径、要素类 outpath = r"D:outdataset_name" outfc = "features_name.shp" print "outpath: " + outpath print "out featureclass: " + outfc #创建字段映射表 fieldmappings = arcpy.FieldMappings() #轮询属性字段 infields = arcpy.ListFields(infc) for infield in infields: fname = infield.name #不导出字段 if fname == "OBJECTID" or fname == "shape" or fname == "SHAPE" or fname == "SHAPE.AREA" or fname == "SHAPE.LEN": continue if fname == "SHAPE_AREA" or fname == "SHAPE_LEN": continue #转换导出字段名称 outname = infield.name if fname == "OLDNAME": outname = "NEWNAME" #创建字段映射 arcpy.AddMessage("add field map:" + infield.name + " - " + outname) print "add field map:" + infield.name + " - " + outname fieldmap = arcpy.FieldMap() fieldmap.addInputField(infc, infield.name) outfield = fieldmap.outputField outfield.name = outname.upper() fieldmap.outputField = outfield fieldmappings.addFieldMap(fieldmap) #清除缓存 del fieldmap, outfield arcpy.AddMessage("start to export shp ......") print "start to export shp ......" arcpy.FeatureClassToFeatureClass_conversion(infc, outpath, outfc, "", fieldmappings) arcpy.AddMessage("done") print "done"