描述时空立方体 (时空模式挖掘)

摘要

汇总时空立方体的内容和特征。 该工具描述了时空立方体的时间和空间范围、时空立方体中的变量、对每个变量执行的分析以及每个变量可用的 2D 和 3D 显示主题。

插图

描述时空立方体工具图示

使用情况

  • 此工具接受由时空模式挖掘工具箱中的各种工具创建的 netCDF 文件。

    了解有关创建时空立方体的详细信息

  • 此具有以下潜在应用:

  • 地理处理消息描述了输入时空立方体的特征和内容。 可将鼠标悬停在进度条上、单击弹出按钮或展开地理处理窗格中的消息部分来访问消息。 这些消息包含如下信息:

    • 创建时空立方体的日期和时间。
    • 用于创建时空立方体的 ArcGIS AllSource 版本。
    • 时空立方体的类型。 可能的类型包括已定义位置立方体、格网立方体、已定义位置立方体(来自多维栅格)、预测立方体和子集立方体。 要了解有关不同类型的时空立方体的详细信息,请参阅创建时空立方体的工作原理
      注:

      如果时空立方体是在 ArcGIS Pro 2.8 或较早版本中使用从多维栅格图层创建时空立方体工具创建的,则显示的类型将为“已定义位置立方体”而不是“已定义位置立方体(来自多维栅格)”。

    • 描述时空立方体的空间和时间属性的时空立方体特征部分。 有关这些特征的详细信息,请参阅创建时空立方体的工作原理
    • 时空立方体内容部分,其中每一行对应于输入时空立方体中的一个变量。 每行包括变量的汇总统计信息、创建变量的工具(以及聚合和填充类型)以及在 2D 模式下显示时空立方体在 3D 模式下显示时空立方体工具中可用的显示主题选项。
    • 如果时空立方体是使用通过聚合点创建时空立方体工具创建的,则消息将在时空立方体位置和图格部分下包含一个或多个子部分。 计数子部分和每个可选的汇总字段子部分包含至少包含一个点的图格和位置的数量。 稀少(包含零计数的图格的百分比)也将在计数子部分的表格中列出。
    • 如果时空立方体是使用时间序列预测工具集中的工具创建的,则消息将包括一个预测详细信息部分,该部分总结了所应用的预测方法。
    • 消息将在时空立方体趋势下包含一个或多个部分。 这些部分包括时空立方体中每个变量的总体 Mann-Kendall 趋势统计数据
  • 如果为输出特征表参数指定了一个值,则该工具将创建一个包含输入时空立方体的空间和时间特征的表。 特征表中的值也将显示在地理处理消息中。 可以在 模型构建器 中使用这些值创建时空分析工作流。

  • 如果为输出空间范围要素参数指定了一个值,则该工具会输出一个面要素类,其中包含一个表示输入时空立方体范围的矩形。 如果输入时空立方体是通过按已定义位置创建时空立方体工具使用单个点创建的,则会创建点要素类而不是面要素类。 如果时空立方体是从模板立方体创建的,则范围反映了模板立方体的范围。

  • 如果在创建时空立方体时使用了模板立方体或“范围”环境,则输出空间范围要素参数值可能无法反映时空立方体位置的范围。

参数

标注说明数据类型
输入时空立方体

要描述的时空立方体。 时空立方体具有 .nc 文件扩展名,是使用时空模式挖掘工具箱中的各种工具创建的。

File
输出特征表
(可选)

包含有关输入时空立方体的汇总信息的表。

Table
输出空间范围要素
(可选)

此要素类中包含一个表示输入时空立方体空间范围的矩形。

Feature Class

arcpy.stpm.DescribeSpaceTimeCube(in_cube, {out_characteristics_table}, {out_spatial_extent})
名称说明数据类型
in_cube

要描述的时空立方体。 时空立方体具有 .nc 文件扩展名,是使用时空模式挖掘工具箱中的各种工具创建的。

File
out_characteristics_table
(可选)

包含有关输入时空立方体的汇总信息的表。

Table
out_spatial_extent
(可选)

此要素类中包含一个表示输入时空立方体空间范围的矩形。

Feature Class

代码示例

DescribeSpaceTimeCube 示例 1(Python 窗口)

以下 Python 窗口脚本演示了如何使用 DescribeSpaceTimeCube 函数。

import arcpy
arcpy.stpm.DescribeSpaceTimeCube("input_cube.nc")
DescribeSpaceTimeCube 示例 2(独立脚本)

以下独立 Python 脚本演示了如何使用 DescribeSpaceTimeCube 函数。

# Use the output from the Describe Space Time Cube tool to 
# test whether a set of space-time cubes match a set of criteria. Input the 
# space-time cubes that pass the criteria to the Evaluate Forecast by Location 
# tool.

# Import system modules
import os
import glob
import arcpy

# Set Workspace
arcpy.env.workspace = r"C:\Describe"
out_gdb = os.path.join(arcpy.env.workspace, "GDB.gdb")
arcpy.env.overwriteOutput = True

# Assign global variables
check_fields = ['MIN_X', 'MIN_Y', 'MAX_X', 'MAX_Y', 'NUM_FORECAST', 
          'FIRST_FORECAST_START', 'FIRST_FORECAST_END',
          'LAST_FORECAST_START','LAST_FORECAST_END', 'VALIDATION_TIME_STEPS']

# Iterate through all the space-time cubes in a folder
evaluate_cubes = ''

for cube in glob.glob(os.path.join(arcpy.env.workspace, '*.nc')):
    cube_suffix = os.path.basename(cube)
    cube_name = os.path.splitext(cube_suffix)[0]

    out_describe_fc_name = ("describe" + "_{}").format(cube_name)
    out_table = os.path.join(out_gdb, out_describe_fc_name)
    
    # Run the Describe Space Time Cube tool and save a characteristics table into a GDB
    arcpy.stpm.DescribeSpaceTimeCube(cube, out_table, None)
    lstFields = arcpy.ListFields(out_table)

    for field in lstFields:
        # Check if the space-time cube is a forecast cube
        if field.name == "NUM_FORECAST":     
            with arcpy.da.SearchCursor(out_table, check_fields) as cursor:       
                # Check if the extent, start forecast, end forecast, and validation steps  
                # are all the same
                for row in cursor:
                    if str(row[0]) == '-13847325.1116' and str(row[1]) == '3833847.5631' and \
                       str(row[2]) == '-12704362.5439' and str(row[3]) == '5161307.7693' and \
                       str(row[4]) == '14' and str(row[5]) == '2022-02-27 00:00:02' and \
                       str(row[6]) == '2022-02-28 00:00:01' and str(row[7]) == '2022-03-12 00:00:01' and \
                       str(row[8]) == '2022-03-13 00:00:01' and str(row[9]) == '14':
               
                        # Add the space-time cubes that match the criteria to a string 
                        # that will be input into the Evaluate Forecast by Location tool
                        evaluate_cubes += cube + ';'


# Run the Evaluate Forecast by Location tool
evaluate_output = os.path.join(out_gdb, "Evaluate_Covid19_Forecasts")

arcpy.stpm.EvaluateForecastsByLocation(evaluate_cubes.replace('\\', '/'), evaluate_output, None, "USE_VALIDATION")

环境

此工具不使用任何地理处理环境。