GDAL读取图像文件,建立金字塔

您所在的位置:网站首页 gdal读取tif文件生金字塔 GDAL读取图像文件,建立金字塔

GDAL读取图像文件,建立金字塔

2023-07-25 04:47| 来源: 网络整理| 查看: 265

GDAL是遥感数据的IO处理库,可以读写erdas img、GeoTiff等多种文件格式。本文通过建立金字塔读取大数据量的文件(测试数据1.45GB,文件格式 img)。

#include "gdal_priv.h" #include "math.h"

unsigned char *uc_gray;       //灰度数组  int iwidth;          //图像宽度  int iheight;         //图像高度

int CImageObject::GetSmpStep(float size) {  //一副图内存中加载最大32MB  if (size    uc_gray = (BYTE *) CPLMalloc(sizeof(unsigned int)*nXSize*nYSize);    int width=nXSize;    int savewidth=width%4;    if(savewidth!=0)     savewidth=4-savewidth;    savewidth+=width;    iwidth=savewidth;    iheight=nYSize;

   poBand->RasterIO( GF_Read, 0, 0, nXSize, nYSize,         uc_gray, iwidth, iheight, GDT_Byte,         0, 0 );         }   //图像较大时根据压缩比率建立相应的金字塔   else   {    int OverviewList[1]={iSmpStep};    poBand->BuildOverviews("NEAREST", 1, OverviewList, GDALDummyProgress, NULL );      int index = 0;    iSmpStep = 4;    nXSize /= iSmpStep;    nYSize /= iSmpStep;    uc_gray = (BYTE *) CPLMalloc(sizeof(unsigned int)*nXSize*nYSize);    int width=nXSize;    int savewidth=width%4;    if(savewidth!=0)     savewidth=4-savewidth;    savewidth+=width;    iwidth=savewidth;    iheight=nYSize;

   GDALRasterBand *poBand2;    poBand2 = poBand->GetOverview(index);    poBand2->RasterIO( GF_Read, 0, 0, nXSize, nYSize,         uc_gray, iwidth, iheight, GDT_Byte,         0, 0 );   }   //转置图像使(0,0)坐标由左上角转换为左下角   int i;   BYTE temp;   for(i=0; i     temp = uc_gray[i*iwidth+j];     uc_gray[i*iwidth+j] = uc_gray[(iheight-i-1)*iwidth+j];     uc_gray[(iheight-i-1)*iwidth+j] = temp;    }   }

   GDALClose(poDataset);   return true;  }  return false;  }



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3