版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
GDAL編譯與功能介紹
王健
2011-11-16GDAL(GeospatialDataAbstractionLibrary)是一個開源柵格空間數(shù)據(jù)轉(zhuǎn)換庫。它利用抽象數(shù)據(jù)模型來表達(dá)所支持的各種文件格式。并有一系列命令行工具來進(jìn)行數(shù)據(jù)轉(zhuǎn)換和處理。使用GDAL開發(fā)的軟件:ESRIArcGIS9.2+GoogleEarthERDASERViewerOpenEV
MapServerFWTools
IDRISI…….GDAL的編譯GDAL為在C/C++語言的基礎(chǔ)上編寫的類庫,相應(yīng)的,編譯的版本為C/C++版本。使用SWIG能使GDAL編譯為以下高級語言版本:C#JAVAPythonRubyVb6GDAL的基本應(yīng)用在使用GDAL的函數(shù)之前要先進(jìn)行驅(qū)動注冊GDALAllRegister(
)
GDAL常用函數(shù):打開一個影像的數(shù)據(jù)集GDALOpen(const
char*
pszFilename,GDALAccess
eAccess)eAccess=GA_Update||GA_ReadOnly
GDALDataset*poDataset=(GDALDataset*)GDALOpen(Filename,GA_ReadOnly);doubleadfGeoTransform[6];poDataset->GetGeoTransform(adfGeoTransform);adfGeoTransform[0]/*左上角x值*/adfGeoTransform[1]/*X軸分辨率*/adfGeoTransform[2]/*偏轉(zhuǎn),指北則為0*/adfGeoTransform[3]/*左上角y值*/adfGeoTransform[4]/*偏轉(zhuǎn),指北則為0*/adfGeoTransform[5]/*Y軸分辨率*/
獲取柵格影像的數(shù)據(jù)類型GDALDataTypetype=GDALGetRasterDataType(GDALGetRasterBand(hdataset,1));獲取影像的行列值。Intx=poDataset->GetRasterXSize();Inty=poDataset->GetRasterYSize();獲取影像的投影參數(shù)。Constchar*pszproj=poDataset->GetProjectionRef();創(chuàng)建新的文件GDALDriver*hDriver=GetGDALDriverManager()->GetDriverByName("GTIFF");GDALDataset*poDataset2=hDriver->Create(savename,x,y,1,type,NULL);GDALDataset*GDALDriver::Create
(constchar*
pszFilename,int
nXSize,int
nYSize,int
nBands,GDALDataType
eType,char**
papszOptions
)pszFilename為儲存影像路徑nXSize為影像的行值nYSize為影像的列值nBands為波段數(shù)eType為影像數(shù)據(jù)類型papszOptions為一些特殊的控制參數(shù),通常為NULL讀取影像數(shù)據(jù)int*Dstdn=newint[x*y];memset(Dstdn,0,sizeof(int)*x*y);poDataset->RasterIO(GF_Read,0,0,x,y,Dstdn,x,y,type,1,0,0,0,0);GDALDataset::RasterIO
(GDALRWFlag
eRWFlag, //打開影像方式,GF_Read||GF_Write
int
nXOff, //X軸偏移值int
nYOff, //Y軸偏移值int
nXSize //X軸讀取大小
int
nYSize, //Y軸讀取大小void*
pData, //影像讀取至緩存int
nBufXSize, //儲存影像X軸縮放大小int
nBufYSize, //儲存影像Y軸縮放大小GDALDataType
eBufType,//影像數(shù)據(jù)格式int
nBandCount, //波段數(shù)int*
panBandMap, //0int
nPixelSpace, //0int
nLineSpace, //0int
nBandSpace
//0
)#include<iostream>#include<stdlib.h>#include"gdal/gdal_priv.h"intmain(){GDALDataset*poDataset;doubleadfGeoTransform[6];float*win;char*slopeBuf; floatdx,dy,key,slopePct;
inti,j,n,containsNull;floatscale=0.5;//水平與垂直方向的變化因子 constchar*pszFilename="D:\\honda.jpg";constchar*pszSlopeFilename="D:\\slope-honda-2.bmp";GDALAllRegister();
poDataset=(GDALDataset*)GDALOpen(pszFilename,GA_ReadOnly);//打開文件
if(poDataset==NULL){
std::cout<<"Couldn'topendataset"<<pszFilename<<"/n";}
GDALRasterBand*poBand;
poBand=poDataset->GetRasterBand(1);
poDataset->GetGeoTransform(adfGeoTransform);constdoublecellsizeY=adfGeoTransform[5];//Y軸分辨率
constdoublecellsizeX=adfGeoTransform[1];//X軸分辨率
constfloatnullValue=(float)poBand->GetNoDataValue();//獲取缺省值
constint
nXSize=poBand->GetXSize();//列數(shù)
constint
nYSize=poBand->GetYSize();//行數(shù)
slopeBuf=(char*)CPLMalloc(sizeof(char)*nXSize);win=(float*)CPLMalloc(sizeof(float)*9);
GDALDriver*poDriver;
poDriver=GetGDALDriverManager()->GetDriverByName("BMP");//文件輸出類型為TIF
GDALDataset*poSlopeDS;GDALRasterBand*poSlopeBand;poSlopeDS=poDriver->Create(pszSlopeFilename,nXSize,nYSize,1,GDT_Byte,NULL);poSlopeBand=poSlopeDS->GetRasterBand(1);for(i=0;i<nYSize;i++){for(j=0;j<nXSize;j++){
containsNull=0;
if(i==0||j==0||i==nYSize-1||j==nXSize-1)//邊界操作{
slopeBuf[j]=nullValue;continue;}
poBand->RasterIO(GF_Read,j-1,i-1,3,3,win,3,3,GDT_Float32,0,0);//讀取3X3的矩陣
for(n=0;n<=8;n++){
if(win[n]==nullValue)//檢查矩陣中是否有NULL值{
containsNull=1;break;}}if(containsNull==1){
slopeBuf[j]=nullValue;continue;}else{
dx=((win[0]+win[3]+win[3]+win[6])- // SOBEL算子為3X3的矩陣,
(win[2]+win[5]+win[5]+win[8])); // 如下所示為下標(biāo)
// 0 1 2
dy=((win[6]+win[7]+win[7]+win[8])- // 3 4 5(win[0]+win[1]+win[1]+win[2])); // 6 7 8 key=((dx/(8*cellsizeX*scale))*(dx/(8*cellsizeX*scale)))+ ((dy/(8*cellsizeY*scale))*(dy/(8*cellsizeY*scale)));
slopePct=100*sqrt(key);
if(slopePct>830)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- (立項(xiàng)審批)插件加工項(xiàng)目可行性研究報告
- 新建大盤紙項(xiàng)目立項(xiàng)申請報告
- 新建工業(yè)硅酸鈉項(xiàng)目立項(xiàng)申請報告
- (施工建設(shè))建筑保溫板項(xiàng)目可行性研究報告
- 壓力開關(guān)投資規(guī)劃項(xiàng)目建議書
- 2024-2030年新版中國稀土磁業(yè)材料項(xiàng)目可行性研究報告
- 2024-2030年新版中國沼氣集氣設(shè)備項(xiàng)目可行性研究報告
- 2024年水電安裝工程綠色施工技術(shù)研發(fā)與應(yīng)用合同3篇
- 2024-2030年撰寫:中國PVC高速無屑切割機(jī)項(xiàng)目風(fēng)險評估報告
- 2024-2030年壽棒搬遷改造項(xiàng)目可行性研究報告
- 人民日報出版社有限責(zé)任公司招聘筆試題庫2024
- 2024年煤礦事故匯編
- Unit 2 Different families(教學(xué)設(shè)計)-2024-2025學(xué)年人教PEP版英語三年級上冊
- 西師大版五年級上冊小數(shù)混合運(yùn)算題100道及答案
- 2022年7月國家開放大學(xué)本科《中國法律史》期末紙質(zhì)考試試題及答案
- 行政文秘筆試題
- 2024-2025學(xué)年七年級數(shù)學(xué)上冊第一學(xué)期 期末模擬測試卷(湘教版)
- 2024年部門年終工作總結(jié)參考(四篇)
- 主題四 第1課 節(jié)氣與我們的生活(教學(xué)設(shè)計)教科版五年級下冊綜合實(shí)踐活動
- 2024智能變電站新一代集控站設(shè)備監(jiān)控系統(tǒng)技術(shù)規(guī)范部分
- 二年級數(shù)學(xué)上冊口算天天練
評論
0/150
提交評論