空间-时间聚类分析
数据同时具有空间和时态背景:所有事件均具有一个发生地点和发生时间。您可以通过多种工具(包括热点分析、聚类和异常值分析和分组分析)来帮助您利用数据的这些相关信息。您可以根据数据的空间和时态背景回答如下问题:
- 空间-时间犯罪热点位于哪些区域?如果您是犯罪分析人员,那么可使用空间-时间热点分析的结果来确保尽可能有效地分配警力。您希望这些警力在正确的时间出现在正确的地点。
- 哪些地方存在消费异常?为了确定欺诈行为,您可使用聚类和异常值分析来仔细审查消费行为以查找空间和时间上的异常值。消费模式或消费频率的突变可能表明存在可疑活动。
- 细菌爆发的特征是什么?假定您正在研究从您所在州的奶场采集的沙门氏菌样本。要描述各个爆发的特征,您可以对样本数据运行分组分析,并同时在空间和时间上对组成员资格进行限制。在时间和空间上比较接近的样本最有可能属于同一爆发。
空间统计工具箱中的多个工具都可以根据邻近要素对每个要素进行评估。当根据空间和时间定义邻域关系时,传统的空间分析将变成一种空间-时间分析。要使用空间和时态参数定义邻域关系,请使用生成空间权重矩阵工具,并选择空间关系的概念化参数的 SPACE_TIME_WINDOW 选项。然后,指定阈值距离和时间间隔(日期/时间间隔类型和日期/时间间隔值)。例如,如果所提供的空间距离为 1 公里,时间间隔为 7 天,那么将对 1 公里范围内并且日期/时间戳在 7 天之内的要素同时进行分析。同样地,如果 1 公里范围内的相邻要素不在 7 天时间间隔范围以内,则不会将其视为邻近要素。
时间快照的更多用途
了解数据中的空间和时态趋势的一种常用方法是将数据划分为一系列时间快照。例如,可以分别为周一、周二、周三、周四和周五创建单独的数据集。然后,可单独分析每周的数据并将分析结果显示为一系列地图或一个动画。虽然这是一种显示趋势的有效方法,但是决定如何划分数据在某种程度上却是随意的。例如,如果您将按周对数据进行分析,那么如何确定怎样进行划分?是否应在星期天和星期一之间对数据进行划分?也许应划分为星期一至星期四,然后是星期五至星期天?以周为间隔对数据进行分析有什么特殊之处?是否按日分析或按月分析会更加有效?如果划分(例如,将星期日的事件与星期一的事件划分开)要将确实存在关系的要素分开,则含义就非常重要。在下面的示例中,有 6 个要素落在标有 Jan 31 的要素的“1 公里-7 天”空间-时间窗内;但是,如果使用按月快照对数据进行分析,那么只有一个要素将被视为邻近要素而包括进来。
使用 SPACE_TIME_WINDOW 定义要素关系时,您将不会创建数据快照。而是会使用所有数据进行分析。由于要相对于目标要素的位置和时间戳对所有要素关系进行评估,因此会将空间和时间上彼此相邻的要素放在一起进行分析;在上述示例中 (A.),“1 公里-7 天”空间-时间窗为标有 Jan 31 的要素找到 6 个相邻要素。
假设您正在分析某一区域内的火灾。如果使用默认 FIXED_DISTANCE_BAND 概念化运行热点分析工具来定义要素关系,所得结果将是一个显示具有统计显著性的火灾热点和冷点位置的地图。如果您随后再次运行此分析,但这次是根据空间-时间窗定义空间关系,您可能会发现某些热点区域是季节性的。了解火灾的这种时态特征可为如何分配消防资源提供重要指示。
显示空间-时间结果
热点图通常以红色显示高密度区域(热点),以蓝色显示低密度区域(冷点)。例如,如下图所示,红色区域是接到 911 紧急呼叫次数最多的区域。蓝色区域是接到紧急呼叫相对较少的区域。如何将 911 呼叫频率的时间维度信息添加到下面的地图中?如何有效地描绘各种情况,如单个爆发事件、一系列犯罪狂热行为、采用新技术的反响或暴风雨形式的季节性振荡等?
很难用二维地图表示三维数据(x,y 位置和时间)。请注意,在以下示例中,您无法辨认出图上存在两个不同的热点(在空间上互相邻近,但可以通过时间分离开),而只有通过三维方式进行查看才会呈现出来。根据时间字段对要素进行拉伸后,哪些要素是相关的,哪些要素是通过时间分离开的,将会变得更加清晰。
至少可通过两种方式对空间-时间分析的输出进行显示。如果要素的数量有限且研究区域较小,则适合使用三维显示方式;这种方式可以在一幅地图中显示空间-时间关系。还有一种非常强大的方式就是使用动画来描绘空间-时间过程。下面的示例专门介绍空间-时间聚类的可视化。
动画
要以动画方式显示空间-时间聚类,可在结果要素上启用时间,打开“工具”工具条上的时间滑块,然后单击播放 。设置一个时间窗,您在一个步骤中即可一次性地查看足够的数据。如果您是第一次创建动画,那么可以参阅以下链接的内容来完成此操作。
3D
可视化空间-时间聚类分析结果的另一种有效方法是使用 3D 可视化。使用此方法,时间将变成第三维度,将拉伸点要素以反映时态态势。例如,在上述 3D 图中,最旧的事件最接近地面,而较新的事件则悬停在较高的高程处(看起来与观察者更近)。
要创建如上图那样的 3D 表达,您需要使用 ArcGlobe(与 ArcGIS for Desktop 标准安装包一起提供)。
首先,在 ArcGlobe 中运行空间-时间聚类分析,然后在输出要素类中创建一个新字段以反映每个要素的高度。对于本示例,高度将以数据集中第一个事件发生之日开始算起的天数为基础。要计算时间的推移,您将使用 VB 脚本和名为 DateDiff 的日期函数,如下图所示。
如果在将新字段添加到输出要素类时由于存在锁定而遇到问题,可保存您的 ArcGlobe 文档并重新将其打开,或者可以将输出要素类导出至新的数据集,并将此数据集添加至地图文档,然后对其进行符号化使其与输出要素类相匹配。
接下来,按日期对要素进行排序,以便可以找到最早日期。将使用此日期来计算新的时间推移字段值。右键单击刚创建的新字段并选择字段计算器。在字段计算器中,单击日期类型函数,然后从计算器右侧选择 DateDiff,如下图所示。输入 DateDiff ( "d", "3/1/2011", [DateField] ),将日期字符串替换为要素类中的最早日期并为 [DateField] 参数指定新的字段名("d" 表示时间间隔应以天数计)。
上面的示例使用 VB 计算日期/时间字段。等效的 Python 语句为:
(datetime.datetime.strptime(!Date_Con!, "%m/%d/%Y ").date() - datetime.date(2011, 3, 11)).days
下一步是更改 ArcGlobe 显示属性,以便数据集中的要素具有相应的高程。要进行此操作,可右键单击输出要素类,然后选择属性。在“属性”对话框中,单击高程选项卡。在从要素获取的高程部分,选择使用常量值或表达式,然后单击计算器 按钮并指定您使用 DateDiff 函数所创建的新字段。ArcGlobe 接下来将根据时间推移字段显示具有高程的要素。如果您发现要素显示的高程还不够,那么可能需要将时间推移字段乘以一个常量。在高程选项卡的使用常量值或表达式属性中,您的输入内容类似于:[TimeLapse] *100,如下图所示。
然后,可以使用 ArcGlobe 导航工具 对视图进行倾斜,以便从不同的角度和视点查看聚类结果。生成的地图可能如下所示: