2014-05-19 18 views
0

영어를 잘 이해하지 못해서 최고의 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]; 
} 
} 

답변

0

당신 말이 맞습니다. 무슨 간단한 실수 야. 내가 사용한 이러한 이미지에는 그 안에 밴드와 같은 고도 데이터가 없었습니다. 나는 지금 내가 필요로하는 밴드에서 필요한 데이터를 제공하는 http://srtm.csi.cgiar.org/SELECTION/inputCoord.asp의 이미지를 사용했다. 그런 다음 내 기능을 사용하여 읽을 수 있습니다.

0

이 GeoTIFF 파일은 색상 정보가 아니라 고도를 포함하는 것 :

여기 내 코드입니다. 파일에는 RGB 공간의 픽셀 색상이 있으며 세 개의 밴드 (1 : 빨간색, 2 : 녹색, 3 : 파란색)가 있습니다. 예제와 비슷한 코드로 GeoTIFF 파일을 처리 할 수 ​​있지만 세 가지 밴드를 읽어야합니다. 데이터 유형은 Byte이며 GDT_Float32가 아닙니다. GDAL로 처리하기 전에 데이터 제공 업체에 문의하거나 GIS 소프트웨어 (예 : QGIS)로 이러한 래스터 레이어를 열어 보시기 바랍니다. .tif 파일은 .txt 파일의 메타 데이터와 함께 표시됩니다.