【C++】【GADL】读取栅格数据(tif),遍历数组
every blog every motto: Light tomorrow with today.
0. 前言
简单记录下用c++读取栅格数据,遍历数组
1. 正文
1.1 参数说明
图像坐标轴:
CPLErr GDALRasterBand::RasterIO ( GDALRWFlag eRWFlag, // 读入还是写入
int nXOff, // 起始坐标(左上角x值)
int nYOff, // 起始坐标(左上角y值)
int nXSize, // (读入/写入)图像的宽
int nYSize, // (读入/写入)图像的高
void * pData, // 指向(读入/写入)的指针
int nBufXSize, // 缓冲区宽(真正显示的宽)
int nBufYSize, // 缓冲区高(真正显示的高)
GDALDataType eBufType, // (读入/写入)的数据的类型
int nPixelSpace, // 像素间隔,默认0
int nLineSpace // 像素行间隔,默认0
)
1.2 读取
#include<iostream>
#include<algorithm>
#include<vector>
#include "gdal_priv.h"BYTE * loadRasterData()
{ const char * fileName = "D:\\Programme\\Viual Studio\\C++\\learning\\point_to_line\\Project1_test\\images\\grid.tiff";GDALAllRegister(); // 注册驱动// 支持中文路径CPLSetConfigOption("GDAL_FILENAME_IS_UTF8", "NO");// 读取数据GDALDataset * pDataset = (GDALDataset *)GDALOpen(fileName, GA_ReadOnly);// 判断是否读取成功if (NULL == pDataset){cout << "未能成功读取!" << endl;return 0;}// 图像波段信息GDALRasterBand * pRasterBand;pRasterBand = pDataset->GetRasterBand(1); // 第一个波段指针CPLString DataType = GDALGetDataTypeName(pRasterBand->GetRasterDataType()); // 获取数据类型名字int imgX = pRasterBand->GetXSize();int imgY = pRasterBand->GetYSize();cout << "x,y分别为:" << imgX << " " << imgY << endl;cout << "数据类型:" << DataType << endl;cout << "-------------------------------------------------------" << endl;// 读取数据int size_m = sizeof(int)*imgX*imgY;cout << size_m << endl;BYTE * mat = (BYTE *)CPLMalloc(size_m); // 分配内存pRasterBand->RasterIO(GF_Read, 0, 0, imgX, imgY, mat, imgX, imgY, GDT_Byte, 0, 0);// 打印数组for (int i = 0; i < imgX; i++){for (int j = 0; j < imgY; j++){cout << (int) mat[i*imgX+j] << " ";}}return mat; // 返回数组的首地址
}int main()
{// 加载数据BYTE *mat = loadRasterData();}
参考文献
[1] https://blog.csdn.net/weixin_39190382/article/details/108111601
[2] https://blog.csdn.net/liminlu0314/article/details/8301585
[3] https://blog.csdn.net/liminlu0314/article/details/7072224
【C++】【GADL】读取栅格数据(tif),遍历数组相关推荐
- 在JavaScript中逐个遍历数组?
如何使用JavaScript遍历数组中的所有条目? 我以为是这样的: forEach(instance in theArray) 其中theArray是我的数组,但这似乎是不正确的. #1楼 如果您不 ...
- 前端技巧:遍历数组都有哪些方式呢?
前端开发中给我们提供了数组这个概念,很多的数据可以存在一个数组中,但当我们需要寻找里面的数据的时候就需要遍历数组,那么遍历数组都有哪些方式呢? 一.for循环 length属性是一个很特别的属性,看到 ...
- Java中forEach, 用来遍历数组
这里的for是Java中forEach, 用来遍历数组的.for(int i : d) 就是遍历int型数组d的 每一次访问数组d的时候读取的数据放入int型的i中.和for(int i=0;i< ...
- JS中遍历数组的两种方式
方式一 for循环 //遍历arr,获取arr中Person对象for(var i=0 ; i<arr.length ; i++){var p = arr[i];//判断Person对象的age ...
- php 实现数组数据查询,thinkphp数据查询和遍历数组实例_PHP
本文实例讲述了thinkphp数据查询和遍历数组的方法.分享给大家供大家参考.具体方法如下: 数据库可以使用DSN方法进行配置: 代码如下: 'DB_PREFIX'=>'tp_', //设置表前 ...
- python遍历数组的两种方法及将print的内容写入文件中
python遍历数组的两种方法 第一种,最常用的,通过for in遍历数组 colours = ["red","green","blue"] ...
- 【牛客网】C语言入门 - CC4 利用指针遍历数组
题目描述 题目链接:利用指针遍历数组 描述 键盘随机输入 6 个整数,将这些数据保存到数组中,利用指针遍历数组中的元素并打印. 输入描述: 键盘随机输入 6 个整数 输出描述: 输出数组中的所有元素, ...
- 实现遍历数组(双for循环语句)
遍历数组就是获得数组中的每一个元素 注:数组行和列都是从0开始计数 char arr[][]=new char[3][5]; arr[0]=new char[]{'春','眠','不' ...
- JS遍历数组的forEach方法
forEach是JS中为我们提供的一个方法,用来遍历数组, 此方法只支持IE8以上浏览器使用 var arr = ["中","美","俄", ...
- JAVA基础初探(十二)Map接口及其常用实现类(HashMap)、File类详解(概述、创建、删除、重命名、文件属性读取/设置、遍历文件夹)
该篇博客目录 1.Map接口及其常用实现类(HashMap.Hashtable) 2.File类(概述.创建.删除.重命名.文件属性读取/设置.遍历文件夹) 一.Map接口及其常用实现类(HashMa ...
最新文章
- python web-python web入坑指南
- openresty capture
- 基于 Kubernetes 的基础设施即代码
- 1535C. Unstable String
- web端兼容性测试相关知识
- 关于Ajax的get与post浅分析,同步请求与异步请求,跨域请求;
- linux是一个工程而不是理论
- Android NotificationManager详解
- js 为对象添加和删除属性
- cudnn下载 cudnn-11.1-linux-x64-v8.0.4.30.tgz
- jquery设为首页,加入收藏代码
- 《Windows安全机制》之DEP(数据执行保护)
- meta分析 2. 固定效应和随机效应
- 小学奥数公式大全 学习奥数必备“工具”
- HTML以及CSS制作相册
- Flak执行端口被占用OSError: [Errno 48] Address already in use
- 数据库 - 数据库角色
- 安卓小人html制作,告白小人在线制作
- 全国各地土特产一览表(以后好问朋友要礼物了)
- 电脑服务器协议,电影服务器协议、架设及防范配置介绍 -电脑资料
热门文章
- JAVAWeb项目 微型商城项目-------(四)用户注册
- 每天一道剑指offer-对称的二叉树
- python如何保存源文件_python处理document文档保留原样式
- everedit选择_【EverEdit怎么用】EverEdit好不好_使用技巧-ZOL软件百科
- python 几何计算_计算几何-凸包算法 Python实现与Matlab动画演示
- 利用Python编程,分别使用梯度下降法和最小二乘法求解多元函数
- mysql sql优化与调优机制详解_MySQL性能调优——锁定机制与锁优化分析详解
- mysql tomcat 自动重连_Tomcat JDBC数据库连接池断开重连
- Go基础:不同数据类型作为函数参数传递值传递/地址(引用)传递判断
- Java编程:中缀表达式转后缀表达式