GDALDataset的对象模型图(OMD):
头文件:
#include <gdal_priv.h>
下面是GDALDataset类包含的主要成员:
Public Member Functions:
- int GetRasterXSize (void):获取栅格数据的宽
- int GetRasterYSize (void):获取栅格数据的高
- int GetRasterCount (void):获取栅格数据的波段数
- GDALRasterBand * GetRasterBand (int):通过波段索引获取指定的波段
- virtual void FlushCache (void):刷新所有的缓存数据写入到磁盘中。使用这种方法并不能防止使用调用gdalclose()正确关闭数据集并保证重要数据的flushcache()没有写在文件。
- virtual const char * GetProjectionRef (void):获取数据集的投影定义,结果是以OpenGIS WKT的格式返回。会使用到 OGRSpatialReference类。
- virtual CPLErr SetProjection (const char *pszProjection):给数据集设置投影参数。参数应该是 OGC WKT格式或者PROJ.4格式。由于不正确的使用投影参数格式,可能会导致一些错误。许多格式不支持写投影信息。
- virtual CPLErr GetGeoTransform (double *padfTransform):获取仿射变换系数,像素/行(P,L)与投影坐标(Xp,Yp)之间转换的系数。
Xp = padfTransform[0] + P*padfTransform[1] + L*padfTransform[2];
Yp = padfTransform[3] + P*padfTransform[4] + L*padfTransform[5];
在向北的图像中,padfTransform[1]是像素宽;padfTransform[5]是像素高;左上角像素的左上角的坐标是(padfTransform[0] ,padfTransform[3] ); - virtual CPLErr SetGeoTransform (double *padfTransform):设置仿射变换系数。
- virtual CPLErr AddBand (GDALDataType eType, char **papszOptions=NULL):添加波段到数据集中。eType:波段中像素的类型。papszOptions:NAME=VALUE的字符串列表(可选)
- virtual void * GetInternalHandle (const char *pszHandleName):获取指定类型的内部合法的句柄。
- virtual GDALDriver * GetDriver (void):获取数据集有关的驱动
- virtual const char * GetDriverName ():获取驱动名称
- virtual int GetGCPCount ():得到GCP点的数量
- virtual const char * GetGCPProjection ():得到GCP的投影
- virtual const GDAL_GCP * GetGCPs ():获取GCPS,返回指向GCP结构体列表的指针
- virtual CPLErr CreateMaskBand (int nFlagsIn):给数据集添加波段掩膜。提示:如果之前已经使用GetMaskBand()函数,再使用CreateMaskBand函数就是不正确的了,可以再一次调用GetMaskBand()函数。
- virtual GDALAsyncReader * BeginAsyncReader (int nXOff, int nYOff, int nXSize, int nYSize, void *pBuf, int nBufXSize, int nBufYSize, GDALDataType eBufType, int nBandCount, int *panBandMap, int nPixelSpace, int nLineSpace, int nBandSpace, char **papszOptions):设置异步数据请求。此方法为指定缓冲区内的指定窗口中的数据集建立了一个异步栅格读取请求。此函数的参数和GDALDataset::RasterIO()函数的参数类似。
- virtual void EndAsyncReader (GDALAsyncReader *):结束异步请求。
- CPLErr RasterIO (GDALRWFlag, int, int, int, int, void , int, int, GDALDataType, int, int , GSpacing, GSpacing, GSpacing, GDALRasterIOExtraArg *psExtraArg):此函数非常重要,打算另做篇笔记,同时可以参考大神的博客。
- int Reference ():添加到一个引用计数到数据集中。
- int Dereference ():从数据集中减少一个引用计数。
- GDALAccess GetAccess () const:返回访问模式。
- int GetShared () const:返回共享标志,TRUE表示GDALDataset是共享的,FALSE表示不是共享的。
- void MarkAsShared ():标记这个数据集可以共享。
- CPLErr BuildOverviews (const char , int, int , int, int , GDALProgressFunc, void ):建立栅格概述。
- void virtual char ** GetMetadata (const char *pszDomain=”“):获取元数据
- virtual int GetLayerCount ():获得数据集中图层数。
- virtual OGRLayer * GetLayer (int iLayer):根据图层索引获取图层。
- virtual OGRLayer * GetLayerByName (const char *):根据图层名称获取图层。
- virtual OGRErr DeleteLayer (int iLayer):从数据源中删除指定索引的图层。
- virtual void ResetReading ():重置读入数据,从第一个要素开始。通常会用GetNextFeature函数。
- virtual OGRFeature * GetNextFeature (OGRLayer **ppoBelongingLayer, double *pdfProgressPct, GDALProgressFunc pfnProgress, void *pProgressData):从数据集中过去下一个可能的要素。一般会使用到ResetReading 函数。
- virtual OGRLayer * CreateLayer (const char *pszName, OGRSpatialReference *poSpatialRef=NULL, OGRwkbGeometryType eGType=wkbUnknown, char **papszOptions=NULL):根据指定的名字、坐标系统和几何类型创建一个新的图层
- virtual OGRLayer * CopyLayer (OGRLayer *poSrcLayer, const char *pszNewName, char **papszOptions=NULL):复制一个存在的图层
- virtual OGRStyleTable * GetStyleTable ():获得数据集的类型表
- virtual OGRLayer * ExecuteSQL (const char *pszStatement, OGRGeometry *poSpatialFilter, const char *pszDialect):执行SQL语句进行查询。
- virtual void ReleaseResultSet (OGRLayer *poResultsSet):释放由ExecuteSQL函数得到的结果。
Static Public Member Functions:
- static GDALDataset ** GetOpenDatasets (int *pnDatasetCount):获取所有打开的数据集的句柄