資源簡介
《GDAL源碼剖析與開發指南》書籍代碼及數據
代碼片段和文件信息
/***************************************************************************
*
*?Time:?2013-06-27
*?Project:?遙感算法演示?
*?Purpose:?遙感算法演示
*?Author:??李民錄
*?Copyright?(c)?2013?liminlu0314@163.com
*?Describe:?遙感算法演示,在下面的所有的算法中,
*???????????都沒有對輸入輸出的路徑以及文件是否存在進行檢查,
*???????????默認認為所有的輸入和輸出參數都是合理的
*
****************************************************************************/
#include?“GDALAlgorithm.h“
int?ImageResample1(const?char*?pszSrcFile?const?char*?pszDstFile?double?dResX?double?dResY?
???const?char*?pszFormat?CProcessbase*?pProcess)
{
//?前面需要對輸入輸出的文件路徑進行判斷,這里不進行判斷直接處理
if(pProcess?!=?NULL)
{
pProcess->ReSetProcess();
pProcess->SetMessage(“開始重采樣...“);
}
GDALAllRegister();
GDALDataset?*pSrcDS?=?(GDALDataset*)GDALOpen(pszSrcFile?GA_ReadOnly);
GDALDataType?eDT?=?pSrcDS->GetRasterBand(1)->GetRasterDataType();
int?iBandCount?=?pSrcDS->GetRasterCount();
int?iSrcWidth??=?pSrcDS->GetRasterXSize();
int?iSrcHeight?=?pSrcDS->GetRasterYSize();
//?根據采樣比例計算重采樣后的圖像寬高
int?iDstWidth??=?static_cast(?iSrcWidth??*?dResX?+?0.5);
int?iDstHeight?=?static_cast(?iSrcHeight?*?dResY?+?0.5);
double?adfGeoTransform[6]?=?{0};
pSrcDS->GetGeoTransform(adfGeoTransform);
//?計算采樣后的圖像的分辨率
adfGeoTransform[1]?=?adfGeoTransform[1]?/?dResX;
adfGeoTransform[5]?=?adfGeoTransform[5]?/?dResY;
//?創建輸出文件并設置空間參考和坐標信息
GDALDriver?*poDriver?=?(GDALDriver?*)?GDALGetDriverByName(pszFormat);
GDALDataset?*pDstDS?=?poDriver->Create(pszDstFile?iDstWidth?iDstHeight?iBandCount?eDT?NULL);
pDstDS->SetGeoTransform(adfGeoTransform);
pDstDS->SetProjection(pSrcDS->GetProjectionRef());
int?*pBandMap?=?new?int[iBandCount];
for?(int?i=0;?i pBandMap[i]?=?i+1;
//?下面這里需要根據數據類型來判斷,申請不同類型的緩存來進行處理,這里僅僅以8bit圖像進行演示
if?(eDT?==?GDT_Byte) //?如果是8bit圖像
{
//?申請所有數據所需要的緩存,如果圖像太大應該用分塊處理
DT_8U?*pDataBuff?=?new?DT_8U[iDstWidth*iDstHeight*iBandCount];
pSrcDS->RasterIO(GF_Read?0?0?iSrcWidth?iSrcHeight?pDataBuff?iDstWidth?iDstHeight?eDT?iBandCount?pBandMap?0?0?0);
pDstDS->RasterIO(GF_Write?0?0?iDstWidth?iDstHeight?pDataBuff?iDstWidth?iDstHeight?eDT?iBandCount?pBandMap?0?0?0);
RELEASE(pDataBuff);
}
else
{
//?其他類型的圖像,與8bit類似,就是申請的緩存類型不同而已
}
RELEASE(pBandMap);
GDALClose((GDALDatasetH)pSrcDS);
GDALClose((GDALDatasetH)pDstDS);
if(pProcess?!=?NULL)
pProcess->SetMessage(“重采樣完成!“);
return?RE_SUCCESS;
}
int?ImageResample2(const?char*?pszSrcFile?const?char*?pszDstFile?double?dResX?double?dResY?
???GDALResampleAlg?eResampleMethod??const?char*?pszFormat?CProcessbase*?pProcess)
{
//?前面需要對輸入輸出的文件路徑進行判斷,這里不進行判斷直接處理
if(pProcess?!=?NULL)
{
pProcess->ReSetProcess();
pProcess->SetMessage(“開始重采樣...“);
}
GDALAllRegister();
GDALDataset?*pSrcDS?=?(GDALDataset*)GDALOpen(pszSrcFile?GA_ReadOnly);
GDALDataType?eDT?=?pSrcDS->GetRasterBand(1)->GetRasterDataType();
int?iBandCount?=?pSrcDS->GetRaste
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????4472??2013-06-28?10:19??GDAL書籍代碼\第七章代碼\GDALAlg\GDALAlg.vcproj
?????文件???????6955??2013-06-29?19:36??GDAL書籍代碼\第七章代碼\GDALAlg\GDALAlgCore.h
?????文件??????66769??2013-08-15?17:43??GDAL書籍代碼\第七章代碼\GDALAlg\GDALAlgorithm.cpp
?????文件??????11241??2013-08-15?15:57??GDAL書籍代碼\第七章代碼\GDALAlg\GDALAlgorithm.h
?????文件???????1589??2014-03-14?19:17??GDAL書籍代碼\第七章代碼\GDALAlg\GDALAlgVersion.rc
?????文件???????1358??2013-06-28?11:49??GDAL書籍代碼\第七章代碼\GDALAlg.sln
????..A..H.?????54272??2013-10-31?20:48??GDAL書籍代碼\第七章代碼\GDALAlg.suo
?????文件??????18045??2013-10-31?20:24??GDAL書籍代碼\第七章代碼\GDALAlgTest\GDALAlgTest.cpp
?????文件???????3866??2013-10-31?20:22??GDAL書籍代碼\第七章代碼\GDALAlgTest\GDALAlgTest.vcproj
?????文件??????91136??2013-07-09?19:05??GDAL書籍代碼\第七章代碼\Release\GDALAlg.dll
?????文件?????111452??2013-07-09?19:05??GDAL書籍代碼\第七章代碼\Release\GDALAlg.lib
?????文件??????84992??2013-07-10?21:36??GDAL書籍代碼\第七章代碼\Release\GDALAlgTest.exe
?????文件???????7017??2013-04-03?14:04??GDAL書籍代碼\第三章代碼\GDALCpp3Test.cpp
?????文件???????7995??2013-04-03?14:05??GDAL書籍代碼\第三章代碼\GDALCs3Test.cs
?????文件???????4646??2013-04-03?15:16??GDAL書籍代碼\第三章代碼\GDALPy3Test.py
?????文件???????4885??2013-05-31?16:52??GDAL書籍代碼\第三章代碼\OGRla
?????文件???????5971??2013-05-31?11:56??GDAL書籍代碼\第三章代碼\OGRla
?????文件????????889??2013-05-29?09:17??GDAL書籍代碼\第三章代碼\OGRla
?????文件???????3647??2013-05-31?11:56??GDAL書籍代碼\第三章代碼\OGRla
?????文件???????2200??2013-04-03?20:30??GDAL書籍代碼\第二章代碼\GDALCpp2Test.cpp
?????文件???????3071??2013-04-03?20:31??GDAL書籍代碼\第二章代碼\GDALCs2Test.cs
?????文件???????2721??2013-04-03?20:31??GDAL書籍代碼\第二章代碼\GDALJavaTest.java
?????文件???????1919??2013-04-03?20:31??GDAL書籍代碼\第二章代碼\GDALPyTest.py
?????文件???????2044??2013-04-03?20:29??GDAL書籍代碼\第四章代碼\GDALCpp1Test.cpp
?????文件???????2937??2013-04-03?20:29??GDAL書籍代碼\第四章代碼\GDALCs1Test.cs
?????文件???????1355??2013-04-03?20:27??GDAL書籍代碼\第四章代碼\GDALJava1Test.java
?????文件????????714??2013-02-26?23:05??GDAL書籍代碼\第四章代碼\GDALPy1Test.py
?????文件?????423596??2013-04-22?15:15??GDAL書籍數據\10-Data\cfill.tif
?????文件?????422576??2013-04-22?14:38??GDAL書籍數據\10-Data\class.tif
?????文件?????422576??2013-04-22?14:49??GDAL書籍數據\10-Data\class_sieve.tif
............此處省略137個文件信息
- 上一篇:TimingDesigner 9.1破解版
- 下一篇:深入淺出Node.js.pdf
評論
共有 條評論