简单就快乐 2015-05-27 08:09 采纳率: 0%
浏览 4884
已结题

GDAL读取tif数值出现问题?急求大神指点!!!!!

文件是用arcgis软件分类后存储的tif文件,分了20个类,灰度值应该是1-20之间的整数值,在arcgis软件中显示是这样的正常值,但是用VS2010+GDAL中读取时会出现灰度值不是这个,总是32768或0啊什么的值。我程序读取网上下载的原始geotiff的高程数据是完全没问题的,分类后的数据怎么就读不出来了呢?我写了个大致代码如下,望大神给我分析一下,第一天注册CSDN,谢谢!

#include "stdafx.h"
#include "gdal_priv.h"
#include <iostream>
#include <iomanip> 
#pragma comment(lib, "gdal_i.lib")
#include<fstream>
#define TTYPE short    //方便数据类型的修改

using namespace std;
//using namespace System;

int main(int argc, char* argv[])
{
    int num_iamge_size=0;
    ofstream  myofstream("D:\\输出结果.txt") ;
    TTYPE *pafScanblock1;  //开辟缓存区
    char *file_path_name="D:\\TempForMapEMC\\iso20_min100.tif"; 
    GDALDataset *poDataset;   //GDAL数据集 
    GDALAllRegister();  //注册所有的驱动
    poDataset = (GDALDataset *) GDALOpen(file_path_name, GA_ReadOnly );
    if( poDataset == NULL )
    {
        cout<<"fail in open files!!!"<<endl;

        return 0;
    }

    //获取图像波段
GDALRasterBand *poBand1;
poBand1=poDataset->GetRasterBand(1);

//获取图像的尺寸
int nImgSizeX=poDataset->GetRasterXSize();  //图像X尺寸
int nImgSizeY=poDataset->GetRasterYSize();  //图像Y尺寸

//获取坐标变换系数
double trans[6];
CPLErr aaa=poDataset->GetGeoTransform(trans);  //此次分类后的tif用不到转换坐标,仅仅需要灰度值

//读取图像高程数据
double Xgeo,Ygeo;

for(int i=0;i<(nImgSizeX);i++)
{

    for(int j=0;j<(nImgSizeY);j++)
    {
        pafScanblock1 = (TTYPE *) CPLMalloc(sizeof(TTYPE)*(1)*(1)); //pafScanblock1为缓存,计算出缓存大小
        poBand1->RasterIO( GF_Read, j, i,1,1,pafScanblock1,1,1,GDALDataType(poBand1->GetRasterDataType()),0, 0 );

        double elevation=*pafScanblock1;

        num_iamge_size++;

        cout<<setprecision(15)<<" 高程为: "<<" "<<elevation<<endl;
        cout<<"下面是坐标变换系数:"<<endl;
        cout<<trans[0]<<" "<<trans[1]<<" "<<trans[2]<<" "<<trans[3]<<" "<<tr    ans[4]<<" "<<trans[5]<<" "<<endl;
        myofstream<<" i="<<i<<" j="<<j<<" 类别是"<<elevation<<endl;  //给关    //心的数据输出到文件

        }

    }
    cout<<"总计:"<<num_iamge_size<<endl;
 system("pause");

    delete poDataset;
    return 0;
}
  • 写回答

3条回答 默认 最新

  • LF-DevJourney 2015-05-27 09:10
    关注

    有借鉴意义,,关注着问题的解答

    评论

报告相同问题?

悬赏问题

  • ¥15 求chat4.0解答一道线性规划题,用lingo编程运行,第一问要求写出数学模型和lingo语言编程模型,第二问第三问解答就行,我的ddl要到了谁来求了
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥15 maple软件,用solve求反函数出现rootof,怎么办?
  • ¥65 汇编语言除法溢出问题
  • ¥15 Visual Studio问题
  • ¥20 求一个html代码,有偿
  • ¥100 关于使用MATLAB中copularnd函数的问题
  • ¥20 在虚拟机的pycharm上
  • ¥15 jupyterthemes 设置完毕后没有效果