• 大小:
    文件类型: .rar
    金币: 2
    下载: 1 次
    发布日期: 2023-06-21
  • 语言: 其他
  • 标签: GDAL  

资源简介

《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书籍代码\第三章代码\OGRlayerTest\CreateVector.cpp

     文件       5971  2013-05-31 11:56  GDAL书籍代码\第三章代码\OGRlayerTest\OGRlayerTest.cpp

     文件        889  2013-05-29 09:17  GDAL书籍代码\第三章代码\OGRlayerTest\OGRlayerTest.sln

     文件       3647  2013-05-31 11:56  GDAL书籍代码\第三章代码\OGRlayerTest\OGRlayerTest.vcproj

     文件       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个文件信息

评论

共有 条评论