Я не так хорошо понимаю английский, и я не лучший программист на C++, поэтому я решил задать вопрос здесь, чтобы компенсировать это.
Я пытаюсь получить высоту изображения GeoTiff, которое я скачал с этой страницы: http://terracolor.net/sample_imagery.html
Я получаю некоторую информацию из образа через GDAL lib, но я не уверен, что это такое. Это цвет? Это координаты? Что это за единство? Меня также смущают разные группы, в которых я могу читать. Может быть, кто-то, кто использовал GDAL в прошлом, может объяснить мне, что это такое. Что мне нравится в конце, так это высота, например, в метрах для данного пикселя.
Вот мой код:
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];
}
}