项目需要解析etop数据,都是grd格式文件,可以用surfer软件打开,但是并不适合开发,以及对数据的解析

这里基于gdal库提供的接口对grd文件进行读取和解析,代码如下

#include <iostream>
#include <gdal_priv.h>
#include <string>using namespace std;void fileRead(const char* pszFile);int main(int argc, char *argv[])
{fileRead("/home/tcy/etop/ETOPO1_Bed_c_gmt4.grd");//fileRead("/home/taochengye/etop/ETOPO1_Bed_g_gdal.grd");return 0;
}void fileRead(const char* pszFile)
{GDALAllRegister();GDALDataset *poDataset;//使用只读方式打开图像poDataset = (GDALDataset*)GDALOpen(pszFile, GA_ReadOnly);if (poDataset == NULL) {printf("File: %s不能打开!\n", pszFile);return;}printf("Driver:%s/%s\n",poDataset->GetDriver()->GetDescription(),poDataset->GetDriver()->GetMetadataItem(GDAL_DMD_LONGNAME));//输出图像的大小和波段个数printf("Size is %d x %d x %d\n",poDataset->GetRasterXSize(), poDataset->GetRasterYSize(),poDataset->GetRasterCount());//输出图像的投影信息if (poDataset->GetProjectionRef() != NULL)printf("Projection is %s\n", poDataset->GetProjectionRef());//输出图像的坐标和分辨率信息double adfGeoTransform[6];if (poDataset->GetGeoTransform(adfGeoTransform) == CE_None) {printf("Origin =(%.6f,%.6f)\n", adfGeoTransform[0], adfGeoTransform[3]);printf("PixelSize = (%.6f,%.6f)\n", adfGeoTransform[1], adfGeoTransform[5]);}//读取第一个波段GDALRasterBand *poBand = poDataset->GetRasterBand(1);//获取该波段的最大值最小值,如果获取失败,则进行统计int            bGotMin, bGotMax;double         adfMinMax[2];adfMinMax[0] = poBand->GetMinimum(&bGotMin);adfMinMax[1] = poBand->GetMaximum(&bGotMax);if (!(bGotMin&& bGotMax))GDALComputeRasterMinMax((GDALRasterBandH)poBand, TRUE, adfMinMax);printf("Min=%.3fd,Max=%.3f\n", adfMinMax[0], adfMinMax[1]);int nXSize = poBand->GetXSize();int nYSize = poBand->GetYSize();float *pafScanline = new float[nXSize];//读取图像数据for (int i = 0; i < 10/*nYSize*/; i++) {poBand->RasterIO(GF_Read, 0, i, nXSize, 1, pafScanline, nXSize, 1, GDT_Float32, 0, 0);//poBand->RasterIO(GF_Read, 0, i, nXSize, 1, pafScanline, nXSize, 1, GDT_Float32, 0, 0);string LineDataInfo = "";for (int j = 0; j < 10/*nXSize*/; j++) {if (j == 0) {LineDataInfo = to_string(pafScanline[j]);}else {LineDataInfo = LineDataInfo + ",  " + to_string(pafScanline[j]);}}cout << LineDataInfo << endl;}delete[]pafScanline;//关闭文件GDALClose((GDALDatasetH)poDataset);
}

基于GDAL库读取GRD数据文件的C++代码相关推荐

  1. STC8单片机基于开源库读取mpu6050数据

    STC8单片机基于开源库读取mpu6050数据

  2. MNE库读取gdf数据文件

    主要函数mne.io.read_raw_gdf(input_fname, montage='deprecated', eog=None, misc=None, stim_channel='auto', ...

  3. netcdf库读取nc格式文件中的字符串类型的数据

    netcdf库读取nc格式文件 一.背景 二.工具使用 三.测试代码 四.测试结果 一.背景 这两天解析数据需要解析nc格式的文件,时间是字符串类型的,最开始还以为这个数据有问题呢,使用panoply ...

  4. Linux配置gdal变量环境,基于GDAL库的LINUX环境下的FY-3D和FY-4A遥感数据处理

    王燕婷 摘要 基于GDAL库的功能和其开源.可对栅格空间数据操作的特点,将GDAL与C++语言的完美结合,可极大得发挥其在开发遥感图像处理软件中的优势,并可跨平台应用于不同操作系统下的遥感图像数据处理 ...

  5. matlab 十六进制数组,【MATLAB】MATLAB中读取二进制数据文件并加入到矩阵中

    MATLAB中读取二进制数据文件并加入到矩阵中的应用如下: 如果对c语言十分熟悉的话,应该对fopen,fclose,ftell,fseek,fread,fwrite,feof 这些函数非常熟悉了,在 ...

  6. 利用Python读取外部数据文件

    不论是数据分析,数据可视化,还是数据挖掘,一切的一切全都是以数据作为最基础的元素.利用Python进行数据分析,同样最重要的一步就是如何将数据导入到Python中,然后才可以实现后面的数据分析.数据可 ...

  7. Matlab读取二进制数据文件

    第一步:函数fopen打开文件 fid=fopen('文件名',读取方式) fid:句柄值 小于0表示打开失败:大于0表示打开成功 文件名:字符串,使用单引号(本文例子'savedata.dat') ...

  8. STM32F103VE基于标准库下DHT11数据串口打印输出

    STM32F103VE基于标准库下DHT11数据串口打印输出

  9. pandas玩转excel-> (2)如何利用pandas读取excel数据文件

    pandas玩转excel-> (2)如何利用pandas读取excel数据文件 import pandas as pd #将excel文件读到内存中,形成dataframe,并命名为peopl ...

  10. STM32基于HAL工程读取DHT11数据

    STM32基于HAL工程读取DHT11数据 ✨申明:本文章仅发表在CSDN网站,任何其他网站,未注明来源,见此内容均为盗链和爬取,请多多尊重和支持原创!

最新文章

  1. 【论文笔记】 LSTM-BASED DEEP LEARNING MODELS FOR NONFACTOID ANSWER SELECTION
  2. 计算机加入到域的注意事项
  3. (紀錄)[ASP.NET MVC][jQuery]-1 純手工打造屬於自己的 jQuery GridView
  4. 新建Web网站与新建Web应用程序的区别
  5. Quartz框架中的Scheduler
  6. mysql添加外键的时候报错_mysql处理添加外键时 error 150 问题
  7. 在类中用class时数据是共有还是私有_jvm学习笔记之class文件的加载、初始化
  8. 微服务容错时,这些技术你要立刻想到
  9. 人工智能发展及其伦理问题思考
  10. java 重载赋值_java中构造方法,set/get方法,方法重载使用解读
  11. linux(ubuntu)下C++访问mysql数据库
  12. php网站模板怎么修改,自己做网站如何用好并自主修改网上的免费模板
  13. html与css游戏开发工具,分享15个最佳的HTML/CSS设计和开发框架
  14. 如何优雅的快速下载谷歌云盘的大文件 (一)
  15. JavaScript的特效
  16. HBuilderX 打包 vue 项目生成 apk
  17. gae mysql_国内几大云服务引擎 BAE、SAE 与 GAE 优劣对比
  18. 极限、连续、导数与微分
  19. 大家身边有没有超级自恋的人
  20. 利用html标记制作静态网页,使用HTML制作网页《静态网页制作》.ppt

热门文章

  1. django 分拆views 提示 module ‘app001.views‘ has no attribute ‘xxx‘
  2. Linux中常用的scree的安装和常用的screen命令
  3. ZeroMQ模式介绍
  4. 2018 06 01 第一次博客 自然语言处理
  5. win10离线安装.NetFrameWork3.5出现0x800F081F解决办法。
  6. Mybatis注解实现DAO层
  7. DDos/DoS工具集(持续更新)
  8. keyshot渲染图文教程_使用keyshot渲染器精确贴图的步骤教程详解
  9. 如何用3dmax画OpenGL的5大坐标系
  10. 与VX msn 聊天记录