영어를 잘 이해하지 못해서 최고의 C++ 프로그래머가 아니므로 여기서이를 보완하기 위해 질문을하기로했습니다. http://terracolor.net/sample_imagery.htmlGDAL GeoTiff가 지정된 픽셀에서 표고를 얻습니다. 도움말 C++
나는 GDAL lib 디렉토리를 통해 이미지에서 몇 가지 정보를 얻을 수 있지만이 정확히 무엇인지 확실하지 않다 :
은 내가이 페이지에서 다운로드 GeoTiff 이미지에서 고도를 얻기 위해 노력하고 있어요. 색깔인가요? 이게 좌표 야? 그게 무슨 단결이야? 나는 또한 내가 읽을 수있는 여러 밴드들에게 혼란 스럽다. 아마도 과거에 GDAL을 사용했던 누군가가이 모든 것에 대해 나에게 설명 할 수있을 것이다. 내가 마지막으로 가지고 싶은 것은 예를 들어 주어진 픽셀에서 미터의 고도입니다. Terracolor에서 제공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];
}
}