[Gdal-dev] BuildOverviews()
Peng Gao
pgao at esri.com
Fri Nov 19 19:44:30 EST 2004
Martin,
Thanks for your help. It worked great. The overviews I created are tiled
with block
size 128x128.
I was using GDALRasterBand::BuildOverviews() on a band and it always
returned error. When
do I ever need to use this call?
Thanks again,
Gao, Peng
> -----Original Message-----
> From: Chapman, Martin [mailto:MChapman at sanz.com]
> Sent: Thursday, November 18, 2004 9:40 PM
> To: Gao, Peng; gdal-dev at remotesensing.org
> Subject: RE: [Gdal-dev] BuildOverviews()
>
>
> Gao,
>
> I've built overviews successfully before for a tif but I
> can't remember if it was tiled or stripped. I think I've
> done both before though. See the code snippets below if it's
> any help:
>
> Let me know if it works.
> Martin
>
> // this goes some where in your code...
> GDALAllRegister();
>
> GDALDataset* m_pDataset = (GDALDataset*)
> GDALOpen(m_sFileName.c_str(), GA_ReadOnly);
> GDALDefaultOverviews* m_pGDALDefaultOverviews = new
> GDALDefaultOverviews();
>
> if( m_pDataset == NULL )
> {
> const char* pszError = CPLGetLastErrorMsg();
> AfxMessageBox(pszError);
> return false;
> }
> //........
>
>
> // I use this function to generate the ovr file
>
> void CImagePortDoc::GenerateOverViewFile()
> {
> try
> {
> if (!m_pDataset)
> return;
>
> string ovr_file;
> string ovr_name;
> string file = m_sFileName;
> string::size_type pos = file.find('.');
>
> if (pos == string::npos)
> {
> ovr_file = file + ".ovr";
> ovr_name = file;
> }
> else
> {
> ovr_file.insert(0, file.begin(), &file[pos]);
> ovr_name = ovr_file;
> ovr_file += ".ovr";
> }
>
> CMainFrame* pMainFrame = (CMainFrame*) AfxGetMainWnd();
> if (pMainFrame->FileExists(ovr_file))
> {
> CString sMessage = _T("The file ");
> sMessage += ovr_file.c_str();
> sMessage += _T(" exists.\nDo you want
> to overwrite it?");
> if (AfxMessageBox(sMessage,
> MB_YESNO|MB_ICONQUESTION) == IDNO)
> return;
>
> DeleteFile(ovr_file.c_str());
> }
> else
> {
> if (AfxMessageBox("Build the
> overviews?", MB_YESNO|MB_ICONQUESTION) == IDNO)
> return;
> }
>
> BeginWaitCursor();
>
> if (!m_pGDALDefaultOverviews->IsInitialized())
>
> m_pGDALDefaultOverviews->Initialize(m_pDataset, ovr_file.c_str());
>
> int nOverviewCount =
> m_pGDALDefaultOverviews->GetOverviewCount(1);
>
> int* pOverviewList = NULL;
> nOverviewCount = 12;
> pOverviewList = new int[nOverviewCount];
> int nNumberOfBands = m_vBandList.size();
>
> pOverviewList[0] = 2;
> pOverviewList[1] = 4;
> pOverviewList[2] = 8;
> pOverviewList[3] = 16;
> pOverviewList[4] = 32;
> pOverviewList[5] = 64;
> pOverviewList[6] = 128;
> pOverviewList[7] = 256;
> pOverviewList[8] = 512;
> pOverviewList[9] = 1024;
> pOverviewList[10] = 2048;
> pOverviewList[11] = 4096;
>
> int* pBandList = new int[nNumberOfBands];
> for (int n = 0; n < nNumberOfBands; n++)
> pBandList[n] = n + 1;
>
> CPLErr err =
> m_pGDALDefaultOverviews->BuildOverviews(ovr_name.c_str(),
> "NEAREST", nOverviewCount, pOverviewList, nNumberOfBands,
> pBandList, GDALDummyProgress, NULL);
>
> if (pBandList) delete pBandList;
> if (pOverviewList) delete pOverviewList;
>
> if (err != CE_None)
> return;
>
> m_vResLevels.clear();
> for (int k = 0; k < nOverviewCount; k++)
> m_vResLevels.push_back(k);
>
> UpdateAllViews(NULL);
>
> EndWaitCursor();
>
> }
> catch(...)
> {
> AfxMessageBox("An unspecified error occurred");
> }
> }
>
>
>
> -----Original Message-----
> From: Gao, Peng [mailto:pgao at esri.com]
> Sent: Thu 11/18/2004 4:40 PM
> To: gdal-dev at remotesensing.org
> Cc:
> Subject: [Gdal-dev] BuildOverviews()
> I tried to build the overviews on a tiff image, and it failed because
> the format does not support building of overviews. What formats are
> currently supporting building the overviews (pyramid)? I understand
> the overviews if built, are stored in a tiff image with a special
> extension .ovr. Are these overview tiffs tiled or scanline based?
>
> Gao, Peng
>
> _______________________________________________
> Gdal-dev mailing list
> Gdal-dev at xserve.flids.com
> http://xserve.flids.com/mailman/listinfo/gdal-dev
>
>
>
>
More information about the Gdal-dev
mailing list