Je comprends pas très bien l'anglais et je ne suis pas le meilleur programmeur C++ donc j'ai décidé de poser une question ici pour compenser cela.GDAL GeoTiff obtenir l'altitude à un pixel spécifié help C++
Je suis en train d'obtenir l'élévation sur une image GeoTiff I téléchargé à partir de cette page: http://terracolor.net/sample_imagery.html
Je reçois des informations sur l'image via GDAL lib mais je ne suis pas sûr de ce que c'est exactement. Est-ce la couleur? Sont-ce des coordonnées? Quelle unité est-ce? Je suis également désorienté par les différents groupes que je peux lire. Peut-être que quelqu'un qui utilisait GDAL dans le passé peut m'expliquer de quoi il s'agit. Ce que j'aime à la fin, c'est l'altitude par exemple pour un Pixel donné.
Voici mon code:
int ofApp::getAlt(int x,int y){
GDALDataset *poDataset;
GDALAllRegister();
poDataset = (GDALDataset *) GDALOpen("data/test.tif", GA_ReadOnly);
if(poDataset == NULL)
{
cout << "no" << endl;
}else{
GDALRasterBand *poBand;
int nBlockXSize, nBlockYSize;
int bGotMin, bGotMax;
double adfMinMax[2];
//printf("Size is %dx%dx%d\n", poDataset->GetRasterXSize(), poDataset->GetRasterYSize(), poDataset->GetRasterCount());
poBand = poDataset->GetRasterBand(3);
poBand->GetBlockSize(&nBlockXSize, &nBlockYSize);
adfMinMax[0] = poBand->GetMinimum(&bGotMin);
adfMinMax[1] = poBand->GetMaximum(&bGotMax);
if(! (bGotMin && bGotMax))
GDALComputeRasterMinMax((GDALRasterBandH)poBand, TRUE, adfMinMax);
float *pafScanline;
int nXSize = poBand->GetXSize();
pafScanline = (float *) CPLMalloc(sizeof(float)*nXSize);
poBand->RasterIO(GF_Read, x, y, 1, 1,
pafScanline, nXSize, 1, GDT_Float32,
0, 0);
//cout << "vvv" << pafScanline[0] << endl;
//printf("value %f \n", pafScanline[0]);
return pafScanline[0];
}
}