显示图层中的要素子集

在指定一个希望绘制为地图图层的数据集时,您通常只希望绘制数据集中的部分要素。这种情况下,可以定义一个查询表达式以便选择一个用于图层显示的要素子集。这称为定义查询。

例如:

如果只希望显示和使用图层中所有要素的子集,则可对图层应用一个定义查询。可以直接输入您自己的表达式,或者使用查询构建器 对话框来构建查询表达式。

对具有空间和属性因子的企业级地理数据库要素类执行查询时,您可以通过由搜索顺序按钮启动的对话框选择先执行空间搜索(默认)还是先执行属性搜索。您可以微调查询的执行方式。只有在图层数据源是一个企业级地理数据库要素类时,才出现该按钮。

注注:

如果选择了先执行空间搜索选项,定义查询会将要素限制为那些存在于此范围内的要素。如果选择了先执行属性搜索选项,将先选择整个数据集中属性值符合查询条件的所有要素,然后空间搜索将查找在您的范围内可见的要素。

如果您的地图启用了数据驱动页面功能,您就可以使用页面定义查询来指定将根据 SQL 查询绘制图层的哪些要素。虽然与其他定义查询相似,但页面定义查询的不同之处在于仅作用于“数据驱动页面”,并且是动态的。要素基于当前页面进行过滤。迭代页面时,该查询会发生变化,并且系统会绘制一组适合于新页面的新要素。如果您具有一些与页面范围相重叠的要素,并希望这些要素同时显示在多个页面上,则应考虑使用裁剪工具来自定义地图。只有在为地图文档定义了“数据驱动页面”的情况下才会出现该按钮。定义“数据驱动页面”时,该按钮并不出现在当前作为“数据驱动页面”索引图层使用的图层的图层属性中。

警告警告:

如果使用不包含 ObjectID (OID) 字段的表或事件图层(x,y 或路径)数据源,则定义查询不可用。文本文件(.txt 文件)、Excel 数据(.xls 文件)和 OLE DB 数据(例如通过 OLE DB 访问的未注册 Oracle 文件)将出现这种情况。

对于事件数据,解决方法就是从表数据源(而不是事件图层)创建一个要素类。如果所添加的包含 x,y 数据的表中没有 ObjectID 字段,请不要使用 ArcMap 中的文件 > 添加数据 > 添加 XY 数据命令创建基于表的事件图层。相反,启动 ArcCatalog,右键单击表,选择从 XY 表创建要素类从其创建新要素类,然后将该新要素类添加到地图。另外,使用文件 > 添加数据 > 添加 XY 数据文件 > 添加数据 > 添加路径事件功能从不包含 ObjectID 的表创建事件图层后,您可以导出数据以制作新图层。这可将数据保存到要素类,并进而写入 ObjectID 字段。另一种选择是使用 创建查询表地理处理工具,从而使用 OLE DB 连接创建表,并指定要用于 ObjectID 的列或动态添加 ObjectID。

创建定义查询

  1. 在内容列表中右键单击图层,然后单击属性
  2. 图层属性 对话框中单击定义查询选项卡。
  3. 输入查询表达式。
    输入定义查询以显示要素的子集
    可通过“查询构建器”来创建一个表达式,以识别您要显示的图层中的特定要素。
    有关如何构建有效查询的详细信息,请参阅构建查询表达式
  4. 单击确定

设置完定义查询后,地图将被重新绘制,并会显示使用查询选择的要素子集。每次刷新地图后,都会继续使用此要素子集绘制图层。

要将所有要素重新添加回图层中,只需删除定义查询即可。

相关主题

5/10/2014