Arcgis属性表字段值批量替换

1、简述

实验课上,老师让我们依据出台的《国土空间调查、规划、用途管制用地用海分类说明》更改原有三调数据分类名中的属性字段值
在这里插入图片描述
如上图所示,原始的三调数据中的分类名:冰川及永久积累,依据新出台的文件《国土空间调查、规划、用途管制用地用海分类说明》,要求把其改成:冰川及常年积累
由于更改的数量较多,因而选择使用Python批量替换三调数据分类名。
更改结果如下图所示:
在这里插入图片描述

2、详细步骤

2.1新建字段

在ArcMap中,插入shapfile文件,然后打开该文件的属性表,添加字段名为DLMC_New,类型为文本,字段属性默认。
在这里插入图片描述

2.2 打开字段计算器添加代码

右键新建的字段DLMC_New,打开字段计算器
在这里插入图片描述
选中Python,勾选代码块,添加代码,代码在最后,并在DLMC_New= 中插入已经写好的函数func(name),其中的name要换成!DLMC!,即func(!DLMC!)
在这里插入图片描述

2.3代码

def func(name):
	##附表00湿地
	if name==('沼泽地'.decode('utf-8')):
		a='其他沼泽地'
		return a.decode('utf-8')
	##附表01耕地、02种植园用地、03林地、04草地 这里由于内容相同,因此用return name 下文内容相同部分直接省略描述
	##05H1商业服务业用地
	elif name==('商业服务业用地'.decode('utf-8')):
		a='需手动修改'
		return a.decode('utf-8')
	##0508物流仓储用地
	elif name==('物流仓储用地'.decode('utf-8')):
		a='需手动修改'
		return a.decode('utf-8')
	##0601工业用地
	elif name==('物流仓储用地'.decode('utf-8')):
		a='需手动修改'
		return a.decode('utf-8')
	##0701城镇住宅用地
	elif name==('城镇住宅用地'.decode('utf-8')):
		a='需手动修改'
		return a.decode('utf-8')
	##0702农村宅基地
	elif name==('农村宅基地'.decode('utf-8')):
		a='需手动修改'
		return a.decode('utf-8')
	##08H1机关团体新闻出版用地
	elif name==('机关团体新闻出版用地'.decode('utf-8')):
		a='机关团体用地'
		return a.decode('utf-8')
	##08H2科教文卫用地
	elif name==('科教文卫用地'.decode('utf-8')):
		a='需手动修改'
		return a.decode('utf-8')
	##0809公用设施用地
	elif name==('公用设施用地'.decode('utf-8')):
		a='需手动修改'
		return a.decode('utf-8')
	##0810公园与绿地
	elif name==('公园与绿地'.decode('utf-8')):
		a='需手动修改'
		return a.decode('utf-8')
	##1001铁路用地
	elif name==('铁路用地'.decode('utf-8')):
		a='需手动修改'
		return a.decode('utf-8')
	##1002轨道交通用地
	elif name==('轨道交通用地'.decode('utf-8')):
		a='城市轨道交通用地'
		return a.decode('utf-8')
	##1004城镇村道路用地
	elif name==('城镇村道路用地'.decode('utf-8')):
		a='需手动修改'
		return a.decode('utf-8')
	##1005交通服务场站用地
	elif name==('交通服务场站用地'.decode('utf-8')):
		a='需手动修改'
		return a.decode('utf-8')
	##1006农村道路
	elif name==('农村道路'.decode('utf-8')):
		a='需手动修改'
		return a.decode('utf-8')
	##1008港口码头用地
	elif name==('港口码头用地'.decode('utf-8')):
		a='需手动修改'
		return a.decode('utf-8')
	##1104沟渠
	elif name==('沟渠'.decode('utf-8')):
		a='需手动修改'
		return a.decode('utf-8')
	##1109水工建筑用地
	elif name==('水工建筑用地'.decode('utf-8')):
		a='水工设施用地'
		return a.decode('utf-8')
	##1110冰川及永久积雪
	elif name==('冰川及永久积雪'.decode('utf-8')):
		a='冰川及常年积雪'
		return a.decode('utf-8')
	##1202设施农用地
	elif name==('设施农用地'.decode('utf-8')):
		a='需手动修改'
		return a.decode('utf-8')
	##无此用地用海分类
	elif name==('无此用地用海分类'.decode('utf-8')):
		a='需手动修改'
		return a.decode('utf-8')
	else:
		return name

须注意的是,由于自己还是个Arcgis菜鸡,刚开始写的时候,代码总是不能运行成功,后发现原来是在Arcgis中,如果没有将文字转为utf-8 就会一直报错,因此需使用转换代码,即:if name==('沼泽地'.decode('utf-8')):

  • 9
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值