创建聚合查询图层 (数据管理)

摘要

创建一个查询图层,该图层根据相关表的时间、范围和属性查询动态地汇总、聚合和过滤 DBMS 表,并将结果连接到要素图层。

了解有关将值聚合到相关要素的详细信息。

使用情况

  • 查询图层仅适用于企业级数据库。 文件地理数据库不是此工具的有效输入工作空间。

  • 聚合结果始终在数据库级别动态计算。

  • 输出图层值将由包含统计运算结果的字段组成。 默认情况下,计数统计数据包括在 ROW_COUNT 字段中。

  • 使用此工具可以执行的统计运算包括计数、总和、平均值、最小值、最大值和标准差。

  • 将使用以下命名约定为每种统计类型创建字段:COUNT_<field>SUM_<field>AVG_<field>MIN_<field>MAX_<field>STDDEV_<field>(其中 <field> 是计算统计数据的输入字段的名称)。

  • 相关连接字段值用于此工具生成的 SQL 语句中的 GROUP BY 子句。 将根据相关连接字段值单独为每个唯一属性值计算统计数据。

  • 该工具创建的图层是临时图层,如果不保存此工程、将图层保存至图层文件或者使用复制行复制要素通过创建副本对数据进行持久化,则该图层在会话结束后将不会继续存在。

参数

标注说明数据类型
目标要素类

来自企业级地理数据库的要素类或空间表。

Feature Class
目标连接字段

连接所依据的目标要素类中的字段。

Field
相关表

包含用于计算统计数据的字段的输入表。 统计数据连接到输出图层值。

Table; Feature Class
相关连接字段

汇总表中的字段,其中包含连接所依据的值。 还会根据此字段单独为每个唯一属性值计算聚合或汇总统计数据。

Field
输出图层

将要创建的查询图层的输出名称。

Feature Layer
汇总字段
(可选)

指定包含用于计算指定统计数据的属性值的一个或多个数值字段。 可以指定多项统计和字段组合。 空值将被排除在所有统计计算之外。

输出图层将包括一个 ROW_COUNT 字段,显示相关连接字段值的每个唯一值的总数(或频数)。 ROW_COUNT 字段和计数统计类型的区别在于 ROW_COUNT 包括空值,而计数不包括空值。

可用统计类型如下:

  • 计数 - 将查找统计计算中包括的值的数目。 计数包括除空值外的所有值。
  • 总和 - 将指定字段的值相加在一起。
  • 平均值 - 将计算指定字段的平均值。
  • 最小值 - 将查找指定字段所有记录的最小值。
  • 最大值 - 将查找指定字段所有记录的最大值。
  • 标准差 - 将计算指定字段中值的标准差。
Value Table
参数定义
(可选)

为标准或条件指定一个或多个查询参数,并在计算聚合结果时使用与这些条件相匹配的记录。 查询参数类似于 SQL 语句的变量,进行查询时即会定义该变量的值。 这样,您便可以动态地更改输出图层的查询过滤器。 您可以将参数视为 SQL where 子句中的谓词或条件。 例如,Country_Name = 'Nigeria' 在 SQL where 子句中称为谓词,其中 = 是比较运算符,Country_Name 是左侧的字段名称,'Nigeria' 是右侧的值。 当您定义多个参数时,必须在这些参数之间指定一个逻辑运算符(如 AND、OR 等)。

了解有关在查询图层中定义参数的详细信息。

如果未进行指定,则相关表中的所有记录都将用于计算聚合或汇总结果。

两种参数定义类型如下所示:

以下属性可用:

  • 参数类型 - 参数类型可以是范围离散
  • 名称 - 参数的名称,与变量名称类似。 名称不能包含空格或特殊字符。 创建输出查询图层并选中图层源 SQL 语句后,在定义输出查询图层源的 SQL 语句中,这个名称将以 ::r:(对于范围参数)或 ::(对于离散参数)为前缀。
  • 别名 - 参数名称的别名。 别名可以包括空格和特殊字符。
  • 字段或表达式 - 字段名称或有效的 SQL 表达式,可用于 where 子句中谓词或条件的左侧。
  • 数据类型 - 字段或表达式列中指定的字段或表达式的数据类型。 当参数类型的值为范围时,数据类型列的值不得为字符串
    • 日期 - 字段或表达式的数据类型将是日期(日期时间)。
    • 字符串 - 字段或表达式的数据类型将是字符串(文本)。
    • 整型 - 字段或表达式的数据类型将是整型(整数)。
    • 双精度 - 字段或表达式的数据类型将是双精度(小数)。
  • 起始值 - 范围列的默认起始值。 未启用时间或范围滑块时将使用此值。 当忽略起始值结束值列的值并禁用时间或范围滑块时,相关表中的记录将用于计算聚合结果。 当参数类型列设置为离散时,将忽略此值。
  • 结束值 - 范围参数的默认结束值。 未启用时间或范围滑块时将使用此值。 当忽略起始值结束值列的值并禁用时间或范围滑块时,相关表中的记录将用于计算聚合结果。 当参数类型列设置为离散时,将忽略此值。
  • 离散参数运算符 - 将在字段或表达式列的值和 SQL 谓词或条件中的值之间使用的比较运算符。
    • - 当参数类型设置为范围时,选择
    • 等于 - 比较字段或表达式是否与值相等。
    • 不等于 - 测试字段或表达式是否与值不相等。
    • 大于 - 测试字段或表达式是否大于值。
    • 小于 - 测试字段或表达式是否小于值。
    • 包括值 - 确定来自字段或表达式的值是否与列表中的某个值匹配。
  • 默认离散值 - 当参数类型值为离散时,您必须提供默认值。 当离散参数运算符包括值时,您可以提供以逗号分隔的多个值,例如 VANDALISM,BURGLARY/THEFT
  • 下一个参数的运算符 - 此运算符和下一个运算符之间的逻辑运算符。 本列仅适用于具有多个参数定义的情况。
    • - 当没有更多参数时,选择
    • - 结合两个条件,如果两个条件都为 true 则选择记录。
    • - 结合两个条件,如果两个条件中至少有一个为 true 则选择记录。
Value Table
唯一标识符字段
(可选)

唯一标识符字段将用于唯一标识表中各行的字段。

String
形状类型
(可选)

指定查询图层的形状类型。 在输出查询图层中只会使用查询结果集中与指定形状类型匹配的那些记录。 默认情况下,将使用结果集中第一条记录的 shape 类型。 如果查询结果集未返回几何字段,则忽略此参数。

  • 输出查询图层将使用点几何。
  • 多点输出查询图层将使用多点几何。
  • 输出查询图层将使用面几何。
  • 折线输出查询图层将使用折线几何。
String
空间参考 ID (SRID)
(可选)

返回几何查询的空间参考标识符 (SRID) 值。 在输出查询图层中只会使用查询结果集中与指定 SRID 值匹配的那些记录。 默认情况下,将使用结果集中第一条记录的 SRID 值。 如果查询结果集未返回几何字段,则忽略此参数。

String
坐标系
(可选)

输出查询图层将使用的坐标系。 默认情况下,将使用结果集中第一条记录的空间参考。 如果查询结果集未返回几何字段,则忽略此参数。

Spatial Reference
坐标包含 M 值
(可选)

指定输出图层是否包括线性测量(m 值)。

  • 选中 - 图层将包括 m 值。
  • 未选中 - 图层将不包括 m 值。 这是默认设置。
Boolean
坐标包含 Z 值
(可选)

指定输出图层是否将包括高程值(z 值)。

  • 选中 - 图层将包括 z 值。
  • 未选中 - 图层将不包括 z 值。 这是默认设置。
Boolean
范围
(可选)

指定图层范围。 范围必须包括表中的所有要素。

  • 当前显示范围 地图视图 - 范围基于活动地图或场景。 仅在存在活动地图时,才可使用此选项。
  • 绘制范围 构造直角并完成草图 - 范围将基于在地图或场景上绘制的矩形。 此选项将在工程地理数据库中创建要素类并将图层添加至地图。 该要素类的坐标系将与地图相同。
    注:

    环境对话框中不提供此选项。 只能在具有范围数据类型的工具参数中或工具对话框的环境选项卡中找到此选项。

    注:

    当选中从“编辑”选项卡启用和禁用编辑编辑选项时,必须在编辑功能区选项卡上启用编辑才能绘制范围。

  • 图层范围 Layer - 范围基于活动地图图层。 使用下拉列表选择可用图层,或使用所有图层中数据的范围选项获取所有活动地图图层(不包括底图)的组合范围。 仅在存在具有图层的活动地图时,才可使用此选项。

    每个地图图层具有以下选项:

    • 所有要素 全选 - 图层中所有要素的范围。
    • 选定要素Area from Selected Features - 图层中选定要素的范围。
    • 可见要素 Extent Indicator - 图层中可见要素的范围。
      注:

      选定要素 Area from Selected Features可见要素 Extent Indicator 选项中的范围仅适用于要素图层。

  • 浏览 浏览 - 范围基于现有数据集。
  • 剪贴板 粘贴 - 可在剪贴板中复制和粘贴范围。
    • 复制范围 复制 - 将范围坐标和坐标系复制到剪贴板。
    • 使用粘贴范围 粘贴 - 从剪贴板粘贴范围坐标和(可选)坐标系。 如果剪贴板值不包含坐标系,则范围将使用地图的坐标系。
    注:

    将使用与 ArcPy Extent 对象相同的格式和顺序从剪贴板中复制和粘贴范围坐标:x-min、y-min、x-max、y-max 和空间参考。

  • 重置范围 重置 - 将范围重置为默认值。
  • 手动输入坐标 - 坐标必须是数值,并且与活动地图的坐标系相匹配。
    警告:

    地图可能使用与输入的坐标不同的显示单位。 不支持使用主方向(N、S、E、W)。 在南纬和西经坐标中使用负号。

Extent

arcpy.management.MakeAggregationQueryLayer(target_feature_class, target_join_field, related_table, related_join_field, out_layer, {statistics}, {parameter_definitions}, {oid_fields}, {shape_type}, {srid}, {spatial_reference}, {m_values}, {z_values}, {extent})
名称说明数据类型
target_feature_class

来自企业级地理数据库的要素类或空间表。

Feature Class
target_join_field

连接所依据的目标要素类中的字段。

Field
related_table

包含用于计算统计数据的字段的输入表。 统计数据连接到 out_layer 值。

Table; Feature Class
related_join_field

汇总表中的字段,其中包含连接所依据的值。 还会根据此字段单独为每个唯一属性值计算聚合或汇总统计数据。

Field
out_layer

将要创建的查询图层的输出名称。

Feature Layer
statistics
[[statistic_type, field],...]
(可选)

指定包含用于计算指定统计数据的属性值的一个或多个数值字段。 可以指定多项统计和字段组合。 空值将被排除在所有统计计算之外。

输出图层将包括一个 ROW_COUNT 字段,显示 related_join_field 值的每个唯一值的总数(或频数)。 ROW_COUNT 字段和 COUNT 统计类型的区别在于 ROW_COUNT 包括空值,而 COUNT 不包括空值。

  • COUNT - 将查找统计计算中包括的值的数目。 计数包括除空值外的所有值。
  • SUM - 将指定字段的值相加在一起。
  • AVG - 将计算指定字段的平均值。
  • MIN - 将查找指定字段所有记录的最小值。
  • MAX - 将查找指定字段所有记录的最大值。
  • STDDEV - 将计算指定字段中值的标准差。
Value Table
parameter_definitions
[[parameter_def_type, name, alias, field_or_expression, data_type, start_value, end_value, operator, default_value, operator_for_next_parameter],...]
(可选)

为标准或条件指定一个或多个查询参数,并在计算聚合结果时使用与这些条件相匹配的记录。 查询参数类似于 SQL 语句的变量,进行查询时即会定义该变量的值。 这样,您便可以动态地更改输出图层的查询过滤器。 您可以将参数视为 SQL where 子句中的谓词或条件。 例如,Country_Name = 'Nigeria' 在 SQL where 子句中称为谓词,其中 = 是比较运算符,Country_Name 是左侧的字段名称,'Nigeria' 是右侧的值。 当您定义多个参数时,必须在这些参数之间指定一个逻辑运算符(如 AND、OR 等)。

了解有关在查询图层中定义参数的详细信息。

如果未进行指定,则相关表中的所有记录都将用于计算聚合或汇总结果。

两种参数定义类型如下所示:

以下属性可用:

  • 参数类型 - 参数类型可以是 RANGEDISCRETE
  • 名称 - 参数的名称,与变量名称类似。 名称不能包含空格或特殊字符。 创建输出查询图层并选中图层源 SQL 语句后,在定义输出查询图层源的 SQL 语句中,这个名称将以 ::r:(对于范围参数)或 ::(对于离散参数)为前缀。
  • 别名 - 参数名称的别名。 别名可以包括空格和特殊字符。
  • 字段或表达式 - 字段名称或有效的 SQL 表达式,可用于 where 子句中谓词或条件的左侧。
  • 数据类型 - 字段或表达式列中指定的字段或表达式的数据类型。 当参数类型的值为 RANGE 时,“数据类型”列的值不得为 STRING
    • DATE - 字段或表达式的数据类型将是日期(日期时间)。
    • STRING - 字段或表达式的数据类型将是字符串(文本)。
    • INTEGER - 字段或表达式的数据类型将是整型(整数)。
    • DOUBLE - 字段或表达式的数据类型将是双精度(小数)。
  • 起始值 - RANGE 列的默认起始值。 未启用时间或范围滑块时将使用此值。 当忽略起始值和结束值列的值并禁用时间或范围滑块时,相关表中的记录将用于计算聚合结果。 当参数类型列设置为 DISCRETE 时,将忽略此值。
  • 结束值 - RANGE 参数的默认结束值。 未启用时间或范围滑块时将使用此值。 当忽略起始值和结束值列的值并禁用时间或范围滑块时,相关表中的记录将用于计算聚合结果。 当参数类型列设置为 DISCRETE 时,将忽略此值。
  • 离散参数运算符 - 将在字段或表达式列的值和 SQL 谓词或条件中的值之间使用的比较运算符。
    • NONE - 当参数类型设置为 RANGE 时,选择 NONE
    • EQUAL TO - 比较字段或表达式是否与值相等。
    • NOT EQUAL TO - 测试字段或表达式是否与值不相等。
    • GREATER THAN - 测试字段或表达式是否大于值。
    • LESS THAN - 测试字段或表达式是否小于值。
    • INCLUDE VALUES - 确定来自字段或表达式的值是否与列表中的某个值匹配。
  • 默认离散值 - 当参数类型值为 DISCRETE 时,您必须提供默认值。 当离散参数运算符为 INCLUDE VALUES 时,您可以提供以逗号分隔的多个值,例如 VANDALISM,BURGLARY/THEFT
  • 下一个参数的运算符 - 此运算符和下一个运算符之间的逻辑运算符。 本列仅适用于具有多个参数定义的情况。
    • NONE - 当没有更多参数时,选择 NONE
    • AND - 结合两个条件,如果两个条件都为 true 则选择记录。
    • OR - 结合两个条件,如果两个条件中至少有一个为 true 则选择记录。
Value Table
oid_fields
[oid_fields,...]
(可选)

唯一标识符字段将用于唯一标识表中各行的字段。

String
shape_type
(可选)

指定查询图层的形状类型。 在输出查询图层中只会使用查询结果集中与指定形状类型匹配的那些记录。 默认情况下,将使用结果集中第一条记录的 shape 类型。 如果查询结果集未返回几何字段,则忽略此参数。

  • POINT输出查询图层将使用点几何。
  • MULTIPOINT输出查询图层将使用多点几何。
  • POLYGON输出查询图层将使用面几何。
  • POLYLINE输出查询图层将使用折线几何。
String
srid
(可选)

返回几何查询的空间参考标识符 (SRID) 值。 在输出查询图层中只会使用查询结果集中与指定 SRID 值匹配的那些记录。 默认情况下,将使用结果集中第一条记录的 SRID 值。 如果查询结果集未返回几何字段,则忽略此参数。

String
spatial_reference
(可选)

输出查询图层将使用的坐标系。 默认情况下,将使用结果集中第一条记录的空间参考。 如果查询结果集未返回几何字段,则忽略此参数。

Spatial Reference
m_values
(可选)

指定输出图层是否包括线性测量(m 值)。

  • INCLUDE_M_VALUES图层将包括 m 值。
  • DO_NOT_INCLUDE_M_VALUES图层将不包括 m 值。 这是默认设置。
Boolean
z_values
(可选)

指定输出图层是否将包括高程值(z 值)。

  • INCLUDE_Z_VALUES图层将包括 z 值。
  • DO_NOT_INCLUDE_Z_VALUES图层将不包括 z 值。 这是默认设置。
Boolean
extent
(可选)

指定图层范围。 范围必须包括表中的所有要素。

  • MAXOF - 将使用的所有输入的最大范围。
  • MINOF - 将使用的所有输入共用的最小范围。
  • DISPLAY - 范围与可见显示范围相等。
  • 图层名称 - 将使用指定图层的范围。
  • Extent 对象 - 将使用指定对象的范围。
  • 以空格分隔的坐标字符串 - 将使用指定字符串的范围。 坐标以 x-min,y-min,x-max,y-max 的顺序表示。
Extent

代码示例

MakeAggregationQueryLayer 示例 1(Python 窗口)

以下 Python 窗口脚本演示了如何通过点要素类计算每个区的犯罪总数,并将结果连接到警务区要素类。

import arcpy
arcpy.env.workspace = "C:/data/localhost.sde"
arcpy.management.MakeAggregationQueryLayer(
    "PoliceDistricts", "district", "Crime_locations", "PdDistrict", "SF_Crimes")
MakeAggregationQueryLayer 示例 2(Python 窗口)

以下 Python 窗口脚本演示了如何通过点要素类计算每个区和每种犯罪类型的犯罪总数,并将结果连接到警务区要素类。

import arcpy
arcpy.env.workspace = "C:/data/localhost.sde"
arcpy.management.MakeAggregationQueryLayer(
    "PoliceDistricts", "district", "Crime_locations", "PdDistrict", "SF_Crimes", 
    None, 
    "DISCRETE crime_type # Category STRING # # 'INCLUDE VALUES' 'VANDALISM, BURGLARY/THEFT' NONE")
MakeAggregationQueryLayer 示例 3(Python 窗口)

以下 Python 窗口脚本演示了如何通过时间序列表计算总降雨量和平均降雨量,并将结果连接到水站要素类。

import arcpy
arcpy.env.workspace = "C:/data/localhost.sde"
arcpy.management.MakeAggregationQueryLayer(
    "weather_stations", "station_id", "observed_rainfall", "station_id", 
    "Total_Rainfall", [["SUM", "rainfall_inch"], ["MIN", "rainfall_inch"]])
MakeAggregationQueryLayer 示例 4(Python 窗口)

以下 Python 窗口脚本演示了如何通过时间序列表针对任意时间窗计算总降雨量和平均降雨量,并将结果连接到水站要素类。

import arcpy
arcpy.env.workspace = "C:/data/localhost.sde"
arcpy.management.MakeAggregationQueryLayer(
    "weather_stations", "station_id", "observed_rainfall", "station_id", 
    "Total_Rainfall", [["SUM", "rainfall_inch"], ["MIN", "rainfall_inch"]], 
    "RANGE TimeVar # collection_date DATE 1/1/2020 12/1/2020 NONE # NONE")

相关主题