arcpy批量添加要素名称

问题描述

今天遇到一问题,手头收集了一堆矢量数据,每个数据都单独放在一个文件夹里面,数据格式不是很规范,项目的名称包含在文件的的路径中,数据整理要求:

 1.批量添加属性字段
 2.按照文件路径名称为要素图层添加项目名称
 3.有的数据坐标系不正确,需要统一检查坐标系

软件环境说明

Arcgis 10.2.2
Python 2.7.5 (default, May 15 2013, 22:43:36) [MSC v.1500 32 bit (Intel)] on win32.
PyScripter Version 3.6.1.0 X86
Excel 2013

思路

1.遍历所有要素
2.将要素路径及要素坐标系写入到Excel中并保存
3.为每个要素添加字段
4.计算字段(赋值)
5.统一坐标系后合并(程序不含该部分的内容)


解决方案:

废话不多不多说,直接上代码:

#coding=utf-8
#检查数据坐标系
#读取子文件夹内数据集坐标系
import xlwt
import os
import arcpy.da
from datetime import datetime

#开始运行
print ("START..."+str(datetime.now()))

##设置工作环境
##设置需要分析的路径
arcpy.env.workspace =unicode(r'I:\zb','utf-8') #设置矢量数据所在文件夹 注意路径可以包含中文
ArcEnv=arcpy.env.workspace
print  ("The Current Path: %s"%(ArcEnv) )
##创建Excel
xls = xlwt.Workbook()
##设置工作表的名称
sht1 = xls.add_sheet(u'数据表')
row = 0
##Excel标题行
FieldList=[u'序号',u'要素名称',u'坐标系名称']
for column in range(len(FieldList)):
    sht1.write(0,column,FieldList[column])

#遍历所有要素
for dirpath,dirnames,filenames in arcpy.da.Walk(arcpy.env.workspace,datatype='FeatureClass'):
    for filename in filenames:
        path=os.path.join(dirpath,filename)
        rpath=str(path).replace("\\","/")
        print unicode(rpath,'utf-8')
        spatial_ref = arcpy.Describe(path).spatialReference
        row += 1
        sht1.write(row,0,row)
        sht1.write(row,1,path)
        sht1.write(row,2,spatial_ref.name)
        #如果要素中含有“Lyr_path”字段,删除,如果没有该字段不会报错
        arcpy.DeleteField_management(path,["Lyr_Path","Lyr_name"])
        #添加字段   注意字段的格式要求
        arcpy.AddField_management(path,"Lyr_Path","TEXT","","",255,"要素路径","NULLABLE","REQUIRED")
        #字段赋值  
        arcpy.CalculateField_management(path,"Lyr_Path",'\"'+str(rpath)+'\"',"PYTHON_9.3")

#保存Excel
xls.save('D:/Desktop/zbx.xls')
print u"完成"






小结

该程序只是简单的将基本功能进行拼凑起来的,可以解决繁杂重复的工作。
还可以进一步优化封装,方便后续调用

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

激动的兔子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值