Suite

GDAL en C++ : valeurs raster incorrectes après le recadrage du jeu de données geoTiff

GDAL en C++ : valeurs raster incorrectes après le recadrage du jeu de données geoTiff


J'essaie de transférer un sous-ensemble (boîte (0,0)-(300,300)) d'un géotiff panchromatique vers un nouveau fichier. Bien que la géoréférencement et l'ensemble se transfèrent correctement, les valeurs raster semblent décalées.

Le chargement des fichiers raster dans qGIS me donne les valeurs .tif d'origine 7614-15959 et le .tif résultant 0-14530.

Juste pour préciser : je n'ai pas d'autres problèmes (avec la projection, le géoréférencement ou les bordures du résultat du recadrage).

(les ensembles de données sont GDALDataset et les bandes sont GDALRasterBand)

/*GET PANCHROMATIC BAND*/ band_pan = dataset_pan->GetRasterBand(1); /*GET IMAGE/BAND DATATYPE*/ bufDataType=band_pan->GetRasterDataType(); /*CRÉER UNE NOUVELLE IMAGE AVEC LE MÊME TYPE DE DONNÉES*/ char **cropOptions = NULL; dataset_crop = poDriver->Create(fname_crop,512,512,1,bufDataType,cropOptions); /*TRANSFERT INFOS GEOREFERENCE*/ double adfGeoTransform[6]; dataset_pan->GetGeoTransform( adfGeoTransform ) dataset_crop->SetGeoTransform(adfGeoTransform); dataset_crop->SetProjection( dataset_pan->GetProjectionRef() ) /*READ IMAGE SUBSET*/ band_pan->RasterIO(GF_Read,0,0,300,300,buffer,bufsizeX,bufsizeY,bufDataType,0,0); /*OBTENIR LA NOUVELLE BANDE DE L'IMAGE*/ band_out = dataset_crop->GetRasterBand(1); /*WRITE SUBSET ON NEW IMAGE*/ band_out->RasterIO(GF_Write,0,0,300,300,buffer,bufsizeX,bufsizeY,bufDataType,0,0);

Est-ce que j'ai raté quelque chose ?


Après essais et erreurs, en utilisant l'aide de @RobSkelly @BradHards, le problème semble avoir été la taille buf que j'ai utilisée au RasteRIO, qui aurait dû être la MÊME que la taille de la boîte de recadrage.

La fonction mettait à l'échelle certains pixels afin d'adapter la taille du recadrage à la taille buf, ce qui entraînait des changements de valeurs.


Voir la vidéo: GDAL: da ECW a GeoTiff