利用GDAL库读取GeoTIFF文件
来源:互联网 发布:釜山行影评知乎 编辑:程序博客网 时间:2024/05/18 20:31
经过一天的学习,终于对gdal库有所了解,下面是利用GDAL读取TIFF文件程序。
void CTestView::OnFileOpen()
{
// TODO: Add your command handler code here
char szFilter[] = "GeoTiff (*.tif)|*.tif|All Files (*.*)|*.*||";
CString filePath("");
CFileDialog fileOpenDlg(TRUE, "tif", NULL,OFN_HIDEREADONLY,szFilter);
if (fileOpenDlg.DoModal() == IDOK)
{
VERIFY(filePath = fileOpenDlg.GetPathName());
}
CString strFilePath(filePath);
GDALDataset *poDataset; //GDAL数据集
GDALAllRegister();
poDataset = (GDALDataset *) GDALOpen(strFilePath, GA_ReadOnly );
if( poDataset == NULL )
{
AfxMessageBox("文件打开失败!!!");
return;
}
GDALRasterBand *poBand1; //遥感的一个波段
GDALRasterBand *poBand2;
GDALRasterBand *poBand3;
int nBandCount;
nBandCount=poDataset->GetRasterCount();
poBand1=poDataset->GetRasterBand(1);
poBand2=poDataset->GetRasterBand(2);
poBand3=poDataset->GetRasterBand(3);
//获取图像的尺寸
//获取图像窗口尺寸
CRect rect;
GetClientRect(rect);
int nImgSizeX=poDataset->GetRasterXSize();
int nImgSizeY=poDataset->GetRasterYSize();
int nBufferSizeX,nBufferSizeY;
nBufferSizeY=rect.Height();
float m_fXYRation;
m_fXYRation = (float)nImgSizeY/(float)nImgSizeX;
nBufferSizeX = (int)(m_fXYRation*(float)nBufferSizeY);
BYTE *pafScanblock1;
BYTE *pafScanblock2;
BYTE *pafScanblock3;
pafScanblock1 = (BYTE *) CPLMalloc(sizeof(BYTE)*(nBufferSizeX)*(nBufferSizeY));
pafScanblock2 = (BYTE *) CPLMalloc(sizeof(BYTE)*(nBufferSizeX)*(nBufferSizeY));
pafScanblock3 = (BYTE *) CPLMalloc(sizeof(BYTE)*(nBufferSizeX)*(nBufferSizeY));
poBand1->RasterIO( GF_Read, 0, 0,nBufferSizeX,nBufferSizeY,
pafScanblock1,nBufferSizeX,nBufferSizeY, GDT_Byte,0, 0 );
poBand2->RasterIO( GF_Read, 0, 0,nBufferSizeX,nBufferSizeY,
pafScanblock2,nBufferSizeX,nBufferSizeY, GDT_Byte,0, 0 );
poBand3->RasterIO( GF_Read, 0, 0,nBufferSizeX,nBufferSizeY,
pafScanblock3,nBufferSizeX,nBufferSizeY, GDT_Byte,0, 0 );
//在View逐点显示图像
for (int i=0;i<nBufferSizeY;i++)
for (int j=0;j<nBufferSizeX;j++)
{
BYTE dn1=*pafScanblock1;
BYTE dn2=*pafScanblock2;
BYTE dn3=*pafScanblock3;
CClientDC dc(this);
dc.SetPixel(j,i,RGB(dn1,dn2,dn3));
pafScanblock1++;
pafScanblock2++;
pafScanblock3++;
}
}
- 利用GDAL库读取GeoTIFF文件
- 利用python GDAL库读写geotiff格式的遥感影像
- gdal geotiff 坐标计算
- 【GDAL/OGR】利用GDAL/OGR读取shp文件并转换为json文件(Java版)
- Gdal读取矢量文件
- ENVI显示GDAL创建GeoTiff文件的一个问题及其思考
- C# Gdal 读取SHP文件
- GDAL读取栅格文件小例
- 基于gdal用c#读取hdf4文件
- C#中Gdal读取SHP文件
- C#中Gdal读取SHP文件
- GDAL读取shp文件VS2015+GDAL2.1
- 3:(C#下使用GDAL库)打开影像文件并读取基本信息
- Gdal库读取和生成图像数据
- GDAL库读取Envisat ASAR数据
- ORG/GDAL利用csv文件生成shapefile点文件
- GDAL读取jpg文件中GPS坐标信息
- 使用GDAL/OGR读取点、线矢量文件
- Asp.Net XML操作基类(修改,删除,新增,创建)
- web 服务器和应用程序服务器的不同,区别???/
- 新学期
- const与efficiency&design
- RMAN命令详解
- 利用GDAL库读取GeoTIFF文件
- ASP.NET中实现MSN通知消息功能
- Java路径问题最终解决方案
- Delphi 下操作Windows 服务的代码
- JS 变量
- 秀逗休闲游戏平台
- Apache java项目 介绍
- ReprotX2.0.0.0最近更改
- 怎么做需求分析