操作方法
在 ArcGIS Pro 中,某些数据可能包含序号,用于维护数据完整性、确保数据质量以及支持空间分析。 在某些情况下,数据中存在缺失的序号,这可能导致错误,进而引起分析中的不一致或不准确,如下图所示。

本文介绍了在 ArcGIS Pro 中使用 ArcPy 查找字段缺失序号的工作流。
Note: This workflow requires a full script to run in the ArcGIS Pro Python window. All the indents must be retained as portrayed in the code block.
import arcpy def find_missing_sequence(fc, field_name): sequence_numbers = []
with arcpy.da.SearchCursor(fc, [field_name]) as cursor: for row in cursor: # Convert the field value to an integer (assuming it's a float) sequence_numbers.append(int(row[0]))
min_seq = min(sequence_numbers) max_seq = max(sequence_numbers)
expected_sequence = list(range(min_seq, max_seq + 1))
missing_sequence = [num for num in expected_sequence if num not in sequence_numbers] return missing_sequence
if __name__ == "__main__": fc = "<featureClassName>" field_name = "<fieldName>"
missing_sequence = find_missing_sequence(fc, field_name)
if missing_sequence:
print("Missing sequence number(s):", missing_sequence)
else:
print("No missing sequence numbers found.")
以下代码块演示了完整工作脚本。
import arcpy
def find_missing_sequence(fc, field_name):
sequence_numbers = []
with arcpy.da.SearchCursor(fc, [field_name]) as cursor:
for row in cursor:
sequence_numbers.append(int(row[0]))
min_seq = min(sequence_numbers)
max_seq = max(sequence_numbers)
expected_sequence = list(range(min_seq, max_seq + 1))
missing_sequence = [num for num in expected_sequence if num not in sequence_numbers]
return missing_sequence
if __name__ == "__main__":
fc = "Point1"
field_name = "Sequence"
missing_sequence = find_missing_sequence(fc, field_name)
if missing_sequence:
print("Missing sequence number(s):", missing_sequence)
else:
print("No missing sequence numbers found.")
下图显示了使用 ArcPy 在字段中查找缺失序号的结果。

文章 ID: 000032437
获取来自 ArcGIS 专家的帮助
立即开始聊天