使用定义查询过滤要素

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

  • 在世界城市数据集中,仅使用人口超过 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 自动创建和执行定义查询。 有关此主题的信息(包括代码示例),请参阅图层类文档。

共享具有定义查询的图层

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