添加gdal cpp benchmark
This commit is contained in:
parent
c683cbde4d
commit
51dfd717f2
65
src/tiff_max.cpp
Normal file
65
src/tiff_max.cpp
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
#include "gdal_priv.h"
|
||||||
|
#include "cpl_conv.h" // for CPLMalloc()
|
||||||
|
#include <iostream>
|
||||||
|
#include <ctime>
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
const char *filename = "imgs/ortho.tif";
|
||||||
|
|
||||||
|
// 初始化 GDAL
|
||||||
|
GDALAllRegister();
|
||||||
|
|
||||||
|
clock_t start = clock();
|
||||||
|
|
||||||
|
// 打开数据集
|
||||||
|
GDALDataset *poDataset = (GDALDataset *)GDALOpen(filename, GA_ReadOnly);
|
||||||
|
if (poDataset == nullptr)
|
||||||
|
{
|
||||||
|
std::cerr << "Failed to open file: " << filename << std::endl;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取第一个波段
|
||||||
|
GDALRasterBand *poBand = poDataset->GetRasterBand(1);
|
||||||
|
if (!poBand)
|
||||||
|
{
|
||||||
|
std::cerr << "Failed to get raster band." << std::endl;
|
||||||
|
GDALClose(poDataset);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int nX = poBand->GetXSize();
|
||||||
|
int nY = poBand->GetYSize();
|
||||||
|
|
||||||
|
// 分配缓冲区
|
||||||
|
uint8_t *buffer = (uint8_t *)CPLMalloc(sizeof(uint8_t) * nX * nY);
|
||||||
|
|
||||||
|
// 读取整个波段数据到内存中
|
||||||
|
CPLErr err = poBand->RasterIO(GF_Read, 0, 0, nX, nY, buffer, nX, nY, GDT_Byte, 0, 0);
|
||||||
|
if (err != CE_None)
|
||||||
|
{
|
||||||
|
std::cerr << "RasterIO failed." << std::endl;
|
||||||
|
CPLFree(buffer);
|
||||||
|
GDALClose(poDataset);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查找最大值
|
||||||
|
uint8_t maxVal = 0;
|
||||||
|
for (int i = 0; i < nX * nY; i++)
|
||||||
|
{
|
||||||
|
if (buffer[i] > maxVal)
|
||||||
|
maxVal = buffer[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
clock_t end = clock();
|
||||||
|
|
||||||
|
std::cout << "GDAL Max: " << (int)maxVal << std::endl;
|
||||||
|
std::cout << "Time taken: " << ((double)(end - start)) / CLOCKS_PER_SEC << " seconds" << std::endl;
|
||||||
|
|
||||||
|
CPLFree(buffer);
|
||||||
|
GDALClose(poDataset);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user