gdal读取栅格数据的流程分析
今天,利用gdal写了一个demo用来读取栅格数据、并显示其波段、色调等信息。
在此分享一下,我对gdal读取栅格数据的流程的浅析。
1、使用gdal的第一步肯定是先要注册。使用静态函数gdal.AllRegister();
2、gdal将所有的栅格数据都是读取到一个它自己定义的dataset中,所以OSGeo.GDAL.Dataset ds=new OSGeo.GDAL.Dataset();
3、使用open函数 ds = gdal.Open(inputFileName, gdalconst.GA_ReadOnly);
4、至此,全路径为inputFileName的栅格文件已经读到ds中,下面介绍OSGeo.GDAL.Dataset类
总体来说,OSGeo.GDAL.Dataset实际上就是一系列相关联的波段的组合。
其共有成员如下:
virtual ~GDALDataset ()
int GetRasterXSize (void)
int GetRasterYSize (void)
int GetRasterCount (void)
GDALRasterBand * GetRasterBand (int)
virtual void FlushCache (void)
virtual const char * GetProjectionRef (void)
virtual CPLErr SetProjection (const char *)
virtual CPLErr GetGeoTransform (double *)
virtual CPLErr SetGeoTransform (double *)
virtual CPLErr AddBand (GDALDataType eType, char **papszOptions=NULL)
virtual void * GetInternalHandle (const char *)
virtual GDALDriver * GetDriver (void)
virtual int GetGCPCount ()
virtual const char * GetGCPProjection ()
virtual const GDAL_GCP * GetGCPs ()
virtual CPLErr SetGCPs (int nGCPCount, const GDAL_GCP *pasGCPList, const char *pszGCPProjection)
virtual CPLErr AdviseRead (int nXOff, int nYOff, int nXSize, int nYSize, int nBufXSize, int nBufYSize, GDALDataType eDT, int nBandCount, int *panBandList, char **papszOptions)
CPLErr RasterIO (GDALRWFlag, int, int, int, int, void *, int, int, GDALDataType, int, int *, int, int, int)
int Reference ()
int Dereference ()
GDALAccess GetAccess ()
int GetShared ()
void MarkAsShared ()
CPLErr BuildOverviews (const char *, int, int *, int, int *, GDALProgressFunc, void *)
上述代码是C语言的,有比较烦躁的指针。不过只要大家仔细思考,还