OGR样式模型
sf2gis@163.com
2013年12月3日
1 OGR样式模型
OGR样式模型:OGR使用简单的键值对字符串管理样式。每种样式都可以自定义其名称,每种样式都是由不同的样式属性组成。
如:MyStyle: PEN(c:#FF0000,w:5,p:1);BRUSH(fc:#0000FF,bc:1,id:108,a:45.000000)//#RRGGBB
表示样式名称为MyStyle的样式,包含一个画笔,颜色是红色,宽度是5像素,样式是1;一个画刷,前景色是蓝色,后景色是样式1,id是108,角度是45度。注意:不同的样式工具,用‘;’分开。最后不能有‘;’,如果有,则会造成空工具的错误。
OGR的样式前期存储在字符串中,后期为方便管理使用了OGRStyleTable类。
OGRStyleTable类是一个用于管理样式字符串的表格类。用于管理多种样式,每个样式都都相应的名称索引。每个样式都由一个字符串组成,字符串使用类似于JSON的键值对表示(JSON使用{},而样式使用())。为了方便管理样式字符串,OGR使用了OGRStyleMgr类。
OGRStyleMgr类是一个用于管理单个样式字符串的类。用于管理和生成每个样式表中的具体的样式,也用于与Feature、OGRStyleTable、OGRStyleTool的交互。由于各种样式太多,而且不同的样式之间可能有重叠(如BRUSH和PEN的Color属性),为了方便管理每一种属性,OGR使用OGRStyleTool类。后来,为了方便管理OGRStyleTable,在OGRStyleMgr也添加了读取OGRStyleTable的操作。再后来,为了方便管理Feature/Dataset中样式,也添加了与其相关的操作。
OGRStyleTool类是一个抽象类,用于管理具体的一种属性(PEN、BRUSH、LABEL、SYMBOL)。
1.1 OGRStyleTable
AddStyle(索引名,样式字符串):添加一种索引名称的样式字符串。
RemoveStyle(索引名):删除指定索引名的样式字符串。
ModifyStyle(索引名,样式字符串):修改已有的样式字符串。
Find(索引名):根据索引名,返回样式字符串。
IsExist(索引名):检查是否存在指定的索引名。
GetStyleName(样式字符串):检查样式字符串对应的索引名。
Clear():清除所有样式。
Clone():复制样式表。
SaveStyleTable(目录):将样式表保存到指定目录。
loadStyleTable(目录):加载指定目录到目前的样式表。
ResetStyleStringReading():设置当前样式游标的位置。
GetNextStyle():获取游标指向的下一个样式。
GetLastStyleName():获取游标指向的当前的样式名称。
1.1.1 示例
//styletable
OGRStyleTable *pTable = new OGRStyleTable;
OGRStylePen *pPen = new OGRStylePen;
pPen->SetWidth(20);
pPen->SetColor("#FF0000");
LPCSTR strPen =pPen->GetStyleString();
//add
pTable