GDAL读入多波段遥感影像方法以及输出的影像变成了多块的原因
来源:互联网 发布:淘宝产品拍摄技巧 编辑:程序博客网 时间:2024/05/17 14:19
这几天尝试用GDAL读入多波段遥感影像,代码如下:
GDALAllRegister(); //注册文件格式
CPLSetConfigOption("GDAL_FILENAME_IS_UTF8", "NO");
GDALDriver *pDriver;
const char* pInFile = "H:\\Group_code\\testdata\\wh_tiff_sub.tif";
const char* pOutFile = "H:\\Group_code\\result\\wh_test\\wh_temp_20.tif";
CPLSetConfigOption("GDAL_FILENAME_IS_UTF8", "NO");
GDALDriver *pDriver;
const char* pInFile = "H:\\Group_code\\testdata\\wh_tiff_sub.tif";
const char* pOutFile = "H:\\Group_code\\result\\wh_test\\wh_temp_20.tif";
GDALDataset *pDataSet;
GDALDataset *pOutDataSet;
pDataSet = (GDALDataset*)GDALOpen(pInFile, GA_ReadOnly);
if (pDataSet == NULL)
{
printf("文件无法打开!\n");
return 0;
}
GDALDataset *pOutDataSet;
pDataSet = (GDALDataset*)GDALOpen(pInFile, GA_ReadOnly);
if (pDataSet == NULL)
{
printf("文件无法打开!\n");
return 0;
}
GDALDataType Datatype;
int nHeight, nWidth, nBands;
Datatype = pDataSet->GetRasterBand(1)->GetRasterDataType(); //GetRasterBand()是从1开始计数
nWidth = pDataSet->GetRasterXSize();
nHeight = pDataSet->GetRasterYSize();
nBands = pDataSet->GetRasterCount(); //注意此处不是getrasterband;
int nHeight, nWidth, nBands;
Datatype = pDataSet->GetRasterBand(1)->GetRasterDataType(); //GetRasterBand()是从1开始计数
nWidth = pDataSet->GetRasterXSize();
nHeight = pDataSet->GetRasterYSize();
nBands = pDataSet->GetRasterCount(); //注意此处不是getrasterband;
//读取影像:RasterIO
INT16* pImageData = new INT16[nBands*nHeight*nWidth];
pDataSet->RasterIO(GF_Read, 0, 0, nWidth, nHeight, pImageData, nWidth, nHeight,Datatype, nBands, NULL, 0, 0, 0);
INT16* pImageData = new INT16[nBands*nHeight*nWidth];
pDataSet->RasterIO(GF_Read, 0, 0, nWidth, nHeight, pImageData, nWidth, nHeight,Datatype, nBands, NULL, 0, 0, 0);
主要使用了GDALDataset::RasterIO函数,这个函数详细的参数可查阅该博客:http://blog.csdn.net/liminlu0314/article/details/7072224
在这次试验中遇到了一个特别奇怪的问题,就是一幅遥感影像输入后,他被自动缩放了还变成了四份存储。
检查了很久,发现是pDataSet->RasterIO函数在设置时,我的输入影像格式Datatype为int16,而我定义的用来存储的PImageData却为int型,即32位,所以GDAL在读入时,由于这两个数据的数据格式不同,导致了这样的结果,所以我最后将PImageData定义为Uint16型,结果就没有出错了,所以大家一定要注意,在使用pDataSet::RasterIO函数时,一定要保证输入的数据类型,和用来存储数据的指针数据类型一致!!!
0 0
- GDAL读入多波段遥感影像方法以及输出的影像变成了多块的原因
- 基于GDAL的栅格数据/遥感影像IO (非分块)
- 遥感影像的“全色”和“多光谱”
- 遥感影像的“全色”和“多光谱”
- 遥感影像的“全色”与“多光谱”
- 基于GDAL的遥感影像显示(C#版)
- 基于GDAL的遥感影像显示(C#版) .
- 基于GDAL的遥感影像显示(C#版)
- 基于OpenCV和GDAL的遥感影像处理程序
- 利用python GDAL库读写geotiff格式的遥感影像
- opencv+GDAL 遥感影像滤波
- 遥感影像的黑边
- GDAL入门-使用GDAL进行遥感影像NDVI的计算(C++版本)
- 用Matlab读写单波段遥感影像
- 遥感影像 全色 多光谱
- GDAL输出影像
- GDAL输出影像
- 遥感影像融合方法
- freemarker详解
- 数据结构--位图
- 字体图标
- unity dll实现热更新
- JavaWeb springmvc 拦截器
- GDAL读入多波段遥感影像方法以及输出的影像变成了多块的原因
- 基础知识点
- 基础总结知识点-第一章:web技术的基础知识
- 回滚revert和reset区别
- 身份证号码校验 java校验
- Sql Server 的链接,查询,添加
- 申请github账户,托管代码到github全套教程来了(依据github2017最新版界面)
- [leetcode]16. 3Sum Closest
- 推荐几款实用的Android Studio 插件