利用GDAL vrt实现单波段浮点数dem包装为三波段rgb影像
本文介绍了利用GDAL vrt实现单波段浮点数dem包装为三波段rgb影像,具体为用vrt表达dem、将dem拉伸为0-255 区间的灰度图、灰度着色三个过程,所有中间结果可用vrt格式来表达。
目录
- 1 dem vrt表达
- 2 dem灰度拉伸
- 3 dem着色
- 1 dem vrt表达
{//vrt表达
GDALAllRegister();
std::string srcPath = "test.tif";
std::string dstPath = "test.vrt";
GDALDatasetH* srcDs = NULL;
const char* arr[] = { srcPath.c_str() };
const char* const* papszSrcDSNames = arr;
GDALDatasetH hOutDs = GDALBuildVRT(dstPath.c_str(), 1, NULL, papszSrcDSNames, NULL, NULL);
GDALClose(hOutDs);
}
借助GDALBuildVRT构建tif的vrt描述文件。
- 2 dem灰度拉伸
{//灰度拉伸
std::string srcPath = "test.vrt";
std::string dstPath = "gray.vrt";
GDALAllRegister();
GDALDataset* inDataset = (GDALDataset*)GDALOpen(srcPath.c_str(), GA_ReadOnly);
GDALRasterBand*band = inDataset->GetRasterBand(1);
/*double minValue, maxValue;
band->ComputeStatistics(false, &minValue, &maxValue, NULL, NULL, NULL, NULL);
band->SetNoDataValue(0);
band->SetScale(256 / (maxValue - minValue));
band->SetOffset(-minValue * 256 / (maxValue - minValue));*/