1. 要素样式字符串
以前的OGR版本样式定义存储为一个字符串的形式,有时存储在每个数据集,每个图层,甚至直接存储在要素中。下面介绍几个样式字符串的示例:
⑴、5个像素宽的一条红线:
"PEN(c:#FF0000,w:5px)"
⑵、黑色边缘蓝色填充的多边形:
"BRUSH(fc:#0000FF);PEN(c:#000000)"
⑶、点符号:
"SYMBOL(c:#00FF00,id:"points.sym-45,ogr-sym-7")"
⑷、文本标签,标签内容为“text_string”,尺寸为12个像素,字体为Times New Roman:
"LABEL(f:"Times New Roman",s:12pt,t:{text_string})"
一个样式表描述一个地理要素:
道路: PEN(c:#FF0000,w:5px)
湖泊: BRUSH(fc:#0000FF);LINE(c:#000000)
营地: SYMBOL(c:#00FF00,id:"points.sym-45,ogr-sym-7")
标签: LABEL(f:"Times New Roman",s:12pt,t:{text_string})
然而,要素引用样式表样式时,前面加上了一个“@”字符,后面添加样式名称。
例如:一个要素样式设置为“@道路”,那么将绘制一条红色的线。
2. 样式字符串语法
每个要素都有一个样式属性(一个字符串):
<style_property> = "<style_def>" | "" | "@<style_name>" | "{<field_name>}"
l "<style_def>"在下面会给予说明;
l 要素样式属性为空,意味着要素继承该层的样式。
l "@<style_name>"参照图层或者数据集的样式表中预先定义的样式。根据样式名称首先在图层样式表中查找,如果没有找到,在到数据集样式表中查找。
l 最后,"{<field_name>}"意味着这个样式属性应该从空间属性字段中读取。
<style_def>样式的定义。它是有一个或者多个样式部件组成,部件之间使用分号分开。每个样式部件使用了一个绘图工具去定义完成绘图的一部分。
<style_def> = <style_part>[;<style_part>[;...]]
<style_part> = <tool_name>([<tool_param>[,<tool_param>[,...]]])
<tool_name> = 绘图工具名称, 现在有: PEN | BRUSH | SYMBOL | LABEL
<tool_param> = <param_name>:<param_value>
<param_name> = 见每个绘图工具列表(以后会列出)
<param_value> = <value> | <value><units>
<value> = "<string_value>" | <numeric_value> | {<field_name>}
<units> = g | px | pt | mm | cm | in
所有的绘制工具参数是可选的,所以它原则上有一个空的绘制参数列表("PEN()"等)。对于每个参数都没有任何指定的值,要素属性使用应用程序给定的默认值。OGR给定的默认值,不是应用程序必须使用的默认值。
当{<field_name>}用于工具参数的值时,有些选项可能要使用单位,而单位位于字段名称的后面例如:PEN(c:#FF0000,w:{line_width}pt)或者不指明单位,例如:PEN(c:#FF0000,w:{line_width})。第一种情况下,默认单位为点(pt),但是如果属性字段line_width值之后有一个单位的缩写(例如:“5px”,等),在属性字段中指明的单位具有优先权(在这种情况下单位为像素)。记录属性字段中不包含单位的情况大概占多数。
工具参数单位有:
g: 地图基本单位 (自定义单位,需要指定转换比例)
px: 像素
pt: 点(1/72英寸)
mm: 毫米
cm: 厘米
in: 英寸