应用过滤器
在本主题中
过滤器显示地图中要素图层的焦点视图。通过限制图层中要素的可见性,可显示比较重要的内容。例如,您可在犯罪图层上创建过滤器,以便在地图上仅显示纵火案。此过滤视图可显示纵火案的案发模式,从而帮助警察局阻止纵火企图的再次发生。
作为地图作者,您还可以设置交互式过滤器,用来帮助用户自行对自己的数据进行分析。通过提供关于图层中可用值的提示和提示文本,可以引导用户使用他们可能要应用于要素的其他过滤器。例如,可在学校图层中设置交互式过滤器,以便用户可以选择查看小学、中学或高中。默认情况下,该图层显示小学。通过阅读您所提供的提示和提示文本,用户就会知道他们可将值更改为中学或高中来查看地图上不同类型的学校。
使用现有过滤器
如果地图要素图层包含过滤器,则会看到过滤后的要素视图。只有满足过滤器条件的要素才会在地图中显示。例如,地图制作者可能已在包含小学、中学和高中的学校图层上设置了过滤器,使之只显示小学(例如,类型为小学)。在这种情况下,地图显示中就会过滤掉中学和高中。如果地图作者在学校图层上设置了交互式过滤器,那么您就可以将值更改为中学,随即地图上就会只显示中学。
您可以访问过滤器来查看表达式,在过滤器中更改任何交互式表达式,以及编辑过滤器。所做的任何更改只会应用于地图的显示(只有地图的所有者才能保存更改)。
- 在地图查看器中打开含有过滤图层的地图。
- 在详细信息窗格中,单击内容按钮。
- 单击图层名称右侧的箭头,然后单击过滤器。将出现过滤器 窗口。
- 更改、编辑或查看过滤器。
- 在更改选项卡中,可将新值应用于现有交互式过滤器。为表达式输入新值,然后单击应用过滤器按钮。地图显示将进行更新,以显示要素图层的新过滤视图。该选项卡还会在过滤器中显示友好版本的表达式。如果在过滤器中存在交互式表达式,则会显示该选项卡。如果过滤器不包含交互式表达式,则您只会看到查看选项卡,而不会显示过滤器中友好版本的表达式。
- 在编辑选项卡中,可以更新表达式。有关如何更新表达式的详细信息,请参阅“创建过滤器”部分。
创建过滤器
可在具有关联属性数据的托管要素图层、ArcGIS Server 要素服务图层和 ArcGIS Server 地图服务图层上创建过滤器;无法在地图注释或从文件导入的要素上创建过滤器。只有满足表达式条件的要素才会在地图中显示。
- 在 地图查看器中打开地图。
- 在详细信息窗格中,单击内容按钮。
- 单击图层名称右侧的箭头,然后单击过滤器。将弹出过滤器 窗口和创建选项卡。
- 创建定义表达式。
- 表达式的一般格式为:<字段名> <运算符> <值、字段或唯一值>。
- 您可以创建一个表达式、多个表达式或一组或多组表达式。组是满足某种条件的表达式的集合,例如,类型为小学,入学人数至少为 400。
- 如果创建了多个表达式,需选择要在图层中显示与全部表达式还是任一表达式匹配的要素。全部表示您指定的所有条件都必须为真。任一表示只要有一个表达式为真即可显示对应要素。
- 对于表达式的字段部分,单击字段下拉箭头,然后从列表中选择要查询的字段。
- 对于表达式的运算符部分,单击运算符下拉箭头,然后从列表中选择运算符。
- 如果想要根据特定值进行过滤,则选择值,然后在字段中输入值。输入框会根据字段类型不同而变化。
- 如果想要对一个字段中的值和另一个字段中的值进行比较,则选择字段,单击下拉箭头,然后选择表达式的字段。
- 如果想要根据为表达式选择的字段中的特定值进行过滤,可选择唯一值,然后从字段中选择唯一值。
- 如果根据值或唯一值创建了表达式,则可设置交互式表达式。不能在基于字段的表达式中请求提供值。选中请求值左侧的复选框。在提示字段中输入关于该值的信息,然后在另一个提示文本字段中输入提示文本。
- 要删除过滤器中的表达式,请单击表达式右侧的删除按钮 。
- 单击应用过滤器即可在地图上启用过滤后的视图。
提示:
如果为托管要素图层创建了一个过滤器,则您可以选择应用过滤器并缩放至来启用过滤视图并重新绘制当前地图以显示过滤内容。
- 要撤消过滤器并显示图层中的所有要素,可单击移除过滤器。
过滤器注意事项
- 您可在具有关联属性数据的托管要素图层、ArcGIS Server 要素服务图层和 ArcGIS Server 地图服务图层上创建过滤器。无法在地图注释或从文件导入的要素上创建过滤器。
- 要更改字段名称,可通过弹出窗口配置编辑字段的别名。
- 您可以基于值或唯一值创建交互式表达式。无法基于字段创建交互式表达式。
- 请不要在值中添加特殊字符,除非这些特殊字段是值的一部分。例如,城市为 "New York" 无法找到名为 New York 的要素。在此例中,应改为使用城市为 New York。
- 如果您的字段包含编码值,则该值列表将显示字段服务所定义的所有编码值。其中可能也包含图层中未作为要素存在的值。唯一值列表显示图层中的所有要素(可能是服务中值的子集)。
- 如果您拥有多个表达式,则得出的结果会根据您是否将其归组以及如何归组而不同。例如,如果您创建一个过滤器,其中以下所有的表达式均为真:类型为中学或类型为高中(这是一个组)且类型为私立(这是一个单独的表达式),过滤器会选择私立中学和私立高中。而如果在您创建的过滤器中,以下所有的表达式均为真:类型为高中且类型为私立(现在,这是一个组)或类型为中学(这是一个单独的表达式),则您的过滤器会选择所有公立和私立中学以及私立高中。