GIS在多维数据分析中的应用:时空立方体(Space Time Cube)构建

GIS基础理论
Dr.GIS
wowwwai GIS研习社 · 工具流程与项目排障

GIS在多维数据分析中的应用:时空立方体(Space Time Cube)构建,适合用来分析“某个现象在空间上在哪里聚集、在时间上何时增强或减弱、这种变化是否具有连续趋势”。如果你正在处理城市交通拥堵、犯罪事件、疫情病例、POI热度、环境监测或遥感指数时间序列,时空立方体可以把二维地图和时间序列结合起来,帮助你从“看一张图”升级到“看一个空间—时间过程”。

本文以 GIS 实务视角说明时空立方体是什么、什么时候适合构建、数据如何准备、在 ArcGIS Pro 中如何生成 Space Time Cube,以及如何检查结果是否可信。重点不是堆概念,而是帮助你完成一次可复现的时空立方体构建流程。

引言:为什么 GIS 多维数据分析需要时空立方体

传统 GIS 分析通常回答两个问题:对象在哪里,以及属性是多少。但在真实业务中,很多问题还必须回答“什么时候发生”。例如:

  • 某类交通事故是否从市中心向外围扩散?
  • 空气污染高值区是否只在冬季出现?
  • 夜间人流热点是否在周末发生明显转移?
  • 某区域新增病例是否形成持续性高值聚集?

这些问题只看静态地图很容易误判。某个区域在全年统计中可能是高值,但它也许只在少数月份异常;某个区域在某天看起来普通,却可能正在持续升高。时空立方体的价值就在于:把空间位置、时间片段和统计值放进统一的数据结构中,再进行趋势、热点和异常分析。

GIS在多维数据分析中的应用 时空立方体Space Time Cube构建流程示意图
时空立方体把空间位置与时间片段组织成连续的三维分析单元,每个单元保存计数、汇总值或趋势统计结果。

背景:什么是时空立方体 Space Time Cube

时空立方体 Space Time Cube 是一种用于组织时空数据的分析结构。它把研究区域划分为空间网格,再把研究时间划分为连续时间步长,空间网格与时间步长相交后形成一个个三维单元。每个单元通常称为 bin,可以理解为“某个地点在某个时间段内的统计结果”。

一个简单例子:如果研究区域被划分成 500 米网格,时间被划分成每 1 天一个时间步,那么每个 bin 表示“某个 500 米网格在某一天内的事件数量、平均值、最大值或其他统计指标”。

在 ArcGIS Pro 中,Space Time Cube 通常会生成一个 NetCDF 文件。NetCDF 是一种适合存储多维数组数据的格式,常用于气象、海洋、遥感和时空分析。GIS 用户不需要手动编辑 NetCDF 文件,但需要理解它不是普通矢量图层,而是一个用于后续时空分析工具读取的多维数据容器。

原理:时空立方体构建的三个核心要素

1. 空间分箱:把研究区域切成可比较的单元

空间分箱是指把研究范围划分成规则网格,例如正方形网格或六边形网格。这样做的目的,是让不同位置可以使用统一空间尺度进行比较。

空间网格大小会直接影响结果。如果网格太大,局部热点会被平均掉;如果网格太小,很多格子没有数据,趋势分析会变得不稳定。因此,构建时空立方体时不要只追求“精细”,而要根据数据密度和业务问题选择合理尺度。

2. 时间分箱:把连续时间切成分析步长

时间分箱是把数据按照固定时间间隔进行汇总,例如 1 小时、1 天、1 周、1 月。时间步长应与现象变化节奏一致。

  • 交通拥堵、共享单车订单:可考虑小时或天。
  • 犯罪事件、投诉记录:可考虑天、周或月。
  • 空气质量、气象观测:可考虑小时、天或月。
  • 土地利用、遥感指数:可考虑月、季度或年。

时间步长过短会导致大量空 bin;时间步长过长会掩盖变化过程。一个实用原则是:每个时间片中应有足够数据支撑统计判断,同时又能保留业务所关心的变化节奏。

3. 属性汇总:为每个 bin 计算指标

时空立方体并不是简单堆叠地图,而是为每个空间—时间单元计算统计值。常见汇总方式包括:

  • 事件计数:某网格某时间段内发生了多少次。
  • 数值求和:某区域某时间段内总销量、总客流、总降雨量。
  • 平均值:平均温度、平均 PM2.5、平均车速。
  • 最大值或最小值:极端污染值、最高水位、最低植被指数。
  • 存在或缺失:某类现象是否在该时段出现。

后续趋势分析、热点分析和异常检测都建立在这些 bin 统计值之上。因此,属性字段的含义、单位和统计方法必须在构建前确定清楚。

步骤:在 ArcGIS Pro 中构建时空立方体

步骤一:准备带时间字段的空间数据

构建 Space Time Cube 的输入数据通常是点要素、面要素或已汇总的时空数据。对初学者来说,最常见的是事件点数据,例如事故点、报警记录、订单点、病例点等。

数据至少应包含以下内容:

  • 空间位置:点坐标,或可定位到空间单元的面要素。
  • 时间字段:必须能表示事件发生时间或记录时间。
  • 分析字段:如果不是做计数分析,需要有可汇总的数值字段。
  • 唯一记录:避免重复导入造成事件数量虚高。

在 ArcGIS Pro 中,建议先检查时间字段类型。如果时间字段是文本,例如“2024/01/05 08:30”,应先转换为真正的 Date 类型。文本时间虽然看起来像日期,但在时空分析工具中经常导致识别失败或排序异常。

步骤二:统一坐标系,避免距离尺度错误

构建时空立方体时,空间网格大小通常以米、公里等线性单位设置。如果数据仍然是经纬度坐标系,例如 WGS 1984,直接设置 500 米网格可能出现尺度不准确或工具提示不适合计算距离的问题。

实际操作中建议:

  1. 确认数据当前坐标系。
  2. 根据研究区选择合适的投影坐标系。
  3. 使用投影工具生成新的投影数据,而不是只在图层属性中修改坐标系定义。
  4. 再基于投影后的数据构建 Space Time Cube。

例如,中国城市尺度研究通常应选择适合本地的高斯克吕格、CGCS2000 投影带,或其他符合项目规范的投影坐标系。这样空间网格大小才有明确的米制含义。

步骤三:选择合适的时空立方体创建工具

ArcGIS Pro 中常见的相关工具包括 Create Space Time Cube By Aggregating Points、Create Space Time Cube From Defined Locations 等。选择哪个工具,取决于你的输入数据形态。

数据类型 推荐工具思路 适用场景
事件点数据 按空间网格和时间步长聚合点 事故、案件、订单、投诉、病例
固定监测站点 按已定义位置构建时空序列 气象站、水质站、空气监测站
已有网格或行政区统计 按固定位置与时间字段组织数据 街道月报、网格化人口、分区销售

如果你的数据是大量独立事件点,通常优先考虑按点聚合创建时空立方体。如果你的数据本来就是固定站点的连续观测值,则不应再强行空间分网,而应保留站点作为分析位置。

步骤四:设置空间网格大小

空间网格大小是时空立方体构建中最容易影响结果的参数之一。建议不要随意输入一个整数,而是先做数据密度判断。

可以按以下方式估算:

  1. 在地图上查看事件点分布范围。
  2. 统计总点数和研究区面积。
  3. 尝试几个候选网格大小,例如 250 米、500 米、1000 米。
  4. 观察每个网格内平均事件数量是否过低或过高。
  5. 选择能够表达局部差异,同时不会产生大量空格的尺度。

如果研究对象是街区尺度的交通事故,500 米网格可能比 5 公里网格更有解释力;如果研究对象是省域尺度的疾病传播,过小网格反而可能产生噪声。

步骤五:设置时间步长

时间步长应与现象变化周期匹配。设置前先回答三个问题:

  • 业务上关心小时变化、日变化、周变化还是月变化?
  • 每个时间片内是否有足够数据?
  • 研究总时长能否支持趋势分析?

例如,只有 10 天数据时,不适合用“月”为时间步长;只有两个月数据时,也很难判断长期趋势。对趋势分析而言,时间步数太少会降低统计意义。

步骤六:设置汇总字段和统计方式

如果你只关心事件发生频次,可以选择计数统计。如果你关心事件强度,则应选择对应的数值字段和统计方式。

常见设置如下:

  • 事故分析:统计事故点数量。
  • 降雨分析:按监测值求和或平均。
  • 客流分析:按人数求和。
  • 房价分析:按价格字段求平均或中位数。
  • 空气质量分析:按污染物浓度求平均、最大值或超标次数。

需要注意的是,不同统计方式对应不同解释。平均 PM2.5 与最大 PM2.5 的含义完全不同,前者反映一般污染水平,后者反映极端污染风险。

步骤七:运行工具并检查输出 NetCDF

工具运行完成后,通常会生成一个 .nc 文件,也就是 Space Time Cube 的 NetCDF 输出。不要只看工具是否成功完成,还要检查消息窗口中的统计摘要。

重点关注:

  • 创建了多少个空间位置。
  • 创建了多少个时间步。
  • 是否存在大量空 bin。
  • 是否有时间范围被截断。
  • 输入记录是否全部参与分析。
  • 输出路径是否可读写,文件名是否包含特殊字符。

如果工具成功但结果解释困难,通常不是软件问题,而是空间尺度、时间步长或输入字段设置不合理。

步骤八:可视化和后续分析

时空立方体构建完成后,可以继续用于 Emerging Hot Spot Analysis、Local Outlier Analysis、Time Series Clustering 等时空模式挖掘工具。

常见后续分析包括:

  • 新兴热点分析:识别持续热点、增强热点、减弱热点、偶发热点等。
  • 局部异常分析:发现与周边时空邻域显著不同的异常单元。
  • 时间序列聚类:按时间变化形态对区域进行分组。
  • 趋势分析:判断某位置的数值是否随时间显著上升或下降。

这些分析的可靠性都依赖于前面的时空立方体构建质量。如果输入立方体尺度不合适,后续热点类型再漂亮,也可能没有业务解释价值。

常见坑:时空立方体构建失败或结果不可信的原因

时间字段不是 Date 类型

很多构建失败来自时间字段。Excel 或 CSV 导入后,日期可能被识别为文本。解决方法是在 ArcGIS Pro 中创建新的日期字段,并用字段计算器或数据处理工具转换为 Date 类型。

坐标系没有投影,空间网格尺度失真

经纬度坐标不是米制坐标。进行空间分箱前,应将数据投影到合适的投影坐标系。只修改图层坐标系定义不能完成真正投影转换。

空间网格太小导致大量空 bin

大量空 bin 会让结果变得稀疏,热点和趋势统计不稳定。可以适当增大网格,或降低时间分辨率,或先限定研究区。

时间步长太短导致每个时间片数据不足

例如用小时分析低频事件,很多小时没有任何记录。此时应考虑改为天、周或月,或者换成更高频的数据源。

研究范围过大掩盖局部问题

如果研究范围包含大量无关区域,网格会覆盖很多没有业务意义的位置。建议先裁剪到真实研究区,再构建时空立方体。

把行政区统计数据误当成事件点

如果数据已经是街道、区县或网格统计值,不应再当作事件点聚合,否则会改变数据含义。应根据固定位置或已有面单元构建时空序列。

方法比较:时空立方体与常规 GIS 分析怎么选

方法 适合回答的问题 优点 限制
普通专题图 某一时间或总量空间分布如何 直观、制作简单 难以表达动态变化
时间滑块动画 现象随时间如何移动或扩散 适合展示过程 偏可视化,统计判断较弱
热点分析 哪里存在显著空间聚集 能提供统计显著性 通常只处理单一时间切片或汇总数据
时空立方体 哪里、何时、以什么趋势发生变化 同时组织空间、时间和统计值 对数据质量、尺度参数和时间连续性要求较高

如果你的问题只是“今年哪个区总量最高”,普通统计图或专题图就足够。如果你的问题是“哪个区域连续升温、哪个热点正在减弱、哪个异常在最近几周突然出现”,时空立方体更合适。

检查清单:构建 Space Time Cube 前后必须确认的事项

构建前检查

  • 数据是否有明确空间位置。
  • 时间字段是否为 Date 类型。
  • 研究时间范围是否连续且足够长。
  • 坐标系是否为适合距离和面积计算的投影坐标系。
  • 是否存在重复记录、异常时间或明显错误坐标。
  • 空间网格大小是否符合数据密度和业务尺度。
  • 时间步长是否符合现象变化周期。
  • 统计字段和统计方法是否与研究问题一致。

构建后检查

  • 工具运行消息中输入记录数量是否符合预期。
  • 空间位置数量是否过多或过少。
  • 时间步数是否与研究时间范围一致。
  • 空 bin 比例是否过高。
  • 输出 NetCDF 文件是否能被后续工具正常读取。
  • 抽样检查某几个网格和时间段的统计值是否与原始数据一致。
  • 后续热点或趋势结果是否能被业务逻辑解释。

实务建议:第一次构建时空立方体时,不要一次性追求最终参数。先用小范围数据测试空间网格、时间步长和统计字段,确认解释合理后再处理完整数据。

FAQ:时空立方体 Space Time Cube 常见问题

Q1:时空立方体一定要用 ArcGIS Pro 吗?

不一定。ArcGIS Pro 提供了较完整的 Space Time Cube 工具链,适合 GIS 用户快速完成构建和后续时空热点分析。如果使用 Python,也可以用 GeoPandas、xarray、pandas 等库手动组织空间网格和时间维度,但需要自己处理统计、存储和可视化流程。

Q2:点数据很少,可以构建时空立方体吗?

可以尝试,但结果未必可靠。点数据太少时,很多空间—时间单元会为空,趋势或热点结论容易受偶然值影响。可以考虑增大空间网格、延长时间步长,或降低分析目标,从显著性分析改为探索性可视化。

Q3:空间网格选正方形还是六边形?

两者都可以。正方形网格容易理解和实现,六边形网格邻接关系更均衡,常用于减少方向性影响。实际项目中,优先考虑业务解释和制图表达。如果团队或项目规范已有固定网格,应优先沿用。

Q4:时空立方体中的空值需要填补吗?

要看空值含义。如果某个 bin 没有事件发生,计数为 0 是合理的;如果是监测数据缺测,则不应简单当作 0。缺测值和真实零值在时空分析中的含义不同,混用会严重影响趋势判断。

Q5:Space Time Cube 输出的 NetCDF 可以直接制图吗?

NetCDF 本身是多维数据容器,通常需要通过 ArcGIS Pro 的相关可视化或分析工具读取。你也可以用支持 NetCDF 的 Python 库读取后再转为栅格、矢量或图表,但不建议把它当作普通 Shapefile 使用。

Q6:时空立方体适合做预测吗?

时空立方体主要用于组织时空数据、发现趋势、热点和异常。它可以作为预测建模的数据基础,但预测还需要额外的时间序列模型、机器学习模型或空间统计模型。不要把热点分析结果直接等同于未来预测。

结论:先把尺度和数据质量做好,再谈时空模式发现

GIS在多维数据分析中的应用:时空立方体(Space Time Cube)构建,核心不是生成一个 .nc 文件,而是把空间尺度、时间尺度和统计指标设计正确。只有输入数据可靠、时间字段规范、坐标系合适、分箱参数合理,后续的新兴热点分析、异常分析和趋势解释才有意义。

对于 GIS 学习者和初级工程师,建议从事件点数据开始练习:先选一个明确问题,准备带时间字段的点图层,设置合适投影,尝试不同空间网格和时间步长,再比较输出结果。这样你会更快理解时空立方体不是抽象概念,而是一套可落地的 GIS 多维数据分析工作流。