GDAL/OGR 地理要素样式(二)

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: 英寸 

你可能感兴趣的:(C++,GDAL,OGR,OGRStyle)