枚举ogr_style_type
OGR 样式类型
值:
enumerator OGRSTypeUnused
enumerator OGRSTypeString
enumerator OGRSTypeDouble
enumerator OGRSTypeInteger
enumerator OGRSTypeBoolean
class OGRStyleTable #include <ogr_featurestyle.h>
此类表示样式表
OGRStyleTable
是一个用于管理样式的类,它可以包含多个样式。每个样式都有一个唯一的名称,通过这个名称可以在样式表中进行索引和引用。
样式表可以包含多个样式的原因是为了方便管理和应用不同的样式。在地理信息系统(GIS)中,不同的要素或要素类可能需要使用不同的样式来进行显示和渲染。通过将这些样式集中在一个样式表中,可以更好地组织和管理样式,便于在需要时进行选择和应用
Public Functions:
OGRStyleTable() 构造函数
~OGRStyleTable() 析构函数
AddStyle
GBool AddStyle(const char *pszName, const char *pszStyleString)
在表格中添加新样式
参数:
-
pszName -- 要添加的样式的名称。
-
pszStyleString -- 要添加的样式字符串。
返回: 成功时为TRUE,错误时为TRUE
OGRStyleTable* styleTable = new OGRStyleTable();
// 添加样式到样式表
const char* styleName = "Style1";
const char* styleString = "PEN(c:#FF0000,w:2px)";
GBool success = styleTable->AddStyle(styleName, styleString);
if (success) {
std::cout << "Style added successfully." << std::endl;
} else {
std::cout << "Failed to add style." << std::endl;
}
RemoveStyle
GBool RemoveStyle(const char *pszName)
按名称删除表中的样式
参数:
pszName -- 要删除的样式的名称。
返回: 成功时为TRUE,错误时为TRUE
// 创建一个 OGR 样式表对象
OGRStyleTable* styleTable = new OGRStyleTable();
// 添加一些样式到样式表
const char* styleName1 = "Style1";
const char* styleString1 = "PEN(c:#FF0000,w:2px)";
styleTable->AddStyle(styleName1, styleString1);
const char* styleName2 = "Style2";
const char* styleString2 = "BRUSH(fc:#00FF00)";
styleTable->AddStyle(styleName2, styleString2);
// 移除样式
const char* styleToRemove = "Style1";
GBool success = styleTable->RemoveStyle(styleToRemove);
ModifyStyle
GBool ModifyStyle(const char *pszName, const char *pszStyleString)
按名称修改表中的样式 如果样式不存在,则将添加该样式
参数:
-
pszName -- 要修改的样式的名称。
-
pszStyleString -- 样式字符串。
返回:成功时为TRUE,错误时为TRUE
// 添加样式到样式表
const char* styleName = "Style1";
const char* styleString = "PEN(c:#FF0000,w:2px)";
styleTable->AddStyle(styleName, styleString);
// 修改样式
const char* styleToModify = "Style1";
const char* modifiedStyleString = "PEN(c:#00FF00,w:1px)";
GBool success = styleTable->ModifyStyle(styleToModify, modifiedStyleString);
SaveStyleTable
GBool SaveStyleTable(const char *pszFilename)
将样式表保存到文件
参数:
pszFilename -- 要保存到的文件的名称。
返回:成功时为TRUE,错误时为TRUE
// 创建一个 OGR 样式表对象
OGRStyleTable* styleTable = new OGRStyleTable();
// 添加样式到样式表
const char* styleName = "Style1";
const char* styleString = "PEN(c:#FF0000,w:2px)";
styleTable->AddStyle(styleName, styleString);
// 保存样式表到文件
const char* filename = "styles.txt";
GBool success = styleTable->SaveStyleTable(filename);
LoadStyleTable
GBool LoadStyleTable(const char *pszFilename)
从文件加载样式表
参数:
pszFilename -- 要从中加载的文件的名称。
返回: 成功时为TRUE,错误时为TRUE
// 创建一个 OGR 样式表对象
OGRStyleTable* styleTable = new OGRStyleTable();
// 加载样式表文件
const char* filename = "styles.txt";
GBool success = styleTable->LoadStyleTable(filename);
Find
const char *Find(const char *pszStyleString)
按名称获取样式字符串
参数:
pszName -- 要查找的样式字符串的名称。
返回: 与名称匹配的样式字符串,如果未找到,则为 NULL,否则为错误
// 创建一个 OGR 样式表对象
OGRStyleTable* styleTable = new OGRStyleTable();
// 添加样式到样式表
const char* styleName1 = "Style1";
const char* styleString1 = "PEN(c:#FF0000,w:2px)";
styleTable->AddStyle(styleName1, styleString1);
const char* styleName2 = "Style2";
const char* styleString2 = "BRUSH(fc:#00FF00)";
styleTable->AddStyle(styleName2, styleString2);
// 查找样式
const char* styleToFind = "PEN(c:#FF0000,w:2px)";
const char* foundStyleName = styleTable->Find(styleToFind);
IsExist
GBool IsExist(const char *pszName)
参数:
pszName -- 要查找的名称。
返回: 样式的索引(如果找到),-1(如果未找到)或错误
// 创建一个 OGR 样式表对象
OGRStyleTable* styleTable = new OGRStyleTable();
// 添加样式到样式表
const char* styleName1 = "Style1";
const char* styleString1 = "PEN(c:#FF0000,w:2px)";
styleTable->AddStyle(styleName1, styleString1);
const char* styleName2 = "Style2";
const char* styleString2 = "BRUSH(fc:#00FF00)";
styleTable->AddStyle(styleName2, styleString2);
// 检查样式是否存在
const char* styleToCheck = "Style1";
GBool exists = styleTable->IsExist(styleToCheck);
GetStyleName
const char *GetStyleName(const char *pszName)
通过样式字符串获取样式名称
参数:
pszStyleString -- 要查找的样式字符串。
返回: 匹配样式字符串的名称或错误时为 NULL
// 创建一个 OGR 样式表对象
OGRStyleTable* styleTable = new OGRStyleTable();
// 添加样式到样式表
const char* styleName1 = "Style1";
const char* styleString1 = "PEN(c:#FF0000,w:2px)";
styleTable->AddStyle(styleName1, styleString1);
const char* styleName2 = "Style2";
const char* styleString2 = "BRUSH(fc:#00FF00)";
styleTable->AddStyle(styleName2, styleString2);
// 获取样式名称
const char* styleToGet = "Style2";
const char* foundStyleName = styleTable->GetStyleName(styleToGet);
void Print(FILE *fpOut)
将样式表打印到FILE指针
参数:
fpOut——要打印到的文件指针
// 创建一个 OGR 样式表对象
OGRStyleTable* styleTable = new OGRStyleTable();
// 添加样式到样式表
const char* styleName1 = "Style1";
const char* styleString1 = "PEN(c:#FF0000,w:2px)";
styleTable->AddStyle(styleName1, styleString1);
const char* styleName2 = "Style2";
const char* styleString2 = "BRUSH(fc:#00FF00)";
styleTable->AddStyle(styleName2, styleString2);
// 打开文件
const char* filename = "style_table.txt";
FILE* fpOut = fopen(filename, "w");
if (fpOut == nullptr) {
std::cerr << "Failed to open file for writing." << std::endl;
return;
}
// 将样式表内容打印到文件
styleTable->Print(fpOut);
// 关闭文件
fclose(fpOut);
Clear
void Clear()
清除样式表
Clone
OGRStyleTable *Clone()
重复样式表
返回: 新样式表,克隆后的样式表是一个全新的对象,拥有自己的内存空间和对原始样式表的独立引用
// 创建一个原始样式表对象
OGRStyleTable* originalStyleTable = new OGRStyleTable();
// 添加样式到原始样式表
// ...
// 创建一个克隆样式表对象
OGRStyleTable* clonedStyleTable = originalStyleTable->Clone();
ResetStyleStringReading
void ResetStyleStringReading()
将下一个样式指针重置为 0
GetNextStyle
const char *GetNextStyle()
从表中获取下一个样式字符串
返回:下一个样式字符串或出错时为 NULL
GetLastStyleName
const char *GetLastStyleName()
获取使用 OGR_STBL_GetNextStyle 获取的最后一个样式字符串的样式名称
返回: 最后一个样式字符串的名称或出错时为 NULL