关于在样式定义中使用表达式

对于几乎所有样式的设置,都可以将表达式用作值。使用“表达式生成器”可以通过表达式基于要素类属性和相关要素属性或者使用属性值计算的任何值来设置要素样式。

文字函数

使用“表达式生成器”创建可用于动态样式设置的计算特性。行业模型提供两个文字函数。

TB_SQL - 使用此文字函数可从相关的要素类中查询属性。该属性可用于进行样式设置。SQL 命令必须符合以下规则:

注:

若要测试 SQL 命令,请执行 SELECT g.FID, (SQL 命令) FROM <要素类名称> g。例如,使用 SQL Sheet 执行该命令。

TB_VARIABLE

使用此文字函数可创建计算文字特性,为专题样式提供用户定义的变量。变量存储在系统表 TB_VARIABLE 中。对于每个个人登录,可以定义这些变量。

例如,在 TB_VARIABLE 中,可以定义一个其值表示要素 ID 的变量 BUILDING。在“显示管理器”中,可以使用变量来设计建筑样式。若要在地图中高亮显示单个建筑,可以在 TB_VARIABLE 中输入建筑的要素 ID。如果要高亮显示另一建筑,您不需要修改显示模型,可以在 TB_VARIABLE 中输入新的要素 ID。

If、Lookup 和 Range

使用这些函数可以为一个显示属性(例如,线颜色或宽度)定义一个专题。它们可以使用多个数据类型:字符串、实数、整数、布尔、颜色和日期时间。每个参数可以是一个常量或者计算结果为一个字符串或数字值的表达式。

If

If('Condition', TrueValue, FalseValue)

“Condition”参数是一个字符串,包含计算结果为布尔值的任何表达式(实际上是一个过滤器)。这可以是一个比较,如“population > 1000”,其中“population”是图层的一个要素特性。“TrueValue”和“FalseValue”是当条件分别是 True 或 False 时经计算并返回的表达式。这两个表达式的值必须为相同的数据类型(字符串或数字)。

该示例可用于旋转向上箭头符号,以指示人口上升或下降:If('pop2005 > pop2000', 0.0, 180.0)

Lookup

Lookup(Expression, DefaultValue, Key1, Value1, … KeyN, ValueN)

此函数实现每个关键字与单一值关联的查寻表。“Expression”是一个表达式,其计算结果为一个关键字(字符串或数字)。此关键字与其余常量“key#”参数进行比较,以选择要返回的常量“value#”参数。如果未找到请求的关键字,则返回“DefaultValue”。“Expression”与所有“Key”参数必须具有相同的数据类型,同样“DefaultValue”与所有“Value#”参数也必须具有相同的数据类型。key-value 对的数量不是固定的。

下例可用于根据分区类型为地块指定颜色。

Lookup(zoning, 0xff888888, 'Industrial', 0xffff0000, 'Commercial', 0xff00ff00, 'Residential', 0xff0000ff)

Range

Range 函数将“Expression”关键字与一组范围进行比较,如果 MIN <= KEY < MAX,关键字将匹配一个范围:

Range(Expression, DefaultValue, Min1, Max1, Value1, … MinN, MaxN, ValueN)

范围由“Min#”和“Max#”参数指定,每个参数都有一个与之关联的“Value#”参数。如果请求的关键字与提供的任何范围都不匹配,将返回“DefaultValue”。如果范围重叠,将选择与关键字匹配的第一个范围。“Expression”与所有“Min”和“Max”参数必须具有相同的数据类型,同样“DefaultValue”与所有“Value#”参数也必须具有相同的数据类型。range-value 集的数量不是固定的。

下例可用于根据城市人口指定符号大小:

Range(population, 4.0, 100000, 1000000, 6.0, 1000000, 10000000, 8.0)