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),遍历数组相关推荐

  1. 在JavaScript中逐个遍历数组?

    如何使用JavaScript遍历数组中的所有条目? 我以为是这样的: forEach(instance in theArray) 其中theArray是我的数组,但这似乎是不正确的. #1楼 如果您不 ...

  2. 前端技巧:遍历数组都有哪些方式呢?

    前端开发中给我们提供了数组这个概念,很多的数据可以存在一个数组中,但当我们需要寻找里面的数据的时候就需要遍历数组,那么遍历数组都有哪些方式呢? 一.for循环 length属性是一个很特别的属性,看到 ...

  3. Java中forEach, 用来遍历数组

    这里的for是Java中forEach, 用来遍历数组的.for(int i : d) 就是遍历int型数组d的 每一次访问数组d的时候读取的数据放入int型的i中.和for(int i=0;i< ...

  4. JS中遍历数组的两种方式

    方式一 for循环 //遍历arr,获取arr中Person对象for(var i=0 ; i<arr.length ; i++){var p = arr[i];//判断Person对象的age ...

  5. php 实现数组数据查询,thinkphp数据查询和遍历数组实例_PHP

    本文实例讲述了thinkphp数据查询和遍历数组的方法.分享给大家供大家参考.具体方法如下: 数据库可以使用DSN方法进行配置: 代码如下: 'DB_PREFIX'=>'tp_', //设置表前 ...

  6. python遍历数组的两种方法及将print的内容写入文件中

    python遍历数组的两种方法 第一种,最常用的,通过for in遍历数组 colours = ["red","green","blue"] ...

  7. 【牛客网】C语言入门 - CC4 利用指针遍历数组

    题目描述 题目链接:利用指针遍历数组 描述 键盘随机输入 6 个整数,将这些数据保存到数组中,利用指针遍历数组中的元素并打印. 输入描述: 键盘随机输入 6 个整数 输出描述: 输出数组中的所有元素, ...

  8. 实现遍历数组(双for循环语句)

    遍历数组就是获得数组中的每一个元素 注:数组行和列都是从0开始计数 char arr[][]=new char[3][5];         arr[0]=new char[]{'春','眠','不' ...

  9. JS遍历数组的forEach方法

    forEach是JS中为我们提供的一个方法,用来遍历数组, 此方法只支持IE8以上浏览器使用 var arr = ["中","美","俄", ...

  10. JAVA基础初探(十二)Map接口及其常用实现类(HashMap)、File类详解(概述、创建、删除、重命名、文件属性读取/设置、遍历文件夹)

    该篇博客目录 1.Map接口及其常用实现类(HashMap.Hashtable) 2.File类(概述.创建.删除.重命名.文件属性读取/设置.遍历文件夹) 一.Map接口及其常用实现类(HashMa ...

最新文章

  1. python web-python web入坑指南
  2. openresty capture
  3. 基于 Kubernetes 的基础设施即代码
  4. 1535C. Unstable String
  5. web端兼容性测试相关知识
  6. 关于Ajax的get与post浅分析,同步请求与异步请求,跨域请求;
  7. linux是一个工程而不是理论
  8. Android NotificationManager详解
  9. js 为对象添加和删除属性
  10. cudnn下载 cudnn-11.1-linux-x64-v8.0.4.30.tgz
  11. jquery设为首页,加入收藏代码
  12. 《Windows安全机制》之DEP(数据执行保护)
  13. meta分析 2. 固定效应和随机效应
  14. 小学奥数公式大全 学习奥数必备“工具”
  15. HTML以及CSS制作相册
  16. Flak执行端口被占用OSError: [Errno 48] Address already in use
  17. 数据库 - 数据库角色
  18. 安卓小人html制作,告白小人在线制作
  19. 全国各地土特产一览表(以后好问朋友要礼物了)
  20. 电脑服务器协议,电影服务器协议、架设及防范配置介绍 -电脑资料

热门文章

  1. JAVAWeb项目 微型商城项目-------(四)用户注册
  2. 每天一道剑指offer-对称的二叉树
  3. python如何保存源文件_python处理document文档保留原样式
  4. everedit选择_【EverEdit怎么用】EverEdit好不好_使用技巧-ZOL软件百科
  5. python 几何计算_计算几何-凸包算法 Python实现与Matlab动画演示
  6. 利用Python编程,分别使用梯度下降法和最小二乘法求解多元函数
  7. mysql sql优化与调优机制详解_MySQL性能调优——锁定机制与锁优化分析详解
  8. mysql tomcat 自动重连_Tomcat JDBC数据库连接池断开重连
  9. Go基础:不同数据类型作为函数参数传递值传递/地址(引用)传递判断
  10. Java编程:中缀表达式转后缀表达式