了解逻辑示意图属性的存储和评估模式
创建逻辑示意图属性时,必须指定存储和评估模式。指定存储时,您需要定义是否必须将逻辑示意图属性值存储在逻辑示意图数据集中。指定逻辑示意图属性的评估模式用于确定何时需要重新评估逻辑示意图属性值。
逻辑示意图属性存储
逻辑示意图属性值存储有三个选项:
- 存储在逻辑示意图数据集中的字段内(字段)
- 存储在逻辑示意图数据集中的属性集内(属性集)
- 从不存储(不存储)
对于名称与预定义属性名称对应的逻辑示意图属性,存储不可配置。这些特定属性的存储完全由未经过任何配置的 Schematics 进行管理。大多数情况下,它基于相关逻辑示意图要素类或逻辑示意图类中的系统字段。
字段存储
字段是建议大多数属性使用的默认存储值。它使得逻辑示意图属性值可以存储在相关逻辑示意图要素类或逻辑示意图类中的字段内。在逻辑示意图要素上使用“识别”工具或从任意构成逻辑示意图图层的要素图层中单击“打开属性表”时,那些值将可用。
如果想通过逻辑示意图属性来指定逻辑示意图要素在逻辑示意图中的显示和标注方式,那么,必须将它们的值存储为其相关的逻辑示意图要素类中的字段。
- 首先在 ArcCatalog 中创建逻辑示意图要素类或逻辑示意图类中的相关字段。
- 最好在逻辑示意图数据集编辑器中创建逻辑示意图要素类或逻辑示意图模板上的逻辑示意图属性。
属性集存储
如果要将逻辑示意图属性值存储在逻辑示意图数据集中,但不需要在相关逻辑示意图要素类或逻辑示意图类中的字段内明确提供此信息,必须使用“属性集存储”选项。在此情况下,每次评估逻辑示意图属性时,名称对应于逻辑示意图属性名称的属性集属性将在相关逻辑示意图要素的 PROPERTYSET 字段或相关逻辑示意图的 BLOBS 字段内自动管理。
不存储
不需要将逻辑示意图属性值存储在逻辑示意图数据集中时,必须使用“不存储”模式。它经常是为值作为另一属性一部分的逻辑示意图属性而指定的存储,与此同时将存储这些第二属性值本身。
逻辑示意图属性评估
对于何时评估逻辑示意图属性值有四个选项:
- 生成/更新时
- 开始编辑时
- 刷新/重绘时
- 根据需要
生成/更新时评估
具有“生成/更新时”评估的逻辑示意图属性在生成逻辑示意图时进行评估。每次更新逻辑示意图时,都对其进行重新评估。在逻辑示意图使用期间,除这些特定时刻外,从不对其进行重新评估。
这种评估类型是最常用的评估类型。
开始编辑时评估
如果评估类型被设置为“开始编辑时”,逻辑示意图属性不仅会在生成和更新逻辑示意图时进行评估,而且每次将逻辑示意图加载到内存中时也将进行评估(例如:每次对逻辑示意图启动编辑会话时)。在此情况下,如果属性值已经更改且存储模式为“字段”或“属性集”,则保存逻辑示意图的编辑内容时,新值将自动存储在相关逻辑示意图要素类或逻辑示意图类表中。
每次对逻辑示意图启动编辑会话时,都会将逻辑示意图加载到内存中。不过,也可在打开时自动将其加载到内存中。
“开始编辑时”评估类型是针对任何要定期评估而又不更新整个逻辑示意图内容的属性而预定义的。对于那些为已使用动态自定义查询配置的逻辑示意图要素类而指定的属性,也要定义“开始编辑时”评估类型。
刷新/重绘时评估
如果使用“刷新/重绘时”评估模式配置逻辑示意图属性,则生成逻辑示意图时会导致对逻辑示意图属性值重新进行系统性评估。在以下情况下,会发生此情况:每次更新逻辑示意图时、将逻辑示意图加载到内存中时、每次刷新或重绘逻辑示意图时(如果逻辑示意图的比例或范围发生变化,或者逻辑示意图中所包含的逻辑示意图要素被移动时,等等)。
当逻辑示意图属性被链接到经常更改的数据时,这种评估类型会变得很有趣。
与具有另一种评估模式的逻辑示意图属性类似,“刷新/重绘时”逻辑示意图属性可直接用于设置逻辑示意图要素符号系统,而无论其属性类型为何。不过,如果其类型为“关联的字段”,“刷新/重绘时”逻辑示意图属性不能直接用于标注。在该特定情况下,默认情况下 ArcMap 标注引擎不会强制加载关联的字段值,但是您可在使用以下高级标注表达式时强制进行此加载:
用于获取标注并基于评估模式为“重绘/刷新时”的“关联的字段”逻辑示意图属性的高级表达式。
输入参数:
- [ATTR_AS_LABEL]:要用于标注的逻辑示意图属性。
- [PROPERTYSET]、[DATASOURCEID]、[UCID] 和 [UOID]:为使相关的关联字段值保持最新而必须进行加载的逻辑示意图要素类字段。
请注意,[DATASOURCEID]、[UCID] 和 [UOID] 字段可从“标注表达式”对话框的“字段”列表中获得,并可在建立以下高级表达式时从此列表中进行选取。但是,因为此列表中未提供 [PROPERTYSET] 字段,因此必须在表达式框中将其直接输入。
Function FindLabel([PROPERTYSET],[DATASOURCEID], [UCID], [UOID], [ATTR_AS_LABEL]) FindLabel = [ATTR_AS_LABEL] End Function
根据需要评估
通常,将会为构成另一属性的逻辑示意图属性配置已选用“根据需要”评估模式的逻辑示意图属性。在此情况下,评估另一属性时,也将对该属性进行评估。