使用定义查询过滤要素

将数据集作为图层添加至地图或场景时,有时您只想使用和绘制数据集中的部分要素。 示例包括以下内容:

  • 在世界城市数据集中,仅使用人口超过 100 万的城市
  • 在水文线数据集中,仅使用常流河
  • 在宗地数据集中,仅使用划分为商业区域的宗地

定义查询可用于通过按图层过滤要从数据集中检索的要素,定义要使用的图层要素子集。 这意味着定义查询不仅会影响绘图,还会影响图层属性表中显示的要素,且可以通过地理处理工具进行选择、标注、标识和处理。

如果要限制绘制的要素,但保留查询和处理中的所有要素,请考虑改用显示过滤器。 定义查询和显示过滤器可以在图层上一起使用,但定义查询用于限制图层中的可用要素,而显示过滤器仅用于限制要显示的要素。

定义查询由一个或多个子句组成。 定义查询需使用 SQL 语法进行编写并通过查询构建器进行构造。 有关如何使用子句和查询以及如何保存和加载文件中的查询,请参阅查询表达式简介

图层可以具有多个与之关联的定义查询,但一次只能有一个定义查询处于活动状态。 即使为图层定义了多个定义查询,所有查询都可以处于非活动状态,以便不会应用任何定义查询。

注:

本主题概述了要素图层上的定义查询,但定义查询可以在独立表中以同样方式使用。

为图层创建定义查询

要在图层上创建定义查询,请执行以下步骤:

  1. 确保已在内容窗格中选择了一个图层。
  2. 要素图层选项卡集上,单击数据选项卡。
  3. 数据选项卡的定义查询组中,单击构建定义查询按钮 启动器 以打开图层属性对话框,其中定义查询选项卡处于可用状态。
  4. 单击新建定义查询下拉菜单,以子句模式、SQL 模式或查询表达式文件 (.exp) 创建一个新查询。
  5. 从菜单中选择构造子句所需的值。 这些菜单及其值仅适用于基础源数据。
  6. 也可以单击添加子句 添加新子句 向查询中添加另一个子句。 根据需要从新子句的菜单中选择值。 重复该步骤以根据需要添加其他子句。
  7. (可选)单击字段设置 设置 修改字段值的显示。 这些设置将应用于所有子句。
    • 默认选中显示字段别名。 单击显示字段名称在子句的字段下拉菜单中包含表名称。 如果图层参与共享公共字段名称的连接,则此操作非常有用。
    • 单击升序排序降序排序在下来菜单中以字母顺序显示字段名称。 单击原始顺序可将字段恢复为其默认顺序。
    • 默认选中显示可见字段。 单击显示所有字段在子句的字段下拉菜单中显示隐藏字段。
  8. 或者可将鼠标悬停在查询名称上,然后单击以进行重命名。
  9. (可选)单击验证 SQL 表达式是否有效 验证 SQL 表达式是否有效 来验证查询。
  10. 要验证并最终确定查询,请单击应用
  11. 如果这是图层上的唯一定义查询,则它将成为活动定义查询,并立即应用。 如果图层上还有其他定义查询,请单击设置为活动 设置为活动 以将定义查询应用于图层。

设置活动定义查询

您可以为图层或表定义多个定义查询并在它们之间进行切换。 无论何时仅有一个查询处于可用状态,或无任何查询处于可用状态。 定义查询将作为图层属性进行存储。

要在活动定义查询之间进行切换,请执行以下步骤:

  1. 确保在内容窗格中选择了该图层。
  2. 要素图层选项卡集上,单击数据选项卡。
  3. 数据选项卡的定义查询组中,从定义查询菜单中选择要应用于图层的查询。
  4. 也可以通过图层属性对话框设置活动查询。
    • 单击设置为活动 设置为活动 将该查询应用于图层。 任何其他查询都将变为非活动状态。 可在属性对话框的底部为活动查询命名。 如果已列出多个查询且活动查询位于视图范围之外,请单击显示活动定义查询 显示活动定义查询 以滚动至该活动查询。
    • 单击清除活动查询 清除活动查询 后将不再向图层或表应用任何查询。 所有查询均保留在图层或表中,但当前未应用任何查询。

提示:

可在内容窗格中过滤图层列表以仅显示具有活动定义查询的图层。

修改现有查询

内容窗格中选择图层后,在要素图层选项卡集的数据选项卡的定义查询组中,单击构建定义查询按钮 启动器 以打开图层属性对话框,其中定义查询选项卡处于可用状态。 要修改定义查询,请将鼠标悬停在该查询上,然后执行以下任意操作:

  • 要修改、添加或移除定义查询中的子句,请单击查询单元格中的编辑
    • 要编辑查询中的子句,请根据需要调整值。
    • 要从查询中移除子句,请单击移除子句 移除子句
    • 要向查询添加子句,请单击添加子句 添加新子句

    单击应用以将更改应用于定义查询。

  • 要从图层或表中移除定义查询,请在未处于编辑模式的情况下,将鼠标悬停在定义查询单元格上,然后单击移除定义查询 移除
  • 要重命名定义查询,请单击定义查询的名称,然后输入新名称。
  • 要将查询语法导出到查询表达式文件 (.exp),请在未处于编辑模式的情况下,将鼠标悬停在定义查询单元格上,然后单击保存定义查询 保存
  • 要将当前查询替换为来自查询表达式文件 (.exp) 的不同查询,请在未处于编辑模式的情况下,将鼠标悬停在定义查询单元格上,然后单击加载定义查询 加载查询

同时在多个图层上设置定义查询

如果多个图层共享具有公用名称的定义查询,即使查询的内容不同,也可以同时激活这些图层的查询。 这表示您可以为某一情景构造多个相关查询,并同时应用这些查询。 您随后可以根据需要切换至不同的查询集以满足不同情景。

要将具有公用名称的定义查询同时应用于多个图层,请执行以下步骤:

  1. 确保在内容窗格中选择了图层。
  2. 要素图层选项卡集上,单击数据选项卡。
  3. 数据选项卡的定义查询组中,从定义查询菜单中选择要应用于图层的查询。

    仅显示所有选定图层具有公用名称的定义查询。

自动化定义查询创建

使用 ArcPy 函数组合,可以通过 Python 自动创建和执行定义查询。 有关此主题的信息(包括代码示例),请参阅图层类文档。

共享具有定义查询的图层

将图层作为要素服务或在地图图像图层中进行共享时,仅保留并使用活动定义查询。 其他所有非活动定义查询都将被删除。