• GDAL读取tiff文件/C++源码


    // gdal_geotiff.cpp : 定义控制台应用程序的入口点。
    //

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

    int main(int argc, char* argv[])
    {
        int num_iamge_size=0;

        BYTE *pafScanblock1;  //开辟缓存区
        char *file_path_name="C:/Users/afa/Desktop/srtm_59_04/srtm_59_04.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();
        int nImgSizeY=poDataset->GetRasterYSize();

        //获取坐标变换系数
        double trans[6];
        CPLErr aaa=poDataset->GetGeoTransform(trans);

        //读取图像高程数据
        double Xgeo,Ygeo;
        pafScanblock1 = (BYTE *) CPLMalloc(sizeof(BYTE)*(nImgSizeX)*(nImgSizeY));
        poBand1->RasterIO( GF_Read, 0, 0,nImgSizeX,nImgSizeY,pafScanblock1,nImgSizeX,nImgSizeY,GDALDataType(poBand1->GetRasterDataType()),0, 0 );
        for(int i=0;i<(nImgSizeX-5990);i++)
        {
            for(int j=0;j<(nImgSizeY-5990);j++)
            {
                BYTE elevation=*pafScanblock1;
                Xgeo=trans[0]+i*trans[1]+j*trans[2];
                Ygeo=trans[3]+i*trans[4]+j*trans[5];
                num_iamge_size++;
                pafScanblock1++;
                cout<<setprecision(15)<<Xgeo<<"  "<<Ygeo<<"  "<<elevation<<endl;
            }
        }
        cout<<"总计:"<<num_iamge_size<<endl;


        delete poDataset;
        return 0;
    }

  • 相关阅读:
    几个常用的url生成二维码的接口
    php 实现打印预览的功能
    php实现pdf导出和打印功能。
    PHP 写入缓存
    jQuery获取Select选择的Text和 Value(转)
    jQuery获取多种input值的方法
    php mysqli_get_server_version()函数
    大盘能涨多少点?
    让你懂起来
    楼市、股市后下一届ZF将用什么去做超发货币的蓄水池(
  • 原文地址:https://www.cnblogs.com/AmatVictorialCuram/p/3410041.html
Copyright © 2020-2023  润新知