导出图层到shp文件

此例子是从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:\Users\Administrator\AppData\Roaming\ESRI\Desktop10.2\ArcCatalog\xxxxx.sde"
infc = "dataset_name.features_name"
print "in workspace: " + env.workspace
print "in featureclass:" + infc

#输入要导出的shp文件夹路径、要素类
outpath = r"D:\out\dataset_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"
posted @ 2021-07-29 15:23  publiter  阅读(374)  评论(0)    收藏  举报