Не работает GDALWarpOptions

Ответить
viktor1346
Новоприбывший
Сообщения: 6
Зарегистрирован: 12 ноя 2016, 20:55
Репутация: 0

Не работает GDALWarpOptions

Сообщение viktor1346 » 19 сен 2017, 09:34

Использую 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 из приложенного архива.
Что я делаю не так?
Вложения
testData.rar
(912.92 КБ) 385 скачиваний

trir
Гуру
Сообщения: 5271
Зарегистрирован: 09 апр 2010, 19:30
Репутация: 1013
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

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

Сообщение trir » 19 сен 2017, 09:46

GDAL 1.6.0 - December 2008
Qt 4.5.0 - 3 March 2009

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

viktor1346
Новоприбывший
Сообщения: 6
Зарегистрирован: 12 ноя 2016, 20:55
Репутация: 0

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

Сообщение viktor1346 » 19 сен 2017, 10:47

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

Ответить

Вернуться в «GDAL/OGR»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 4 гостя