基于GDAL库读取GRD数据文件的C++代码
项目需要解析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++代码相关推荐
- STC8单片机基于开源库读取mpu6050数据
STC8单片机基于开源库读取mpu6050数据
- MNE库读取gdf数据文件
主要函数mne.io.read_raw_gdf(input_fname, montage='deprecated', eog=None, misc=None, stim_channel='auto', ...
- netcdf库读取nc格式文件中的字符串类型的数据
netcdf库读取nc格式文件 一.背景 二.工具使用 三.测试代码 四.测试结果 一.背景 这两天解析数据需要解析nc格式的文件,时间是字符串类型的,最开始还以为这个数据有问题呢,使用panoply ...
- Linux配置gdal变量环境,基于GDAL库的LINUX环境下的FY-3D和FY-4A遥感数据处理
王燕婷 摘要 基于GDAL库的功能和其开源.可对栅格空间数据操作的特点,将GDAL与C++语言的完美结合,可极大得发挥其在开发遥感图像处理软件中的优势,并可跨平台应用于不同操作系统下的遥感图像数据处理 ...
- matlab 十六进制数组,【MATLAB】MATLAB中读取二进制数据文件并加入到矩阵中
MATLAB中读取二进制数据文件并加入到矩阵中的应用如下: 如果对c语言十分熟悉的话,应该对fopen,fclose,ftell,fseek,fread,fwrite,feof 这些函数非常熟悉了,在 ...
- 利用Python读取外部数据文件
不论是数据分析,数据可视化,还是数据挖掘,一切的一切全都是以数据作为最基础的元素.利用Python进行数据分析,同样最重要的一步就是如何将数据导入到Python中,然后才可以实现后面的数据分析.数据可 ...
- Matlab读取二进制数据文件
第一步:函数fopen打开文件 fid=fopen('文件名',读取方式) fid:句柄值 小于0表示打开失败:大于0表示打开成功 文件名:字符串,使用单引号(本文例子'savedata.dat') ...
- STM32F103VE基于标准库下DHT11数据串口打印输出
STM32F103VE基于标准库下DHT11数据串口打印输出
- pandas玩转excel-> (2)如何利用pandas读取excel数据文件
pandas玩转excel-> (2)如何利用pandas读取excel数据文件 import pandas as pd #将excel文件读到内存中,形成dataframe,并命名为peopl ...
- STM32基于HAL工程读取DHT11数据
STM32基于HAL工程读取DHT11数据 ✨申明:本文章仅发表在CSDN网站,任何其他网站,未注明来源,见此内容均为盗链和爬取,请多多尊重和支持原创!
最新文章
- 【论文笔记】 LSTM-BASED DEEP LEARNING MODELS FOR NONFACTOID ANSWER SELECTION
- 计算机加入到域的注意事项
- (紀錄)[ASP.NET MVC][jQuery]-1 純手工打造屬於自己的 jQuery GridView
- 新建Web网站与新建Web应用程序的区别
- Quartz框架中的Scheduler
- mysql添加外键的时候报错_mysql处理添加外键时 error 150 问题
- 在类中用class时数据是共有还是私有_jvm学习笔记之class文件的加载、初始化
- 微服务容错时,这些技术你要立刻想到
- 人工智能发展及其伦理问题思考
- java 重载赋值_java中构造方法,set/get方法,方法重载使用解读
- linux(ubuntu)下C++访问mysql数据库
- php网站模板怎么修改,自己做网站如何用好并自主修改网上的免费模板
- html与css游戏开发工具,分享15个最佳的HTML/CSS设计和开发框架
- 如何优雅的快速下载谷歌云盘的大文件 (一)
- JavaScript的特效
- HBuilderX 打包 vue 项目生成 apk
- gae mysql_国内几大云服务引擎 BAE、SAE 与 GAE 优劣对比
- 极限、连续、导数与微分
- 大家身边有没有超级自恋的人
- 利用html标记制作静态网页,使用HTML制作网页《静态网页制作》.ppt
热门文章
- django 分拆views 提示 module ‘app001.views‘ has no attribute ‘xxx‘
- Linux中常用的scree的安装和常用的screen命令
- ZeroMQ模式介绍
- 2018 06 01 第一次博客 自然语言处理
- win10离线安装.NetFrameWork3.5出现0x800F081F解决办法。
- Mybatis注解实现DAO层
- DDos/DoS工具集(持续更新)
- keyshot渲染图文教程_使用keyshot渲染器精确贴图的步骤教程详解
- 如何用3dmax画OpenGL的5大坐标系
- 与VX msn 聊天记录