注:
目前,此功能仅在 Map Viewer 经典版(之前称为 Map Viewer)中受支持。 该功能将在新 Map Viewer 的未来版本中提供。
计算字段工具用于计算新的或现有字段上的字段值。 输出将始终是 ArcGIS Enterprise 门户内容中的新图层。
使用 GeoAnalytics Tools 进行的分析
通过跨多个 ArcGIS GeoAnalytics Server 计算机和核心组件的分布式处理来运行使用 GeoAnalytics Tools 进行的分析。GeoAnalytics Tools 和 ArcGIS Enterprise 中标准要素分析工具的参数和功能不同。要了解有关这些差别的详细信息,请参阅要素分析工具差别。
示例
假设您已经收集了全国连锁超市的销售数据。 您目前在名为 TotalSales 的现有字段中拥有按年份排列的销售总额的值,并且您想要计算每个地点的销售总额。 您希望该字段表示 2016 年和 2017 年总销售额的总和。 可以在表达式中使用这些字段,计算字段值为 $feature["Sales2016"] + $feature["Sales2017"]。
假设您拥有记录城市中公共汽车的位置、时间、ID 和速度的 GPS 测量结果。 您希望创建一个名为 SpeedFrom3 的新字段,用于计算每个要素最后 3 次记录的 GPS 测量结果的平均速度。 对于此计算,您将使用追踪感知型计算,其中轨迹为由公交车 ID 表示的公交车。 用于确定前 3 个时间步长和当前时间步长的平均速度的计算为 average($track.field["speed"].history(-4))。
用法说明
计算字段可运行于表格、点、线或面要素上。
您一次只能计算一个字段的值。
您可以计算已存在字段的值,或通过指定新字段名称来创建新字段。
可以使用 Arcade 表达式创建表达式。
您的计算可选择为追踪感知型。 追踪感知型方程使用应用轨迹函数的 Arcade 表达式。
要包括追踪感知型计算,您必须执行以下操作:
- 使用已启用时间且时间类型为时刻的图层。
- 选择表达式为追踪感知型。
- 选择用于标识轨迹的字段。
轨迹由一个或多个轨迹字段的唯一组合表示。 例如,如果将字段 flightID 和 Destination 用作轨迹标识符,则以下要素 [ID007、Solden] 和 [ID007、Tokyo] 将分别处于两个独立的轨迹,原因是 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 要素分析权限的帐户登录。