GDAL C++ API 学习之路 (3)OGRFeature Style 要素样式类 OGRStyleTool

Class OGRStyleTool        class OGRStyleTool

此类表示样式工具

OGRStyleTool 是 OGR 样式工具的基类,用于表示不同类型的样式工具。它是 GDAL/OGR 库中的一部分,用于处理和管理地理数据的样式和渲染

定义要素或图层的样式,例如线条的颜色、填充的模式、文本的字体等。它们允许用户自定义地理数据的外观和呈现方式

Public Functions:

inline OGRStyleTool()

explicit OGRStyleTool(OGRSTClassId eClassId)        构造函数

virtual ~OGRStyleTool() 析构函数

GetType

OGRSTClassId GetType()

确定样式工具的类型

返回:

样式工具类型,OGRSTCPen (1)、OGRSTCBrush (2)、OGRSTCSymbol (3) 或 OGRSTCLabel (4) 之一。如果 OGRStyleToolH 无效,则返回 OGRSTCNone (0)

// 创建一个 OGRStyleTool 对象
OGRStyleTool* styleTool = new OGRStyleTool();
styleTool->SetSymbol("SYMBOL(d:0x0033FF)");

// 获取样式工具对象类型
OGRSTClassId typeId = styleTool->GetType();

OGRSTClassId 是一个枚举类型 

  • OGRSTCPen:笔样式工具
  • OGRSTCBrush:填充样式工具
  • OGRSTCSymbol:符号样式工具
  • OGRSTCText:文本样式工具
  • OGRSTCLabel:标注样式工具
  • OGRSTCVector:矢量样式工具
  • OGRSTCRaster:栅格样式工具
  • OGRSTCComposite:复合样式工具

SetUnit

void SetUnit(OGRSTUnitId, double dfScale = 1.0)

设置样式工具单位

参数:

  • eUnit -- 新单元。

  • dfGroundPaperScale -- 地面到纸张的比例因子

// 创建一个 OGRStyleTool 对象
OGRStyleTool* styleTool = new OGRStyleTool();
styleTool->SetSymbol("SYMBOL(d:0x0033FF)");

// 设置样式工具的单位和比例
OGRSTUnitId unitId = OGRSTUPixel;
double scale = 0.5;
styleTool->SetUnit(unitId, scale);

OGRSTUnitId 是一个枚举类型

  • OGRSTUPixel:像素单位
  • OGRSTUPoint:点单位
  • OGRSTUMM:毫米单位
  • OGRSTUCM:厘米单位
  • OGRSTUMeter:米单位

GetUnit

inline OGRSTUnitId GetUnit()

获取样式工具单位

返回: 样式工具单元

// 创建一个 OGRStyleTool 对象
OGRStyleTool* styleTool = new OGRStyleTool();
styleTool->SetSymbol("SYMBOL(d:0x0033FF)");
styleTool->SetUnit(OGRSTUMM);

// 获取样式工具的单位类型
OGRSTUnitId unitId = styleTool->GetUnit();

Public Static Functions

GetRGBFromString

static GBool GetRGBFromStringconst char *pszColor, int &nRed, int &nGreen, int &nBlue, int &nTransparence)

返回以 #RRGGBB[AA] 格式编码的颜色的 r,g,b,a 分量

参数:

  • pszColor -- 要解析的颜色

  • nRed -- 对将返回红色值的 int 的引用。

  • nGreen -- 对将返回绿色值的 int 的引用。

  • nBlue -- 对将返回蓝色值的 int 的引用。

  • nTransparance -- 引用将返回(可选)alpha 值的 int。

返回: 如果可以成功解析颜色,则为 TRUE,如果出现错误,则为 FALSE

int red, green, blue, transparence;
    const char* color = "#FF0000";

    if (ColorUtility::GetRGBFromString(color, red, green, blue, transparence)) {
        std::cout << "Red: " << red << std::endl;
        std::cout << "Green: " << green << std::endl;
        std::cout << "Blue: " << blue << std::endl;
        std::cout << "Transparence: " << transparence << std::endl;
    } else {
        std::cout << "Invalid color string" << std::endl;
    }

你可能感兴趣的:(OGR,学习)