操作方法

操作方法:在 Portal for ArcGIS 和 ArcGIS Online Map Viewer 中使用 Arcade 在字段中标识缺失数字的范围。

Last Published: June 6, 2024

摘要

在 Portal for ArcGIS 和 ArcGIS Online Map Viewer 中,自动识别范围内的缺失数字可以简化错误检测和更正过程。 对于大型数据集而言,这一点尤其重要,因为人工检查几乎无法实现。

本文介绍了在 Portal for ArcGIS 和 ArcGIS Online Map Viewer 中使用 Arcade 在弹出窗口字段中标识缺失数字范围的工作流。 在本示例中,TestNumber 字段中列出的数字范围(1 到 20)中缺失一些数字,如下图所示。

ArcGIS Online 中的属性表   

过程

  1. 在 Portal for ArcGIS 或 ArcGIS Online Map Viewer 中,打开包含数字数据集的 web 地图。
  2. 内容(深色)工具栏上,单击图层以打开图层窗格,然后选择具有要配置的弹出窗口的图层。
  3. 设置(浅色)工具栏中,单击弹出窗口
  4. 弹出窗口窗格中,单击选项下的属性表达式
  5. 属性表达式窗格中,单击 + 添加表达式
  6. 在编辑器窗口中,为 Arcade 表达式创建名称并指定 Arcade 表达式。
    1. 创建一个表示所需数字范围的数组。 在本示例中,该范围设置为 1 到 20。
var range = [];
for (var i = 1; i <= 20; i++) {
    Push(range, i);
}
  1. 采集所选图层要素的所有值。 将“<layerName>”和“<fieldName>”分别替换为图层名称和字段名称。
var features = FeaturesetByName($map, "<layerName>", ["<fieldName>"]);
  1. 初始化一个数组以存储数字。
var testNumbers = [];
  1. 遍历要素并采集数字。
for (var f in features) {
    if (!IsEmpty(f.TestNumber)) {
        Push(testNumbers, Number(f.TestNumber));
    }
}
  1. 检查数字数组是否为空。
if (Count(testNumbers) == 0) {
    return "No test numbers available.";
}
  1. 对数字数组进行排序。
testNumbers = Sort(testNumbers);
  1. 初始化一个空数组以存储缺失数字。
var missingNumbers = [];
  1. 遍历指定范围,将缺失的数字添加至“missingNumbers”数组。
for (var i in range) {
    if (IndexOf(testNumbers, range[i]) == -1) {
        Push(missingNumbers, range[i]);
    }
}
  1. 将“missingNumbers”数组转换为字符串。
var missingNumbersString = Concatenate(missingNumbers, ", ");
  1. 返回缺失的数字,如果未缺失数字,则返回一条消息。
if (Count(missingNumbers) == 0) {
    return "No missing test numbers within the range 1 to 20.";
} else {
    return "Missing test numbers within the range 1 to 20: " + missingNumbersString;
}

以下代码显示了完整的工作脚本范例:

var range = [];
for (var i = 1; i <= 20; i++) {
    Push(range, i);
}

var features = FeaturesetByName($map, "Pointsss", ["TestNumber"]);

var testNumbers = [];

for (var f in features) {
    if (!IsEmpty(f.TestNumber)) {
        Push(testNumbers, Number(f.TestNumber));
    }
}

if (Count(testNumbers) == 0) {
    return "No test numbers available.";
}

testNumbers = Sort(testNumbers);

var missingNumbers = [];

for (var i in range) {
    if (IndexOf(testNumbers, range[i]) == -1) {
        Push(missingNumbers, range[i]);
    }
}

var missingNumbersString = Concatenate(missingNumbers, ", ");

if (Count(missingNumbers) == 0) {
    return "No missing test numbers within the range 1 to 20.";
} else {
    return "Missing test numbers within the range 1 to 20: " + missingNumbersString;
}
  1. 单击完成
  1. 属性表达式窗格中,单击新创建的 Arcade 表达式上方的上一个 “上一个”按钮 按钮。
  2. 弹出窗口窗格中,单击字段列表 > 选择字段
  3. 表达式下,选择新创建的 Arcade 表达式,然后单击完成

下图通过弹出窗口显示了根据指定范围列出的缺失数字。

将在弹出窗口中列出缺失的数字

文章 ID: 000032685

获得人工智能支持

使用 Esri Support AI Chatbot 快速解决您的问题。

立即开始聊天

相关信息

发现关于本主题的更多内容

获取来自 ArcGIS 专家的帮助

联系技术支持部门

立即开始聊天

转至下载选项