将数据集作为图层添加至地图或场景时,有时您只想使用和绘制数据集中的部分要素。 示例包括:
- 在世界城市数据集中,仅使用人口超过 100 万的城市。
- 在水文线数据集中,仅使用常流河。
- 在宗地数据集中,仅使用划分为商业区域的宗地。
定义查询可用于通过按图层过滤要从数据集中检索的要素,定义要使用的图层要素子集。 这意味着定义查询不仅会影响绘图,还会影响图层属性表中显示的要素,可以通过地理处理工具进行选择、标注、标识和处理。
如果要限制绘制的要素,但保留查询和处理中的所有要素,请考虑改用显示过滤器。 定义查询和显示过滤器可以在图层上一起使用,但请记住,定义查询用于限制图层中的可用要素,而显示过滤器仅用于限制要显示的要素。
定义查询由一个或多个子句组成。 定义查询需使用 SQL 语法进行编写并通过查询构建器进行构造。 有关如何使用子句和查询以及如何保存和加载文件中的查询,请参阅查询表达式简介。
图层可以具有多个与之关联的定义查询,但一次只能有一个定义查询处于活动状态。 即使为图层定义了多个定义查询,所有查询都可以处于非活动状态,以便不会应用任何定义查询。
注:
本主题概述了要素图层上的定义查询,但定义查询可以在独立表中以同样方式使用。
为图层创建定义查询
要在图层上创建定义查询,请执行以下步骤:
- 确保在内容窗格中选择了该图层。
- 在要素图层下的数据选项卡上的定义查询组中,单击 以打开图层属性对话框的定义查询选项卡。
- 单击新建定义查询。
随即将创建一个带有默认名称和一个未完成子句的全新查询。
- 从菜单中选择构造子句所需的值。 这些菜单及其值仅适用于基础源数据。
- 也可以单击添加子句 向查询中添加另一个子句。 根据需要从新子句的菜单中选择值。 重复该步骤以根据需要添加其他子句。
- (可选)单击字段设置 修改字段值的显示。 这些设置将应用于所有子句。
- 默认选中显示字段别名。 单击显示字段名称在子句的字段下拉菜单中包含表名称。 如果图层参与共享公共字段名称的连接,则此操作非常有用。
- 单击升序排序或降序排序在下来菜单中以字母顺序显示字段名称。
- 默认选中显示可见字段。 单击显示所有字段在子句的字段下拉菜单中显示隐藏字段。
- 或者可将鼠标悬停在查询名称上,然后单击以进行重命名。
- (可选)单击验证 SQL 表达式是否有效 来验证查询。
- 要验证并最终确定查询,请单击应用。
- 如果这是图层上的唯一定义查询,则它将成为活动定义查询,并立即应用。 如果图层上还有其他定义查询,请单击设置为活动 以将定义查询应用于图层。
设置活动定义查询
您可以为图层或表定义多个定义查询并在它们之间进行切换。 无论何时仅有一个查询处于可用状态,或无任何查询处于可用状态。 定义查询将作为图层属性进行存储。
要在活动定义查询之间进行切换,请执行以下步骤:
- 确保该图层在内容窗格中处于选中状态。
- 在要素图层下的数据选项卡的定义查询组中,从定义查询菜单中选择要应用于图层的查询。
- 也可以通过图层属性对话框设置活动查询。
- 单击设置为活动 将该查询应用于图层。 任何其他查询都将变为非活动状态。 可在属性对话框的底部为活动查询命名。 如果已列出多个查询且活动查询位于视图范围之外,请单击显示活动定义查询 以滚动至该活动查询。
- 单击清除活动查询 后将不再向图层或表应用任何查询。 所有查询均保留在图层或表中,但当前未应用任何查询。
提示:
可在内容窗格中过滤图层列表以仅显示具有活动定义查询的图层。
修改现有查询
在内容窗格中选择图层之后,在要素图层下的数据选项卡的定义查询组中,单击 以打开图层属性对话框的定义查询选项卡。 要修改定义查询,请将鼠标悬停在该查询上,然后执行以下任意操作:
- 要修改、添加或移除定义查询中的子句,请单击查询单元格中的编辑。
- 要编辑查询中的子句,请根据需要调整值。
- 要从查询中移除子句,请单击移除子句 。
- 要向查询添加子句,请单击添加子句 。
单击应用以将更改应用于定义查询。
- 要从图层或表中移除定义查询,请将鼠标悬停在定义查询单元格上,然后单击移除定义查询 。
- 要重命名定义查询,请单击定义查询的名称,然后输入新名称。
- 要将查询语法导出到查询表达式文件(.exp 文件),请单击保存 。
- 要将当前查询替换为查询表达式文件(.exp 文件)中的其他查询,请单击加载 。
同时在多个图层上设置定义查询
如果多个图层共享具有公用名称的定义查询,即使查询的内容不同,也可以同时激活这些图层的查询。 这表示您可以为某一情景构造多个相关查询,并同时应用这些查询。 您随后可以根据需要切换至不同的查询集以满足不同情景。
要将具有公用名称的定义查询同时应用于多个图层,请执行以下步骤:
- 确保在内容窗格中选择了图层。
- 在要素图层下的数据选项卡的定义查询组中,从定义查询菜单中选择要应用于图层的查询。 仅显示所有选定图层具有公用名称的定义查询。
共享具有定义查询的图层
将图层作为要素服务或在地图图像图层中进行共享时,仅保留并使用活动定义查询。 其他所有非活动定义查询都将被删除。