GDAL学习笔记——OGRLayer C++ API


OGRLayer的对象模型图:
这里写图片描述

Public Member Functions

  • virtual OGRGeometry * GetSpatialFilter ():该方法返回当前层空间滤波器
  • virtual void SetSpatialFilter (OGRGeometry *):设置新的空间滤波器
  • virtual void SetSpatialFilter (int iGeomField, OGRGeometry *):设置新的空间滤波器,
  • virtual void SetSpatialFilterRect (double dfMinX, double dfMinY, double dfMaxX, double dfMaxY):设置新的矩形范围的空间滤波。在调用GetNextFeature()函数读取要素之后,使用该方法设置一个矩形进行空间滤波。只有当要素与给定的矩形相交才回返回。该方法一般用来创建5个顶点的封闭多边形,并传给 OGRLayer::SetSpatialFilter()函数。使用OGRLayer::SetSpatialFilter(NULL)方法是唯一去除空间滤波器。
  • virtual OGRErr SetAttributeFilter (const char *):设置一个新的属性查询。
  • virtual void ResetReading ():重置要素的读取,从第一个要素读取开始。
  • virtual OGRFeature * GetNextFeature ():从该图层获取下一个要素。返回的要素需要使用OGRFeature::DestroyFeature()函数释放。
  • virtual OGRErr SetNextByIndex (GIntBig nIndex):在当前的结果集中,将游标移到指定索引的要素。
  • virtual OGRFeature * GetFeature (GIntBig nFID):通过标识FID获取要素。
  • OGRErr SetFeature (OGRFeature *poFeature):重写一个存在的要素。
  • virtual const char * GetName ():获取图层名
  • virtual OGRwkbGeometryType GetGeomType ():返回图层的类型
  • virtual OGRFeatureDefn * GetLayerDefn ():获取该图层的框架模式
  • virtual int FindFieldIndex (const char *pszFieldName, int bExactMatch):获取图层中字段的索引号,返回-1表示不存在。
  • virtual OGRSpatialReference * GetSpatialRef ():获取该图层的空间参考系。返回NULL表示没有参考系统。
  • virtual GIntBig GetFeatureCount (int bForce=TRUE):获取该图层中要素个数。对于动态数据库来说,这个计数可能不准确。如果bForce为FALSE,将会进行高代价的建立要素计数,返回-1表明不知道这个计数;如果bForce为TRUE,则将扫描整个图层计数对象的要个。返回的数量会见空间滤波器考虑在内。bForce标识表明是否进行高代价计数。
  • virtual OGRErr GetExtent (OGREnvelope *psExtent, int bForce=TRUE):获取图层的范围。返回图层中数据的最小外包矩形(MBR)。如果bForce为FALSE:会高代价的建立这个范围,返回OGRERR_FAILURE表明不知道该数据的范围;bForce为TRUE,则会扫描整个图层计算图层中所有要素的MBR值。如果图层中没有几何图形,则返回OGRERR_FAILURE,表明可以获取的范围没有意义。
  • virtual OGRErr GetExtent (int iGeomField, OGREnvelope *psExtent, int bForce=TRUE):获取指定几何图形的范围。
  • virtual int TestCapability (const char *):测试该图层是否有命名能力。
  • virtual OGRErr CreateField (OGRFieldDefn *poField, int bApproxOK=TRUE):在图层中创建一个新的字段。
  • virtual OGRErr DeleteField (int iField):删除图层中一个存在的字段。
  • virtual OGRErr ReorderFields (int *panMap):重新排序图层中所有的字段。例如,假设字段开始的排序是“0”,“1”,“2”,“3”,“4”.ReorderFields([0,1,2,3,4 ])之后得到的结果是:“0”,“2”,“3”,“1”,“4”。
  • virtual OGRErr AlterFieldDefn (int iField, OGRFieldDefn *poNewFieldDefn, int nFlagsIn):改变图层中已知字段的定义。
  • virtual OGRErr CreateGeomField (OGRGeomFieldDefn *poField, int bApproxOK=TRUE):在图层中创建一个新的几何字段。
  • virtual const char * GetFIDColumn ():该方法返回基础数据库中表示FID列的名称,返回“”表示不支持。
  • virtual const char * GetGeometryColumn ():该方法返回基础数据库中表示几何列的名称,返回“”表示不支持。
  • virtual OGRErr SetIgnoredFields (const char **papszFields):设置指定字段,在从图层中检索要素是可以忽略的。
  • OGRErr Intersection (OGRLayer *pLayerMethod, OGRLayer *pLayerResult, char **papszOptions=NULL, GDALProgressFunc pfnProgress=NULL, void *pProgressArg=NULL):对两个图层进行交集处理。
  • OGRErr Union (OGRLayer *pLayerMethod, OGRLayer *pLayerResult, char **papszOptions=NULL, GDALProgressFunc pfnProgress=NULL, void *pProgressArg=NULL):对两个图层做并集处理。
  • OGRErr SymDifference (OGRLayer *pLayerMethod, OGRLayer *pLayerResult, char **papszOptions, GDALProgressFunc pfnProgress, void *pProgressArg):对两个图层做对称集处理
    这里写图片描述

  • OGRErr Identity (OGRLayer *pLayerMethod, OGRLayer *pLayerResult, char **papszOptions=NULL, GDALProgressFunc pfnProgress=NULL, void *pProgressArg=NULL):将图层上的属性信息投射到目标图层上,同时切割图斑。计算输入图层和identity图层的交集,得到的结果的输入图层将会得到identity图层的属性。
    这里写图片描述

  • OGRErr Update (OGRLayer *pLayerMethod, OGRLayer *pLayerResult, char **papszOptions=NULL, GDALProgressFunc pfnProgress=NULL, void *pProgressArg=NULL):将更新层更新到该图层和要素。

  • OGRErr Clip (OGRLayer *pLayerMethod, OGRLayer *pLayerResult, char **papszOptions=NULL, GDALProgressFunc pfnProgress=NULL, void *pProgressArg=NULL):inputLayer减去pLayerMethod剩下的部分。
    这里写图片描述

  • OGRErr Erase (OGRLayer *pLayerMethod, OGRLayer *pLayerResult, char **papszOptions=NULL, GDALProgressFunc pfnProgress=NULL, void *pProgressArg=NULL):如下示意图所示
    这里写图片描述

Protected Member Functions

  • virtual OGRErr ISetFeature (OGRFeature *poFeature):重写已知的要素
  • virtual OGRErr ICreateFeature (OGRFeature *poFeature):创建和写入一个新要素到图层中。

转载自:https://blog.csdn.net/u010670734/article/details/53291332

You may also like...