GDAL学习--------------1
来源:互联网 发布:阿里云 yum 安装nginx 编辑:程序博客网 时间:2024/05/21 17:57
是时候学习一下GDAL了,找个地儿记录一下。
当然,第一步,是要打开一张影像。首先 GDALAllRegister(),这个函数没有详细跟下去,主要就是注册GDAL所用到的一些驱动,说实话,不是很懂这个意思,这个问题待以后再仔细探究。
GDAL提供打开影像数据的函数为GDALDatasetH CPL_STDCALL GDALOpen( const char * pszFilename, GDALAccess eAccess ),这里的第二个参数是打开方式,GA_ReadOnly只读打开,GA_Update读写。这个函数的返回值为GDALDatasetH ,我喜欢把它强制转换为GDALDataset *,因为要用到大量GDALDataset 的方法,而使用GDALDatasetH 只提供了一些GDALDataset 的封装,不是很方便。一般写法:GDALDataset *pDataset = (GDALDataset *)GDALOpen("C:\\tif.tif", GA_ReadOnly).
来看看这个函数:
GDALDatasetH CPL_STDCALL GDALOpen( const char * pszFilename, GDALAccess eAccess )
{
return GDALOpenInternal(pszFilename, eAccess, NULL);
}
GDALDatasetH GDALOpenInternal( const char * pszFilename, GDALAccess eAccess,
const char* const * papszAllowedDrivers)
{
GDALOpenInfo oOpenInfo( pszFilename, eAccess );
return GDALOpenInternal(oOpenInfo, papszAllowedDrivers);
}
先看 GDALOpenInfo oOpenInfo( pszFilename, eAccess );
在此函数中,用到一个 _wstat64(const char *path, struct _stat64 *buffer);以前没用过这个函数,查了一下,这个函数就是获取文件的一些信息,比如文件大小。
然后是GDALDatasetH GDALOpenInternal( const char * pszFilename, GDALAccess eAccess,
const char* const * papszAllowedDrivers)
其中需要看看的是 poDS = poDriver->pfnOpen( &oOpenInfo );跟进去之后,会看到Identify(poOpenInfo),此函数是检查文件格式的。之后就是 hTIFF = VSI_TIFFOpen( pszFilename, "r+" )了(这里针对TIF),完全是使用了LibTif那一套,要理解这里,需要对TIF格式有一定的了解,作为一个门外汉,只能百度百度,参考 http://blog.csdn.net/goldeneyezhang/article/details/6149670 ,文章的主人也讲到了GeoTif的格式说明。
- GDAL学习--------------1
- GDAL学习网站
- GDAL学习资料 2
- GDAL学习总结
- GDAL学习总结
- GDAL学习笔记——GDAL的数据模型
- VS2008编译GDAL 1.8.1(安装GDAL)
- VS2008编译GDAL 1.8.1
- GDAL综合整理--1:简介
- GDAL综合整理--1:简介
- GDAL库学习笔记-关于空间参考
- GDAL库学习笔记-坐标转化
- GDAL(Geospatial Data Abstraction Library) 学习资料
- GDAL学习记录之复制矢量多边形
- 【GDAL学习资料】(持续更新)
- GDAL学习笔记—简单类封装
- GDAL读取shp文件VS2015+GDAL2.1
- 我的python学习笔记(2) - GDAL与Python
- maven Nexus
- objc.io,一个定期发布oc相关的最佳实践和高级技术的文章的网站,含金量比较高
- MarkLogic中的Score和Relevance (一)
- 同站点下不同虚拟目录间session共享
- ORACLE 理论概念
- GDAL学习--------------1
- 让你的安卓模拟器速度堪比真机
- 科技创业
- 20个位运算技巧
- oracle 查找执行过的sql
- 临界区 互斥量 信号量 事 件的区别
- ubuntu静态IP上网方法
- 通过WiFi控制智能小车机器人制作过程详解
- linux内存共享