实验16 对字段自定义赋值
一、目的
地理信息数据的属性表以字段的形式记录了丰富的属性信息,与图形要素进行关联后具 有巨大的分析价值,是地理信息数据的价值之一。该数据属性表中所存储的字段值,通常由 数据采集人员以手动形式录入,是特定、单一的属性值。而在很多情况下,常常需要根据特 定的规律,对字段进行自定义批量化赋值。
本实验讲述使用地理信息系统软件对字段进行自定义批量赋值的方法,字段的赋值规则 为“字母+等差数列”,此处“等差数列”使用的是已有的序号字段。读者通过本实验的练 习,应能够理解对字段进行批量、快速赋值操作的基本原理,熟练掌握使用已有字段值计算 新字段值的方法。
二、数据与工具
本试题用到的数据有:
图层名称 | 格式 | 坐标系 | 说明 |
Shapefile点要素 | Unknown | 字段计算的点要素数据 |
三、解题思路
(1)使用【添加字段】工具,添加新字段。
(2)使用【字段计算器】工具,输入计算公式,完成字段初始赋值。
(3)使用【计算字段】工具,输入计算公式,完成字段初始赋值
四、解题过程
1)创建新字段
右击 points 图层,打开属性表;打开【表选项】 → 【添加字段】对话框,新建字段【名称】设置为 “Mark”,【类型】设置为“文本”;点击【确定】,完成创建。
2)字段赋初始值
右击 Mark 字段,打开【字段计算器】对话框;【解析程序】中勾选 “Python”; 在公 式栏中填写公式 “ID'+str(!FID!)”;点击【确定】,完成字段赋值操作。
注:由于属性表中 “FID”字段为默认字段,其值为递增的等差数列,因此可直接借用该字段值作为新字段初始值的一部分,即数字部分;而字母部分则可使用“加”运算将两者进行连接得以实现。
图 1 赋值结果
3)字段赋初始值
在 ArcToolbox 中,打开【数据管理工具】 → 【字段】 → 【计算字段】 对话框,【输入表】设置为 “points”,【字段名】设置为 “Mark”,点击【字段计算器】按钮,输入表达式 “ID'+str(!FID!)”,【表达式类型】选择 “PYTHON_9.3”;点击【确定】,完成字段赋值操作。
图 2 字段赋初始值结果
实验17 按条件计算属性字段值
一、目的
地理数据的属性表包含了丰富的属性信息,对这些信息进行数据分析,能够筛选出特定 的地理对象,如筛选出全国年降水量超出平均值的城市。该过程中最重要的步骤就是对属性 表字段进行赋值操作。除了常规的赋予指定值、已有字段值等,还需要根据特定的分析条件, 对字段进行条件赋值,如根据已有的年降水量字段值,对全国各城市要素进行类别划分或值分类。
本实验讲述使用地理信息系统软件对字段进行按条件赋值的方法,字段根据设定的不同 分析条件进行属性值的赋予。读者通过实验练习,应能够理解和掌握按条件进行字段值的赋 予方法,同时学会使用脚本语言进行条件函数的编写。
二、数据与工具
本试题用到的数据有:
文件名称 | 格式 | 坐标系 | 说明 |
points | Shapefile点要素 | Krasovsky_1940_Transverse_Mercator | 用于实验的点数据 |
三、解题思路
(1)使用【添加字段】工具,创建新字段。
(2)使用【字段计算器】工具,设置计算条件,对字段赋值
四、解题过程
1)新建分类字段
打开 points 图层属性表,添加短整型字段 “type”;type字段默认的初 始值为0。
2)对字段进行赋值
右击type 字段,打开【字段计算器】对话框,【解析程序】选择 “Python”, 勾选【显示代码块】;本例对value 字段的分类规则: “value<0.2,type=1;0.2<=value<0.8,type=2;value>0.8,type=3”;根据该规则,在【预逻辑脚本代码】编写对应Python 执行代码;(最好在Python编译器中编好,再粘贴到【预逻辑脚本代码】中)
设置【type=】“typeFunc(lvalue!)”;其中, typeFunc 为执行 type 分类的函数,!value!为原始属性表中的 value字段;点击【确定】,得到赋值完成 的type 字段。
注:具体情况可自定义If 结构的判断条件。
图 3 字段赋值结果
实验18 合并表格
一、目的
每个地理信息数据的属性表记录了各自图层要素的属性信息,在存储方式上具有独立 性。在对地理数据进行分析时,常常需要对多个图层的属性表进行合并,如对多个属性表进 行条件查询、汇总统计等。对参与分析的各个图层进行逐个属性表的查询较为复杂,而属性 表的合并能够大大提高分析的效率。
本实验讲述使用地理信息系统软件将多个图层的属性表进行合并的方法,满足多图层属 性表分析的需要。读者通过实验练习,应能够理解和掌握属性表合并的基本方法和要求,学 会使用此方法来分析多图层的属性表信息。需要注意的是,参加合并的属性表必须保证各自 的字段结构严格一致。
二、数据与工具
本试题用到的数据有:
文件名称 | 格式 | 坐标系 | 说明 |
Layer1 | Shapefile面要素 | Unknown | 属性表的源图层 |
Layer2 | Shapefile面要素 | Unknown | 属性表的源图层 |
三、解题思路
(1)使用【导出】工具,选择源图层,导出表数据。
(2)使用【追加】工具,设置需合并的表格,实现表格合并。
四、解题过程步骤
1)方法一:导出图层属性表
右击图层,选择【打开属性表】;选择【表选项】 → 【导出数据】对话 框,【输出表】设置为“table1”; 点击【确定】,得到layer1的属性表,同理得到 layer2 的属性表 table2。
图 4 导出图层属性表步骤
图 5 导出图层属性表结果
在 ArcToolbox 中,打开【数据管理工具】 → 【常规】 → 【追加】对话框,【输入数据集】设置为“Export_Output1”, 【目标数据集】设置为“Export_Output2”,【方案类型】设置为“NO_TEST”,【字段映射】默认设置;点击【确定】,实现表格属性的合并,
注:合并完成后,Export_Output1 和 Export_Output2 的所有记录都存储在 Export_Output2 中。
图 6 追加相关参数设置
图 7 追加结果
2)方法二:使用合并工具合并表格
在ArcToolbox中,打开【数据管理工具】 → 【常规】 → 【合并】对话框,【输入数据集】 设置为 “Export_Output1”和“Export_Output2”,【字段映射】采用默认设置,【输出表格】设置为“Export_Output3”;运行【合并】,实现表格属性的合并。
图 8 合并相关参数设置
实验19 按值修改栅格值
一、目的
地理信息数据包括矢量数据与栅格数据。与矢量数据具有属性表所不同的是,栅格数据 以属性值与图层像元相结合的形式进行存储,每个像元具有唯一属性值,而同一个属性值可 能包含多个像元。因此,栅格数据的属性值更改方法与矢量数据的更改方法存在差异,需要 考虑属性值对应的像元范围,即全部像元或特定位置的像元。
本实验讲述使用地理信息系统软件对栅格数据进行按值修改属性值的方法,属性值更改 的像元范围为所有具有该值的像元。读者通过练习,应能够了解对矢量数据与栅格数据进行 属性值更改的方法差异性,理解两者数据结构的差异与优缺点,掌握处理两种数据属性值的 方法。
二、数据与工具
本试题用到的数据有:
文件名称 | 格式 | 坐标系 | 说明 |
grid | GRID栅格 | Unknown | 原始栅格数据 |
三、解题思路
(1)使用【条件函数】工具,输入公式,实现栅格值替换。
(2)使用【栅格计算器】Con 函数,输入参数,实现栅格值替换。
四、解题过程步骤
1)条件函数工具
在 ArcToolbox 中,打开【Spatial Analyst 工具】 → 【条件分析】 → 【条 件函数】对话框,【输入条件栅格数据】设置为 “grid”;设置【表达式】时点击右侧按钮 打开【查询构建器】窗口,输入【表达式】:"Value"=3;设置【输入条件为 true 时所取的 栅格数据或常量值】为“4”, 【输入条件为 false 时所取的栅格数据或常量值】为原始值;点击【确定】,得到更新后的栅格。
图 9 条件函数参数设置
图 10 条件函数结果
2)栅格计算器中Con 函数
在ArcToolbox中,打开【Spatial Analyst 工具】 → 【地图代数】 → 【栅格计算器】对话框,输入表达式: Con("grid"=3,4,“grid”); 点击【确定】,得到更新后的栅格。
图 11 栅格计算器参数设计
图 12 更新后的栅格
实验20 按像元修改栅格值
一、目的
矢量数据的存储结构是属性与图形相互对应的关系,即属性记录与要素图形一一对应。 修改某个图形的属性值时,仅影响与该记录相对应的要素图形。而栅格数据受其结构的影响, 在修改其属性值时,受影响的要素图形并非特定的一个图形,可能是空间上独立的多个片区。 因此,在修改栅格数据的属性值时,需要考虑像元范围条件,如修改单个像元的属性值、修 改特定区域像元的属性值等。
本实验讲述使用地理信息系统软件对栅格数据按像元进行属性值修改的方法,被修改的 像元是指定的单个像元。读者通过练习,应能够理解按像元修改栅格数据的原理,掌握基于 像元和基于全栅格修改值的方法差异。
二、数据与工具
本试题用到的数据有:
名称 | 格式 | 坐标系 | 说明 |
dem | GRID栅格 | Krasovsky_1940_Transverse_Mercator | 原始栅格数据 |
三、解题思路
(1)使用【栅格转点】工具,输入栅格,生成点要素。
(2)使用【按属性选择】工具,设置选择条件,选中待修改要素点。
(3)使用【字段计算器】工具,输入公式,修改要素字段值。
(4)使用【点转栅格】工具,设置工具参数,生成新栅格
四、解题过程
1)栅格转点要素
在ArcToolbox 中,打开【转换工具】 → 【由栅格转出】 → 【栅格转点】对话框,【输入栅格】设置为 “dem”,【字段】设置为 “VALUE”,【输出点要素】设置为 “pt”;点击【确定】,得到点要素。
注:该点要素为每个格网的中心点, 每个格网的值被写入点要素的属性表中,即字段 GRID_CODE。
图 13 栅格转点参数设置
图 14 栅格转点结果
2)选中待修改值的点要素
双击 dem图层,打开属性对话框,选择【源】选项卡,查询栅格数据的行数和列数为 14和14;由此可计算得到第8行第6列的栅格对应的点要素OBJECTID 为“(8-1) ×14+(6- 1)=103”;对点图层按照 FID字段进行标注;右击点要素,选择【打开属性表】;打开【表选项】 → 【按属性选择】对话框,输入公式:OBJECTID =103;点击【应用】,选中待修改值的点要素。
图 15 筛选待修改值的点要素
图 16 筛选结果
3)修改点要素字段值
保持选中状态,右击GRID_CODE字段,打开【字段计算器】对话框,公式设置为“0”;点击【确定】,完成该栅格对应点要素的值修改。
4)生成修改值后的栅格图层
清空当前选中状态;如图20.10所示,在 ArcToolbox 中,打开【转换工具】 → 【转为栅 格】 → 【点转栅格】对话框,【输入要素】设置为 “pt”,【值字段】设置为 “GRID_CODE”,【输出栅格数据集】设置为 “newdem”,【像元分配类型】参数和【优先级字段】参数均为 默认设置,【像元大小】设置为与 dem 图层一致;点击【确定】,得到修改栅格值后的栅格图层。
图 17 点转栅格参数设置
图 18 点转栅格结果