使用定义查询过滤要素

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

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

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

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

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

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

注:

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

为图层创建 定义查询

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

  1. 确保在内容窗格中选择了该图层。
  2. 要素图层下的数据选项卡上的定义查询组中,单击 启动器 以打开图层属性对话框的定义查询选项卡。
  3. 单击新建定义查询

    随即将创建一个带有默认名称和一个未完成子句的全新查询。

  4. 从菜单中选择构造子句所需的值。这些菜单及其值仅适用于基础源数据。
  5. 也可以单击添加子句 添加新子句向查询中添加其他子句。根据需要从新子句的菜单中选择值。重复该步骤以根据需要添加其他子句。
  6. 或者可将鼠标悬停在查询名称上,然后单击以进行重命名。
  7. 可选择单击验证 SQL 表达式是否有效 验证 SQL 表达式是否有效 来验证查询。
  8. 要验证并最终确定查询,请单击应用
  9. 如果这是图层上的唯一定义查询,则它将成为活动定义查询,并立即应用。如果图层上还有其他定义查询,请单击设置为活动 设置为活动 以将定义查询应用于图层。

设置活动定义查询

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

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

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

修改现有查询

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

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

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

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

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

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

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

  1. 确保在内容窗格中选择了图层。
  2. 要素图层下的数据选项卡的定义查询组中,从定义查询菜单中选择要应用于图层的查询。仅显示所有选定图层具有公用名称的定义查询。

共享具有定义查询的图层

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

相关主题