注:
目前,此功能仅在 Map Viewer 经典版(之前称为 Map Viewer)中受支持。 该功能将在新 Map Viewer 的未来版本中提供。
重新构建轨迹工具可连接轨迹上的多个时序点,并汇总轨迹内的要素。 根据一个或多个轨迹字段确定轨迹。 生成的图层会以线或面的形式显示轨迹、轨迹中已汇总要素的计数,以及已指定的所有附加统计数据。
工作流示意图
使用 GeoAnalytics Tools 进行的分析
通过跨多个 ArcGIS GeoAnalytics Server 计算机和核心组件的分布式处理来运行使用 GeoAnalytics Tools 进行的分析。GeoAnalytics Tools 和 ArcGIS Enterprise 中标准要素分析工具的参数和功能不同。要了解有关这些差别的详细信息,请参阅要素分析工具差别。
术语
术语 | 描述 |
---|---|
测地线 | 在球体上绘制的线。 在地球上绘制的测地线表示地球大地水准面的曲率。 |
平面 | 在平面上(即笛卡尔平面)上测量的直线距离。 这也被称为欧氏距离。 |
即时 | 由开始时间表示的单个时间点且无结束时间。 |
间隔 | 由开始时间和结束时间表示的一段时间。 |
示例
在美国,飓风是最具破坏力的风暴之一。 您希望了解飓风的行进路径,以确定在过去因飓风造成过巨大财产损失及经济损失的位置,从而评估保险费率。 您可以通过单个数据集访问美国各地的飓风位置数据,且每个位置都标有时间戳。 您需要汇总所有信息,以查看所有飓风相关值的汇总情况。 您可以使用飓风轨迹标识符来汇总数据,以确定各飓风的统计数据。
用法说明
重新构建轨迹会针对点要素或面要素运行。 输入图层必须已启用时间,并具有用于表示时刻的要素。
针对线性结果,仅会返回包含多个点的轨迹。 如果应用了缓冲区,则将返回所有要素。
输入要素将由已启用时间、且能够表示时刻的要素组成。 结果为可表示时间间隔的线或面要素。 该间隔的开始和结束由轨迹中第一个和最后一个要素的时间决定。
通过轨迹中最基本的计算,得出经过汇总的要素数量的计数。 还可以针对数值字段计算统计数据(计数、总和、最小值、最大值、范围、平均值、标准差、方差以及轨迹中的第一个值和最后一个值),并且可以针对字符串字段计算统计数据(计数、任意、轨迹中的第一个值和最后一个值)。 字符串统计数据将从每个轨迹任意返回示例字符串。 系统将分别计算每个轨迹的统计数据。
结果中将返回用于标识轨迹的一个或多个字段。
可以指定一个或多个字段用于标识轨迹。 轨迹由一个或多个轨迹字段的唯一组合表示。 例如,如果将字段 flightID 和 Destination 用作轨迹标识符,则要素 ID007、Solden 和 ID007、Tokoyo 将分别处于两个独立的轨迹,原因是其 Destination 字段值不同。
您可以选择为您的输入要素应用缓冲区。 当您应用缓冲区时,生成的轨迹将为面要素。
需使用字段或缓冲区表达式创建缓冲区。 要了解有关缓冲区表达式和格式的详细信息,请参阅通过 GeoAnalytics Tools 使用缓冲区表达式。 您可以应用轨迹感知型表达式。 例如,您可以通过轨迹中先前三个要素的 wind_speed 字段,再搭配方程 mean($track.field["wind_speed].history(-4, -1)) 以缓冲当前要素。
缓冲输入要素时,每个输入要素都会被缓冲。 随后将生成凸包,以创建面轨迹。
默认情况下,需使用测地线方法创建轨迹。 该方法适用于以下两个分析的组件:
- 跨越国际日期变更线的轨迹 - 当使用测地线方法时,越过国际日期变更线的输入图层将具有正确跨越国际日期变更线的轨迹。 这是默认设置。 必须将您的输入图层或处理空间参考设置为支持环绕国际日期变更线的空间参考,例如“世界圆柱等积”等全球投影。
- 缓冲区 - 可对输入要素进行有选择地缓冲。 要了解有关何时应用测地线或平面缓冲区的详细信息,请参阅创建缓冲区。
可通过以下 4 种方式分割轨迹:
- 基于输入之间的时间 - 应用时间分割
- 以定义的时间间隔 - 应用时间界限
- 基于输入之间的距离 - 应用距离分割
- 基于 Arcade 表达式 - 应用分割表达式
当输入数据大于指定时间时,可应用时间分割将任何轨迹分开。 例如,如果您有五个轨迹标识符相同的要素,时间分别为 [01:00, 02:00, 03:30, 06:00, 06:30],并将时间分割设置为两个小时,则任何经测量间隔超过两小时的要素都将被分割。 在本示例中,结果将为 [01:00, 02:00, 03:30] 和 [06:00, 06:30] 的轨迹,因为 03:30 与 6:00 之间的间隔大于两小时。
应用时间界限会以定义的间隔对轨迹进行分割。 例如,如果将时间界限设置为 1 天,开始于 1990 年 1 月 1 日 9:00 AM,则各个轨迹都会在每天 9:00 AM 被截断。 此分割是一种加快计算速度的快速方法,因为它可以快速创建较小的轨迹以进行分析。 如果您的分析更适合按重复的时间界限进行分割,则建议使用大数据处理。
当输入数据大于指定距离时,可应用距离分割将任何轨迹分开。 例如,如果将距离分割设置为 5 公里,则相距大于 5 公里的连续要素将成为其他轨迹的一部分。
应用分割表达式以基于值、几何或时间值分割轨迹。 例如,可在字段值为轨迹中先前值的两倍以上时分割轨迹。 要实现此目的,利用名为 WindSpeed 的示例字段,您可以使用以下表达式:var speed = TrackFieldWindow("WindSpeed", -1, 1); 2* speed[0] < speed[1]。 将在先前值 (speed[0]) 小于当前值的两倍时对轨迹进行分割。
可以同时应用部分或所有分割选项,或者不应用任何分割选项。 以下所有示例都使用间距分割。 假设您应用 6 小时的时间分割、1 天的时间界限和 16 公里的距离分割,则会得到如下不同结果:
分割选项 | 描述 |
---|---|
六个具有时间和位置的输入点。 | 具有相同标识符的输入点。 点之间的距离标记在虚线的顶部,各点测量的时间标记在点的下方。 时间轴上有 4 处分割。 红色分割代表 1 天的时间界限分割,从凌晨 12:00 开始。 蓝色分割代表两点之间的距离大于 16 公里的距离分割。 紫色分割代表两个连续点之间的时态距离大于 6 小时的时间分割。 |
没有时间分割和没有距离分割的示例。 | |
时间分割为 2 小时的示例。 任何大于两小时的要素都会分割成单独的轨迹。 | |
时间界限为 1 天(从午夜开始)的示例。 从指定时间(此处为 12:00 AM)开始,以 1 天为时间间隔新建轨迹。 | |
距离分割为 16 公里的示例。 任何相距大于 16 公里的要素(05:00 AM 和 06:00 AM 时的要素)都会分割成独立的轨迹。 | |
时间分割为 6 小时和时间界限为 1 天(从 12:00 AM 开始)的示例。任何相差超过 6 小时或与从 12:00 AM 开始的持续时间分割相交的要素都会被分割成独立的轨迹。 | |
时间分割为 6 小时和距离分割为 16 公里的示例。 任何相差大于 6 小时(06:00 AM 和 7:00 PM 时的要素)或相距大于 16 公里的要素都会分割成独立的轨迹。 | |
距离分割为 16 公里和时间界限为一天(从 12:00 AM 开始)的示例。任何相距大于 16 公里或与从 12:00 AM 开始的持续时间分割相交的要素都会被分割成独立的轨迹。 | |
距离分割为 16 公里、时间分割为 6 小时和时间界限为一天(从 12:00 AM 开始)的示例。任何相距大于 16 公里、相差超过 6 小时或与从 12:00 AM 开始的持续时间分割相交的要素都会被分割成独立的轨迹。 |
使用时间分割、距离分割或分割表达式对轨迹进行分割时,可确定如何在分割之间创建段。 时间界限分割将始终创建间距。 轨迹分割选项适用于 ArcGIS Enterprise 10.9 或更高版本。 您具有以下几种选项:
- 间距 - 在分割的两个要素之间创建间距。
- 之后结束 - 创建在分割之后结束的段。
- 之前开始 - 创建在分割之前结束和开始的段。
下图显示了此分割类型的一个示例:
时间分割选项 | 描述 |
五个具有时间和位置的输入点 | 五个具有相同标识符的输入点 将在虚线下方标记每个点的时间。 对于所有示例,2:00 a.m. 和 5:00 a.m. 之间存在一个分割。 每个轨迹将在轨迹上的第三个点和第四个点之间被分割为两段。 第一个轨迹为绿色,第二个轨迹为紫色。 分割轨迹的方式将由分割类型参数定义。 |
间距 | 在分割的两个点之间存在间距的示例。 第一个轨迹将在第三个点处结束,第二个轨迹将从第四个点处开始。 这是默认设置。 |
之后完成 | 轨迹在分割后的第四个点处结束的示例。 第二个轨迹将从第四个点处开始。 |
之前开始 | 轨迹在分割前的第三个点处分割的示例。 第二个轨迹将从第三个点处开始。 |
以下是如何使用分割参数和字段标识符参数可能对定义轨迹有意义的示例,以航班飞行为例:
- 飞机要素包括 aircraft ID、flight ID、pilot name、start time 和 flight_maneuver 字段。
flight_maneuver 字段表示飞机是在陆地上、在上升、在下降还是位于恒定高度。
- 如果想要查看每架飞机的飞行路线,请使用 aircraft ID 作为标识符。
- 如果您有意比较不同的路线,请将 aircraft ID 和 flight ID 字段用作标识符。
- 如果您想要一次性检查每架飞机一年的飞行情况,请使用 aircraft id 和时间界限 1 年。
- 如果您想要查看每位飞行员的飞行情况,请使用 pilot name、aircraft ID 和 start time。
- 可以使用 aircraft ID 作为标识符,并使用大于 1000 公里的距离分割来确定新的轨迹(已知 1000 公里的测量跳跃点不应属于同一轨迹)。
- 可以使用 aircraft ID 字段作为标识符,然后当 flight_manuever 字段中的值发生变化时使用表达式进行分割。 例如,var manuever = TrackFieldWindow("maneuver", -1, 1); maneuver[0] != maneuver[1] 将检查轨迹中的当前值与上一个值是否匹配。 如果不匹配,则将分割轨迹。
输出轨迹将返回用作轨迹标识符的字段、轨迹内的要素计数 (count)、各个轨迹的开始和结束时间(start_datetime 和 end_datetime)、以毫秒为单位的轨迹持续时间 (duration) 以及任何其他可选统计数据。
如果选中使用当前地图范围,则仅对当前地图范围中可见的要素进行分析。如果未选中,则将分析输入图层中的所有输入要素,包括超出当前地图范围的要素。
局限性
输入必须为具有已启用时间的类型时刻要素的点图层或面图层。 任何不具备时间的要素都不会包含在输出轨迹中。
重新构建轨迹的工作原理
以下部分将介绍“重新构建轨迹”工具的功能。
等式
方差由下列等式计算得出:
标准差由方差的平方根计算得出。
计算
可使用唯一标识符将输入图层汇总到轨迹中。 系统将计算每个轨迹中的汇总结果。
针对轨迹内的汇总要素,各个轨迹可选择应用数值统计数据(计数、总和、最小值、最大值、范围、平均值、标准差、方差、第一个和最后一个)或字符串统计数据(计数、任意、第一个和最后一个)。
第一个和最后一个统计数据会返回轨迹中的第一个值或最后一个值。 例如,对于具有下列值的时序轨迹:[Toronto,Guelph,Montreal],第一个值是 Toronto,最后一个值是 Montreal。 第一个和最后一个统计数据在 10.8.1 版本有所提供。
计数统计(针对字符串和数值字段)用于计算非空值的数量。以下值的计数等于 5:[0, 1, 10, 5, null, 6] = 5。该组值的计数等于 3:[Primary, Primary, Secondary, null] = 3。
ArcGIS API for Python 示例
可通过 ArcGIS API for Python 获取重新构建轨迹工具。
本示例可重新构建飓风轨迹。
# Import the required ArcGIS API for Python modules
import arcgis
from arcgis.gis import GIS
from arcgis.geoanalytics import summarize_data
# Connect to your ArcGIS Enterprise portal and confirm that GeoAnalytics is supported
portal = GIS("https://myportal.domain.com/portal", "gis_publisher", "my_password")
if not portal.geoanalytics.is_supported():
print("Quitting, GeoAnalytics is not supported")
exit(1)
# Find the big data file share dataset you'll use for analysis
search_result = portal.content.search("", "Big Data File Share")
# Look through the search results for a big data file share with the matching name
bdfs_search = next(x for x in search_result if x.title == "bigDataFileShares_NaturalDisasters")
# Look through the big data file share for hurricanes
hurricanes = next(x for x in bdfs_search.layers if x.properties.name == "Hurricanes")
# Set the tool environment settings
arcgis.env.verbose = True
# Reconstruct the hurricane tracks by their serial number
track_result = summarize_data.reconstruct_tracks(input_layer = hurricanes,
track_fields = "serial_num",
method = 'Geodesic',
output_name = "hurricane_tracks")
# Visualize the tool results if you are running Python in a Jupyter Notebook
processed_map = portal.map('World')
processed_map.add_layer(track_result)
processed_map
类似工具
使用重新构建轨迹汇总轨迹中的要素。 其他工具或许在解决略有差异的类似问题时十分有用。
Map Viewer 经典版 分析工具
如果您正在尝试使用不同的空间关系对点、线或面进行汇总,请使用连接要素工具。
ArcGIS Pro 分析工具
重新构建轨迹工具同样适用于 ArcGIS Pro。
要从 ArcGIS Pro 运行该工具,则工程的活动门户必须运行 ArcGIS Enterprise 10.5 或更高版本。 对于 10.5,您必须使用相应帐户登录到门户,该帐户应具有在门户中执行空间分析的权限。