本文主要是介绍ArcGIS地类编码转地类名称,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 一、土地利用数据下载
- 二、地类编码转地类名称
- 1.属性表连接
- 2.字段编辑器
- 总结
前言
地类编码是为识别土地利用类型和属性特征而设置的编码。在地理信息系统中常常会用到,本文仅作练习使用。
一、土地利用数据下载
全国土地利用类型遥感监测空间分布数据
登录注册,可免费下载各省1km数据。
二、地类编码转地类名称
1.属性表连接
提前设置地类编码表格:在excel中打入下方表格,并另存为csv格式或dBase(方便ArcGIS打开):
在【内容列表】中,右键单击土地利用栅格图层,点击【连接和关联】→【连接】,连接将基于字段选择“VALUE”,连接表选择提前设置好的地类编码表格,连接基础字段为DLBM。
2.字段编辑器
在【内容列表】中,右键单击土地利用数据图层,选择【打开属性表】,点击属性表左上角
按钮,选择【添加字段】。添加长度为10的文本类型字段“DLMC”。
在属性表中,右键单击“DLMC”标题,点击【字段计算器】,
在【字段计算器】中,解析程序选择“Python”,勾选“显示代码块”,输入下方代码,DLBM=文本框下输入代码块中输入的函数flag(),输入光标移到括号中,点击字段列表中的“Value”;
依据地类编码写入地类名称,代码如下:
def flag(p):if p == 11 : return '水田'if p == 12 : return '旱地'if p == 21 : return '有林地'if p == 22 : return '灌木林'if p == 23 : return '疏林地'if p == 24 : return '其他林地'if p == 31 : return '高覆盖草地'if p == 32 : return '中覆盖度草地'if p == 33 : return '低覆盖度草地'if p == 41 : return '河渠'if p == 42 : return '湖泊'if p == 43 : return '水库坑塘'if p == 44 : return '永久性冰川雪地'if p == 45 : return '滩涂'if p == 46 : return '滩地'if p == 51 : return '城镇用地'if p == 52 : return '农村居民点'if p == 53 : return '其他建设用地'if p == 61 : return '沙地'if p == 62 : return '戈壁'if p == 63 : return '盐碱地'if p == 64 : return '沼泽地'if p == 65 : return '裸土地'if p == 66 : return '裸岩石质地'if p == 67 : return '其它'if p == 99 : return '海洋'
提示:输入参数p为整型字段,返回值输入文本型字段。
在【内容列表】中,右键单击土地利用数据图层,选择【打开属性表】,点击属性表左上角
按钮,选择【添加字段】。
添加长度为10的文本类型字段“DLBM”。
在属性表中,右键单击“DLBM”标题,点击【字段计算器】,
在【字段计算器】中,解析程序选择“Python”,勾选“显示代码块”,输入下方代码,DLBM=文本框下输入代码块中输入的函数flag(),输入光标移到括号中,点击字段列表中的“DLMC”;
依据地类名称写入地类编码,代码如下:
def flag(p):if p == u'水田' : return 11if p == u'旱地' : return 12if p == u'有林地' : return 21if p == u'灌木林' : return 22if p == u'疏林地' : return 23if p == u'其他林地' : return 24if p == u'高覆盖草地' : return 31if p == u'中覆盖度草地' : return 32if p == u'低覆盖度草地' : return 33if p == u'河渠' : return 41if p == u'湖泊' : return 42if p == u'水库坑塘' : return 43if p == u'永久性冰川雪地' : return 44if p == u'滩涂' : return 45if p == u'滩地' : return 46if p == u'城镇用地' : return 51if p == u'农村居民点' : return 52if p == u'其他建设用地' : return 53if p == u'沙地' : return 61if p == u'戈壁' : return 62if p == u'盐碱地' : return 63if p == u'沼泽地' : return 64if p == u'裸土地' : return 65if p == u'裸岩石质地' : return 66if p == u'其它' : return 67if p == u'海洋' : return 99
提示:输入参数p为文本型字段,返回值输入整型字段。地类名称文本前加u,以避免读取中文时乱码,另一方法为在地类名称文本后方加入.decode(’utf-8'),例如
def flag(p):
if p == '水田'.decode('utf-8') : return 11
if p == '旱地'.decode('utf-8') : return 12
if p == '有林地'.decode('utf-8') : return 21
if p == '灌木林'.decode('utf-8') : return 22
if p == '疏林地'.decode('utf-8') : return 23
if p == '其他林地'.decode('utf-8') : return 24
if p == '高覆盖草地'.decode('utf-8') : return 31
if p == '中覆盖度草地'.decode('utf-8') : return 32
if p == '低覆盖度草地'.decode('utf-8') : return 33
if p == '河渠'.decode('utf-8') : return 41
if p == '湖泊'.decode('utf-8') : return 42
if p == '水库坑塘'.decode('utf-8') : return 43
if p == '永久性冰川雪地'.decode('utf-8') : return 44
if p == '滩涂'.decode('utf-8') : return 45
if p == '滩地'.decode('utf-8') : return 46
if p == '城镇用地'.decode('utf-8') : return 51
if p == '农村居民点'.decode('utf-8') : return 52
if p == '其他建设用地'.decode('utf-8') : return 53
if p == '沙地'.decode('utf-8') : return 61
if p == '戈壁'.decode('utf-8') : return 62
if p == '盐碱地'.decode('utf-8') : return 63
if p == '沼泽地'.decode('utf-8') : return 64
if p == '裸土地'.decode('utf-8') : return 65
if p == '裸岩石质地'.decode('utf-8') : return 66
if p == '其它'.decode('utf-8') : return 67
if p == '海洋'.decode('utf-8') : return 99
总结
以上就是今天要讲的内容,本文仅仅简单介绍了ArcGIS属性表连接及字段计算器的使用,而ArcGIS属性表连接及字段计算器还有很多的操作空间。
这篇关于ArcGIS地类编码转地类名称的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!