Страница 1 из 1

Не работает GDALWarpOptions

Добавлено: 19 сен 2017, 09:34
viktor1346
Использую Qt 4.5.0 и GDAL 1.6.0.
Если я пытаюсь объединить снимки с одной проекцией, то все получается, но если они разные, то нет.

Код: Выделить всё

 
 #include "gdal.h"
#include "gdal_priv.h"
#include "gdal_priv.h"
#include "cpl_conv.h" // for CPLMalloc()
#include "gdalwarper.h"

#include <QDebug>
#include <QFileDialog>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    GDALDatasetH  hSrcDS, hDstDS;
    // Open input and output files.
    GDALAllRegister();
    hSrcDS = GDALOpen(QFileDialog::getOpenFileName().toLocal8Bit().data(), GA_ReadOnly );
    hDstDS = GDALOpen(QFileDialog::getOpenFileName().toLocal8Bit().data(), GA_Update );
    // Setup warp options.
    GDALWarpOptions *psWarpOptions = GDALCreateWarpOptions();
    psWarpOptions->hSrcDS = hSrcDS;
    psWarpOptions->hDstDS = hDstDS;
    psWarpOptions->nBandCount = 1;
    psWarpOptions->panSrcBands =
        (int *) CPLMalloc(sizeof(int) * psWarpOptions->nBandCount );
    psWarpOptions->panSrcBands[0] = 1;
    psWarpOptions->panDstBands =
        (int *) CPLMalloc(sizeof(int) * psWarpOptions->nBandCount );
    psWarpOptions->panDstBands[0] = 1;
    psWarpOptions->pfnProgress = GDALTermProgress;
    // Establish reprojection transformer.
    psWarpOptions->pTransformerArg =
        GDALCreateGenImgProjTransformer( hSrcDS,
                                         GDALGetProjectionRef(hSrcDS),
                                         hDstDS,
                                         GDALGetProjectionRef(hDstDS),
                                         TRUE, 0.0, 1 );
    psWarpOptions->pfnTransformer = GDALGenImgProjTransform;
    qDebug() << psWarpOptions->pfnTransformer;
    // Initialize and execute the warp operation.
    GDALWarpOperation oOperation;
    oOperation.Initialize( psWarpOptions );
    qDebug() << oOperation.ChunkAndWarpImage( 0, 0,
                                  GDALGetRasterXSize( hDstDS ),
                                  GDALGetRasterYSize( hDstDS ) );
    GDALDestroyGenImgProjTransformer( psWarpOptions->pTransformerArg );
    GDALDestroyWarpOptions( psWarpOptions );
    GDALClose( hDstDS );
    GDALClose( hSrcDS );

    return a.exec();
}
Мне это нужно, для того чтобы вырезать тайлы в проекцию Меркатора.
Я пытался объединить снимки 1 и 2 из приложенного архива.
Что я делаю не так?

Re: Не работает GDALWarpOptions

Добавлено: 19 сен 2017, 09:46
trir
GDAL 1.6.0 - December 2008
Qt 4.5.0 - 3 March 2009

Зачем такой старый код?

Re: Не работает GDALWarpOptions

Добавлено: 19 сен 2017, 10:47
viktor1346
Другие версии GDAL не компилировались, а на системе установлена Qt 4.5.0.
Код выше должен верно работать?