Skip To Content

计算字段

注:

目前,此功能仅在 Map Viewer 经典版(之前称为 Map Viewer)中受支持。 该功能将在新 Map Viewer 的未来版本中提供。

计算字段 计算字段工具用于计算新的或现有字段上的字段值。 输出将始终是 ArcGIS Enterprise 门户内容中的新图层。

使用 GeoAnalytics Tools 进行的分析

通过跨多个 ArcGIS GeoAnalytics Server 计算机和核心组件的分布式处理来运行使用 GeoAnalytics Tools 进行的分析。GeoAnalytics ToolsArcGIS Enterprise 中标准要素分析工具的参数和功能不同。要了解有关这些差别的详细信息,请参阅要素分析工具差别

示例

假设您已经收集了全国连锁超市的销售数据。 您目前在名为 TotalSales 的现有字段中拥有按年份排列的销售总额的值,并且您想要计算每个地点的销售总额。 您希望该字段表示 2016 年和 2017 年总销售额的总和。 可以在表达式中使用这些字段,计算字段值为 $feature["Sales2016"] + $feature["Sales2017"]

假设您拥有记录城市中公共汽车的位置、时间、ID 和速度的 GPS 测量结果。 您希望创建一个名为 SpeedFrom3 的新字段,用于计算每个要素最后 3 次记录的 GPS 测量结果的平均速度。 对于此计算,您将使用追踪感知型计算,其中轨迹为由公交车 ID 表示的公交车。 用于确定前 3 个时间步长和当前时间步长的平均速度的计算为 average($track.field["speed"].history(-4))

用法说明

计算字段可运行于表格、点、线或面要素上。

您一次只能计算一个字段的值。

您可以计算已存在字段的值,或通过指定新字段名称来创建新字段。

可以使用 Arcade 表达式创建表达式。

了解有关计算字段中 Arcade 表达式的详细信息

您的计算可选择为追踪感知型。 追踪感知型方程使用应用轨迹函数的 Arcade 表达式。

要包括追踪感知型计算,您必须执行以下操作:

  • 使用已启用时间且时间类型为时刻的图层。
  • 选择表达式为追踪感知型
  • 选择用于标识轨迹的字段。

轨迹由一个或多个轨迹字段的唯一组合表示。 例如,如果将字段 flightIDDestination 用作轨迹标识符,则以下要素 [ID007Solden] 和 [ID007Tokyo] 将分别处于两个独立的轨迹,原因是 Destination 字段的值不同。

以定义间隔应用时间间隔边界线段轨迹。 例如,如果您将时间间隔边界设置为 1 天,开始于 1990 年 1 月 1 日上午 9:00,则轨迹会在每天上午 9:00 被截断,并就该线段进行分析。 此分割是一种加快计算速度的快速方法,因为它可以快速创建较小的轨迹以进行分析。 如果您的分析更适合按重复的时间间隔界限进行分割,则建议使用大数据处理。 您的分析必须为追踪感知型以设置时间边界。

输出要素将返回输入中的字段。 如果您计算了新字段的值,则该字段将额外包含在内。

如果选中使用当前地图范围,则仅对当前地图范围中可见的要素进行分析。如果未选中,则将分析输入图层中的所有输入要素,包括超出当前地图范围的要素。

局限性

每次只能修改一个字段。

计算字段将始终生成一个新的要素图层,并且不会编辑您的输入数据集。

ArcGIS API for Python 示例

可通过 ArcGIS API for Python 获取计算字段工具。

本示例可计算表示地震发生年份的新字段。 然后,该工具可使用 Pandas 数据框显示修改后的数据。


# Import the required ArcGIS API for Python modules
import arcgis
from arcgis.gis import GIS
from arcgis.geoanalytics import manage_data
from arcgis.features import FeatureLayer


# Connect to your ArcGIS Enterprise portal and confirm that GeoAnalytics is supported
portal = GIS("https://myportal.domain.com/portal", "gis_publisher", "my_password", verify_cert=False)
if not portal.geoanalytics.is_supported():
    print("Quitting, GeoAnalytics is not supported")
    exit(1)   

# Define the feature layer you'll use for analysis
earthquake_data_url = "https://sampleserver6.arcgisonline.com/arcgis/rest/services/Earthquakes_Since1970/FeatureServer/0"
earthquake_data = FeatureLayer(earthquake_data_url)

# Calculate the year number from the date_ field
calculate_field_result = manage_data.calculate_fields(input_layer = earthquake_data, 
                                                      field_name = "year_num", 
                                                      data_type = "Integer",
                                                      expression = "Year($feature.date_)", 
                                                      output_name = "Earthquake_occurence_years")

# Visualize the results as a Pandas DataFrame when running Python in a Jupyter Notebook
import pandas as pd
features = calculate_field_result.layers[0].query()
df = pd.DataFrame.from_records(pd.DataFrame(features.value['features'])["attributes"])
df

类似工具

使用计算字段计算新的或现有字段中的要素值。 其他工具或许在解决略有差异的类似问题时十分有用。

Map Viewer 经典版 分析工具

如果要在在启用时间的图层中检测要素,请使用检测事件工具。

ArcGIS Pro 分析工具

可在 ArcGIS Pro 中获取计算字段工具。

如果要计算输入值并修改现有数据,请使用 ArcGIS Pro工具。

要从 ArcGIS Pro 运行此工具,您的活动门户必须为 Enterprise 10.6 或更高版本。您必须使用具有执行 GeoAnalytics 要素分析权限的帐户登录。