操作方法

操作方法:在 ArcMap 中将属性表中的空值替换为零

Last Published: May 26, 2020

摘要

属性表可能包含多个具有空值的字段,默认情况下,将使用空格填充这些字段。 在某些情况下,如果未使用字符(不可空字段)填充这些字段,则某些工具或函数将不执行。

过程

本文将介绍两种方法来替换属性表中的空值:通过替换属性表中的空值,或者通过替换单个列(字段)中的空值。

使用 ArcPy 模块来替换属性表中的空值

: 以下脚本可以用于 ArcMap 的 Python 控制台中,或者用作独立脚本。
  1. 导入所需的模块。
import arcpy
  1. 指定要素类的路径。
path = r'C:\Users\User\Test\Misc\Test.gdb\Testing'
  1. 列出所有字段,然后创建一个空数组以存储所有字段值。
fieldObs = arcpy.ListFields(path) fieldNames = []
  1. 对字段进行循环,然后确定值的计数。
for field in fieldObs: fieldNames.append(field.name) del fieldObs fieldCount = len(fieldNames)
  1. 使用 UpdateCursor() 函数创建一个新循环以查找空字段并将其替换为所需值。
with arcpy.da.UpdateCursor(path, fieldNames) as curU: for row in curU: rowU = row for field in range(fieldCount): if rowU[field] == None: rowU[field] = "0" curU.updateRow(rowU)
  1. 创建创建的游标以释放要素类上的锁定。
del curU

以下显示了完整脚本:

import arcpy path = r'C:\Users\User\Desktop\Misc\Piracy.gdb\Continents' fieldObs = arcpy.ListFields(path) fieldNames = [] for field in fieldObs: fieldNames.append(field.name) del fieldObs fieldCount = len(fieldNames) with arcpy.da.UpdateCursor(path, fieldNames) as curU: for row in curU: rowU = row for field in range(fieldCount): if rowU[field] == None: rowU[field] = "0" curU.updateRow(rowU) del curU

使用“计算字段”和 Python 解析程序替换单个字段中的空值

  1. 在 ArcMap 中,单击编辑器工具栏上的编辑器下拉菜单,然后选择开始编辑
  2. 内容列表中,右键单击所选图层,然后选择打开属性表
属性表中具有空值的字段的图像。
  1. 右键单击具有空值的字段,然后选择字段计算器
选择字段的字段计算器的图像。
  1. 字段计算器中,选择 Python 解析程序,然后选中显示代码块复选框。
  2. 预逻辑脚本代码框中,复制并粘贴以下代码:
def updateValue(value): if value == None: return '0' else: return value
  1. 在第二个框中键入以下代码,然后将“!Field_Name!”替换为字段列表中的字段名,如下图所示。
updateValue(!Field_Name!)

在“字段计算器”中计算空值的图像。
  1. 单击确定后,该字段中的空值将替换为零,如下图所示。
空字段值替换为零的图像。
  1. 编辑器工具栏中,单击停止编辑保存编辑内容以保留更改。

文章 ID: 000016100

接收通知并查找新问题或常见问题的解决方案

从我们全新的 AI 聊天机器人中获得简明答案和视频解决方案。

下载 Esri 支持应用程序

获取来自 ArcGIS 专家的帮助

联系技术支持部门

下载 Esri 支持应用程序

转至下载选项