ArcGIS地类编码转地类名称

2024-01-09 20:59

本文主要是介绍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地类编码转地类名称的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/588418

相关文章

C#实现获得某个枚举的所有名称

《C#实现获得某个枚举的所有名称》这篇文章主要为大家详细介绍了C#如何实现获得某个枚举的所有名称,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以参考一下... C#中获得某个枚举的所有名称using System;using System.Collections.Generic;usi

SSID究竟是什么? WiFi网络名称及工作方式解析

《SSID究竟是什么?WiFi网络名称及工作方式解析》SID可以看作是无线网络的名称,类似于有线网络中的网络名称或者路由器的名称,在无线网络中,设备通过SSID来识别和连接到特定的无线网络... 当提到 Wi-Fi 网络时,就避不开「SSID」这个术语。简单来说,SSID 就是 Wi-Fi 网络的名称。比如

C++ | Leetcode C++题解之第393题UTF-8编码验证

题目: 题解: class Solution {public:static const int MASK1 = 1 << 7;static const int MASK2 = (1 << 7) + (1 << 6);bool isValid(int num) {return (num & MASK2) == MASK1;}int getBytes(int num) {if ((num &

C语言 | Leetcode C语言题解之第393题UTF-8编码验证

题目: 题解: static const int MASK1 = 1 << 7;static const int MASK2 = (1 << 7) + (1 << 6);bool isValid(int num) {return (num & MASK2) == MASK1;}int getBytes(int num) {if ((num & MASK1) == 0) {return

form表单提交编码的问题

浏览器在form提交后,会生成一个HTTP的头部信息"content-type",标准规定其形式为Content-type: application/x-www-form-urlencoded; charset=UTF-8        那么我们如果需要修改编码,不使用默认的,那么可以如下这样操作修改编码,来满足需求: hmtl代码:   <meta http-equiv="Conte

4-4.Andorid Camera 之简化编码模板(获取摄像头 ID、选择最优预览尺寸)

一、Camera 简化思路 在 Camera 的开发中,其实我们通常只关注打开相机、图像预览和关闭相机,其他的步骤我们不应该花费太多的精力 为此,应该提供一个工具类,它有处理相机的一些基本工具方法,包括获取摄像头 ID、选择最优预览尺寸以及打印相机参数信息 二、Camera 工具类 CameraIdResult.java public class CameraIdResult {

Python字符编码及应用

字符集概念 字符集就是一套文字符号及其编码的描述。从第一个计算机字符集ASCII开始,为了处理不同的文字,发明过几百种字符集,例如ASCII、USC、GBK、BIG5等,这些不同的字符集从收录到编码都各不相同。在编程中出现比较严重的问题是字符乱码。 几个概念 位:计算机的最小单位二进制中的一位,用二进制的0,1表示。 字节:八位组成一个字节。(位与字节有对应关系) 字符:我们肉眼可见的文字与符号。

ArcGIS Pro 克隆clone python环境报错问题处理方法

ArcGIS Pro 克隆clone python环境报错问题处理方法 (一)安装arcpro和深度学习安装包 首先安装arcgis pro桌面版和深度学习安装包后 然后克隆默认 Python 环境 arcgispro-py3 接下来,安装以下 Python 软件包:Tensorflow、fast.ai、Keras、Pytorch、Scikit-image、Pillow 和 Libtiff。 切

Oracle 查看表空间名称及大小和删除表空间及数据文件方法

--1、查看表空间的名称及大小  SELECT t.tablespace_name, round(SUM(bytes / (1024 * 1024)), 0) ts_size  FROM dba_tablespaces t, dba_data_files d  WHERE t.tablespace_name = d.tablespace_name  GROUP BY t.tablespace_na

在Eclipse环境下修改Tomcat编码的问题

问题: 由于BMS需要设置UTF-8编码,要不就会出现中文乱码问题; 一、项目保持UTF-8格式; 二、由于可能会多次移除项目、加载项目,不想每次都要修改tmp0\conf 原因: 如果在eclipse中配置了tomcat后,其实,tomcat所用的所有tomcat配置文件,都不是catalina_home/config下面的xml文件,而是在eclipse所创建的Serve