700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 使用python脚本批量修改Arcgis的数据字段类型或者名称

使用python脚本批量修改Arcgis的数据字段类型或者名称

时间:2021-01-28 14:18:02

相关推荐

使用python脚本批量修改Arcgis的数据字段类型或者名称

参考其他的文章,放上代码,直接使用arcgis自带的python IDE运行,可解决中文字符的问题。

# -- coding: utf-8 --import arcpyimport sysfrom arcpy import env# use your ownenv.workspace = r"C:\数据处理\zhitu.gdb\Local" #工作空间,作者此处使用的是个人地理数据库infc=r'zrtzz' #输入图层名称outfc=r'zrtzz_1' #输出图层名称outpath = r"C:\数据处理\制图文件\zhitu.gdb\Local"#判断是否含有中文字符,因为作者需转换数据类型的字段名均含中文字符,因此加入此函数def check_contain_chinese(check_str):#for ch in check_str.decode('utf-8'): for ch in check_str:if u'\u4e00' <= ch <= u'\u9fff':return Truereturn False#fcList = arcpy.ListFeatureClasses()#outfc = infcprint "in featureclass : " + infc + " out featureclass : " + outfcfieldmappings = arcpy.FieldMappings()infields = arcpy.ListFields(infc)for infield in infields:#初步设置过滤字段if infield.name == "OBJECTID" or infield.name == "shape" or infield.name == "Shape" or infield.name == "Shape_Length" or infield.name == "Shape_Area":continuefieldmap = arcpy.FieldMap()fieldmap.addInputField(infc, infield.name)outname = infield.nameoutfield = fieldmap.outputFieldoutfield.name = outname.upper()#根据需求设置转换数据类型,此处将字段中含有中文并且字段类型为双精度型的数据转为短整型if check_contain_chinese(infield.name) and infield.type=="Double":outfield.type="SmallInteger"fieldmap.outputField = outfieldfieldmappings.addFieldMap(fieldmap)#print u"add field map " + infield.name + u" - " + outfield.namedel fieldmap, outfieldprint u"start to copy ......"arcpy.FeatureClassToFeatureClass_conversion(infc, outpath, outfc, "", fieldmappings)print u"done"

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。