求GDAL的c++源码

问题描述

小弟刚开始学习这个库,急求GDAL的源码学习一下,只要能实现读取,显示,和保存就可以,谢谢大家帮忙!

解决方案

解决方案二:
GDALAllRegister();GDALDataset*poDataset;poDataset=(GDALDataset*)GDALOpen(tif.path,GA_ReadOnly);//读取intnbandcount=poDataset->GetRasterCount();intimgWidth=poDataset->GetRasterXSize();//文件X方向像素宽度intimgHeight=poDataset->GetRasterYSize();//Y方向宽度//下面是创建对象并保存GDALDataset*poDstDS;GDALDriver*poDriver;constchar*pszFormat="GTiff";poDriver=GetGDALDriverManager()->GetDriverByName(pszFormat);char*option;option="INTERLEAVE=PIXEL";poDstDS=poDriver->Create(strTifPath,nPicWidth,nPicWidth,1,GDT_UInt16,&option);poDstDS->GetRasterBand(1)->RasterIO(GF_Write,xTileOffset,yTileOffset,nWidth,nHeight,pafScanblock2,nWidth,nHeight,GDT_UInt16,0,0);GDALClose((GDALDatasetH)poDstDS);//至于显示,那不是GDAL的事,转成JPEG或其他位图格式,自己显示去吧
解决方案三:
这是显示读取函数GDALDataset*poDataset;GDALAllRegister();CStringorigCString(m_filepath);wchar_t*wCharString=origCString.GetBuffer(origCString.GetLength()+1);size_torigsize=wcslen(wCharString)+1;size_tconvertedChars=0;char*CharString;CharString=newchar(origsize);wcstombs_s(&convertedChars,CharString,origsize,wCharString,_TRUNCATE);poDataset=(GDALDataset*)GDALOpen(CharString,GA_ReadOnly);if(poDataset!=NULL){nImgSizeX=poDataset->GetRasterXSize();nImgSizeY=poDataset->GetRasterYSize();m_bandcount=poDataset->GetRasterCount();/*m_view->m_bandcount=m_bandcount;*///charstr[50];//wtoa(m_bandcount,str,10);//CStringstr;//str.Format(_T("%d"),m_bandcount);//GetDlgItem(IDC_BANDCOUNT)->SetWindowText(str);/*m_view.Invalidate();*/TRACE("%d,%d,%dn",nImgSizeX,nImgSizeY,m_bandcount);CStringProjectionRef;ProjectionRef=poDataset->GetProjectionRef();GDALRasterBand*poBand1,*poBand2,*poBand3;m_view=newCIMGView();if(m_view->m_page==0){poBand1=poDataset->GetRasterBand(m_page1.m_blue);poBand2=poDataset->GetRasterBand(m_page1.m_green);poBand3=poDataset->GetRasterBand(m_page1.m_red);}else{poBand1=poDataset->GetRasterBand(m_page2.m_gray);poBand2=poDataset->GetRasterBand(m_page2.m_gray);poBand3=poDataset->GetRasterBand(m_page2.m_gray);}CStringRasterDataType,ColorInterpretation;RasterDataType=GDALGetDataTypeName(poBand1->GetRasterDataType());ColorInterpretation=GDALGetColorInterpretationName(poBand1->GetColorInterpretation());poBand1->GetMaximum();poBand1->GetMinimum();pafScanblock1=newBYTE[nImgSizeX*nImgSizeY];pafScanblock2=newBYTE[nImgSizeX*nImgSizeY];pafScanblock3=newBYTE[nImgSizeX*nImgSizeY];BYTE*tempafScanblock1=newBYTE[nImgSizeX*nImgSizeY];BYTE*tempafScanblock2=newBYTE[nImgSizeX*nImgSizeY];BYTE*tempafScanblock3=newBYTE[nImgSizeX*nImgSizeY];m_buffer=newBYTE[nImgSizeX*nImgSizeY*4];poBand1->RasterIO(GF_Read,0,0,nImgSizeX,nImgSizeY,pafScanblock1,nImgSizeX,nImgSizeY,poBand1->GetRasterDataType(),0,0);poBand2->RasterIO(GF_Read,0,0,nImgSizeX,nImgSizeY,pafScanblock2,nImgSizeX,nImgSizeY,poBand2->GetRasterDataType(),0,0);poBand3->RasterIO(GF_Read,0,0,nImgSizeX,nImgSizeY,pafScanblock3,nImgSizeX,nImgSizeY,poBand3->GetRasterDataType(),0,0);strentch(pafScanblock1,tempafScanblock1);strentch(pafScanblock2,tempafScanblock2);//灰度拉伸函数就是很简单的拉伸strentch(pafScanblock3,tempafScanblock3);for(inti=0;i<nImgSizeX*nImgSizeY;i++){m_buffer[i*4]=tempafScanblock1[i];m_buffer[i*4+1]=tempafScanblock2[i];m_buffer[i*4+2]=tempafScanblock3[i];m_buffer[i*4+3]=255;}delete[]tempafScanblock1;delete[]tempafScanblock2;delete[]tempafScanblock3;}Invalidate();deletepoDataset;delete[]pafScanblock1;delete[]pafScanblock2;delete[]pafScanblock3;显示函数我用了GDI+:CDC*pDC=GetDC();Graphicsg(pDC->m_hDC);Bitmapbitmap(nImgSizeX,nImgSizeY,nImgSizeX*4,PixelFormat32bppRGB,m_buffer);g.DrawImage(&bitmap,0,0);出的问题是1:读取上百波段的IMG格式图像时数据集为空,几个波段的图像可以。2:图像显示不真实,图像发绿!
解决方案四:
确实不懂,上百波段的数据我没见过,也没处理过另外,GDal不是用来做显示的.是否是显示的问题我也不清楚。
解决方案五:
Band的RasterIO函数的最后一个参数设为1看看,如果设为0的话,就是以RRRGGGBBB这种形式存储,如果设为1的话,就是以RGBRGBRGB这种形式存储。
解决方案六:
这个你可以到google上去搜一把,很多地方都有的http://www.codase.com/search/smart?join=VSIFOpen&scope=join%2Fjoin&lang=*&project=&search=Search这个网站就有很多示例代码,自己找找看吧
解决方案七:
学习加标记
解决方案八:
学习加标记

时间: 2024-11-05 12:36:57

求GDAL的c++源码的相关文章

汤姆猫帧动画-求android汤姆猫实现点击各个身体部位实现各个帧动画新手求实现帧动画源码

问题描述 求android汤姆猫实现点击各个身体部位实现各个帧动画新手求实现帧动画源码 希望大神帮帮我一直都想弄明白可惜太笨了只要如何实现动画的源码,大神们快快出现吧 解决方案 这种动画,一般是靠 3D 建模搞出来的,不是用纯代码来实现的. 解决方案二: 画N张图片进行做成GIF之类的 解决方案三: 这个如果用帧动画去实现的画很耗费资源的,一般这个就是用3D模型来实现的 解决方案四: frame动画,一个动作是有n张图组成的,这个很简单,你可以找到他们的资源目录看一下就清楚了

求ireport3.75的源码包

问题描述 求ireport3.75的源码包,项目开发需要源码啊!!! 解决方案 解决方案二:没有源码..你们是不是要借鉴他们的源码,用自己的方式去实现报表?

求jdk1.42的源码包

问题描述 求jdk1.42的源码包下载地址,或者发到我邮箱flyok168@gmail.com谢谢了!! 解决方案 解决方案二:没有哦,期待楼下解决方案三:自己去找吧

java源码-求大神告诉源码,真的不太会

问题描述 求大神告诉源码,真的不太会 面向对象来写,可是不太会,求大神源码???????????????????????????????????????????????????????????????????????? 解决方案 package com.njupt.www; import java.util.Date; public class Employee { private int num; private String name; private String position; pr

急求php机票接口源码,请各位高手帮忙

问题描述 急求php机票接口源码,请各位高手帮忙 本人初学PHP,不知如何弄,请各位老师指点,现需做一机票查询页,接口测试地址:http://wstest.51book.com:55779/ltips/services/getAvailableFlightService1.0?wsdl AvailableFlightWithPriceRequest(请求参数) 参数名称 中文含义 类型 必填 备注 agencyCode 公司代码 String 是 接口开通账号 sign 验证信息 String

求ireport3.75的源码包,项目开发需要源码啊!!!

问题描述 求ireport3.75的源码包,项目开发需要源码啊!!! 解决方案 解决方案二:要这个源码做什么?这个只是用来编写jrxml文件,它只是一个图像化工具,能够帮助我们编写xml文件,我们项目中要的应该是jasperreport.解决方案三:需要对它进行一些设置,变为自己的

求asp.net webgame源码?

问题描述 谁有源码?给我一个. 解决方案 解决方案二:up解决方案三:www.51aspx.com中去找找.解决方案四:自己开发解决方案五:没有解决方案六:UP解决方案七:...解决方案八:你搜素下asp.netajax有个象棋的程序开发的有下载的就在csdn就有解决方案:谢楼主更新楼主辛苦了!解决方案:希望大家踊跃发言,我顶先解决方案:up

想学习OA系统,求C#.net+SQLserver源码学习

问题描述 想学习OA系统,想用.net(c#)+sqlserver现在哪写OA比较出名啊,是不是所有的OA都是靠WEB来实现?我还不懂这些谁有,或是提供下载的地址,主要是想学习学习 解决方案 解决方案二:在.net中是不是用asp.net来实现?解决方案三:哪位能共享几个,谢谢解决方案四:我也正在开发OA系统,大家一起学习啊QQ:252179189解决方案五:网上有吧,不过C#的原码比较少一样的,我有ASP的,

求3d彩票软件的源码

问题描述 或者提供排除三连等缩水的代码方案也可,本人正在学习中,多谢!!!本人邮箱316137524@qq.com 解决方案 解决方案二:主要是实现的算法,程序应该不是很难!解决方案三:google里面找找.没有就要花钱买了.