GDAL OGR C++ API 学习之路 (3)ORGfeatureDefn篇

OGRFeature处理几何字段

OGRFeatureDefn 中也可以处理和获取几何字段,是因为它的设计初衷是为了支持早期版本的 OGR 格式,这些版本不支持将几何字段作为单独的实体进行处理。因此,OGRFeatureDefn 中的方法可以同时处理属性字段和几何字段,以满足早期版本 OGR 格式的要求。但是,从 OGR 1.9.0 版本开始,引入了新的 OGRGeomFeatureDefn 类,可以更方便地处理几何字段,因此建议在新代码中使用 OGRGeomFeatureDefn

所有下面我只把对于的函数和参数列出,具体的使用示例和属性字段一样,就不展示了

GetGeomFieldCount

virtual int GetGeomFieldCount() const        此方法与 C 函数 OGR_FD_GetGeomFieldCount() 相同

获取此要素上的几何字段数     

字段=属性字段+几何字段

返回:  几何字段的计数

GetGeomFieldDefn

virtual OGRGeomFieldDefn *GetGeomFieldDefn(int i)    virtual const OGRGeomFieldDefn *GetGeomFieldDefn(int i) const      此方法与 C 函数 OGR_FD_GetGeomFieldDefn() 相同

获取几何字段定义

参数:

iGeomField – 要获取的几何字段,介于 0 和 GetGeomFieldCount() 之间 - 1。

返回: 指向内部字段定义对象的指针,如果索引无效,则为 NULL。应用程序不应修改或释放此对象

GetGeomFieldIndex

virtual int GetGeomFieldIndex(const char*) const         此方法与 C 函数 OGR_FD_GetGeomFieldIndex() 相同

按名称查找几何字段

返回与传递的字段名称匹配的第一个几何字段的几何字段索引(不区分大小写)

参数:

pszGeomFieldName – 要搜索的几何字段名称。

返回: 几何字段索引,如果未找到匹配项,则为 -1

GetGeomFields

inline GeomFields GetGeomFields()

返回可用于迭代几何字段的对象

for( const auto* poGeomFieldDefn: poFeatureDefn->GetGeomFields() )
{
    // do something
}

AddGeomFieldDefn

virtual void AddGeomFieldDefnconst OGRGeomFieldDefn*)        此方法与 C 函数 OGR_FD_AddGeomFieldDefn() 相同

添加新的几何字段定义

要将新的几何字段定义添加到图层定义,请不要直接使用此函数,而应改用 OGRLayer::CreateGeomField()仅当不存在基于此 OGRFeatureDefn 的 OGRFeature 对象时,才应调用此方法

参数: poNewDefn – 新几何字段的定义

DeleteGeomFieldDefn

virtual OGRErr DeleteGeomFieldDefn(int iGeomField)        此方法与 C 函数 OGR_FD_DeleteGeomFieldDefn() 相同

要从图层定义中删除现有字段定义,请不要直接使用此函数,而应改用 OGRLayer::D eleteGeomField()。

仅当不存在基于此 OGRFeatureDefn 的 OGRFeature 对象时,才应调用此方法

删除现有几何字段定义

参数:

iGeomField – 几何字段定义的索引。

返回: OGRERR_NONE成功的情况下

SetGeomType

virtual void SetGeomTypeOGRwkbGeometryType)        此方法与 C 函数 OGR_FD_SetGeomType() 相同

为此图层指定基本几何类型

使用此类型的所有几何对象都必须是定义的类型或派生类型。创建时的默认值为 wkbUnknown,它允许任何几何类型。在根据此定义创建任何 OGRFeature 之后,通常不应更改几何类型

参数:

eNewType – 要分配的新类型

GetGeomType

virtual OGRwkbGeometryType GetGeomType() const        获取几何基类型

获取几何基类型

请注意,某些驱动程序无法确定图层的特定几何类型,在这种情况下,将返回 wkbUnknown。值 wkbNone 表示根本没有可用于图层的几何图形

返回:  与此定义相关的所有几何图形的基类型

OGRFeatureDefn *poFeatureDefn = new OGRFeatureDefn("my_feature");
// 设置几何类型为点
poFeatureDefn->SetGeomType(wkbPoint);

// 输出几何类型
OGRwkbGeometryType geomType = poFeatureDefn->GetGeomType();
if (geomType == wkbPoint) {
    printf("Geometry type is Point.\n");
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

场主不吃鍋巴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值