OGRRangeFieldDomain Class “ogr_core.h”
OGRRangeFieldDomain是OGRFieldDomain的子类,表示一个数值范围。该类的实例由最小值和最大值组成,可用于定义数值型字段的范围
OGRRangeFieldDomain
OGRRangeFieldDomain(const std::string &osName, const std::string &osDescription, OGRFieldType eFieldType, OGRFieldSubType eFieldSubType , const OGRField &sMin, bool bMinIsInclusive, const OGRField &sMax, bool bMaxIsInclusive) 与 C 函数 OGR_RangeFldDomain_Create() 相同
构造函数
参数:
-
osName – 域名。
-
osDescription – 域描述。
-
eFieldType – 字段类型。OFTInteger,OFTInteger64,OFTReal或OFTDateTime中的一个
-
eFieldSubType – 字段子类型。
-
sMin – 最小值。必须读取 OGRField枚举中的哪个成员取决于字段类型。如果未设置最小值(并非所有后端都支持),则使用 OGR_RawField_SetUnset() 初始化值。
-
bMinIsInclusive – 最小值是否包含在范围内。
-
sMax – 最大值。必须读取 OGRField枚举中的哪个成员取决于字段类型。如果未设置最大值(并非所有后端都支持),则使用 OGR_RawField_SetUnset() 初始化该值。
-
bMaxIsInclusive – 最大值是否包含在范围内
OGRField sMin, sMax;
sMin.Double = 1.0;
sMax.Double = 10.0;
OGRRangeFieldDomain* poRangeDomain = new OGRRangeFieldDomain("MyDomain", "My domain description",
OFTReal, OFSTNone, sMin, true, sMax, false);
OGR_RawField_SetUnset()
是 OGR 库中的一个函数,用于将一个未设置过的字段(如整数类型的字段)设置为其类型的默认值(通常为0)。在 OGRRangeFieldDomain
中,如果用户未指定最大值,则会使用 OGR_RawField_SetUnset()
函数将其初始化为默认值
Clone
inline virtual OGRRangeFieldDomain *Clone() const override
克隆 返回克隆的对象,或在出现错误时返回 nullptr
GetMin
inline const OGRField &GetMin(bool &bIsInclusiveOut) const 与 C 函数 OGR_RangeFldDomain_GetMin() 相同
获取最小值
参数:
bIsInclusiveOut – 如果最小值包含在范围内,则设置为 true
GetMax
inline const OGRField &GetMax(bool & bIsInclusiveOut) const 与 C 函数 OGR_RangeFldDomain_GetMax() 相同
获取最大值
参数:
bIsInclusiveOut – 如果最大值包含在范围内,则设置为 true
bool bMaxIsInclusive;
const OGRField& sMax = rangeDomain->GetMax(bMaxIsInclusive);
if (bMaxIsInclusive) {
cout << "Maximum value is inclusive: " << sMax.Double() << endl;
} else {
cout << "Maximum value is exclusive: " << sMax.Double() << endl;
}
OGRField sMin, sMax;
sMin.SetDouble(-10.0);
sMax.SetDouble(10.0);
OGRRangeFieldDomain oDomain("myDomain", "description", OFTReal, OFSTNone, sMin, true, sMax, true);
bool bMaxIsInclusive, bMinIsInclusive;
const OGRField& minField = oDomain.GetMin(bMinIsInclusive);
const OGRField& maxField = oDomain.GetMax(bMaxIsInclusive);
double dMinValue = minField.GetDouble();
double dMaxValue = maxField.GetDouble();