1.功能简介

栅格数据包含很多信息,在数据的运用中需要对数据的信息进行读取或写入,目前PIE SDK支持多种数据格式的数据读取和写入,下面对栅格数据格式的数据读写功能进行介绍。

2.功能实现说明

2.1. 实现思路及原理说明

第一步

获取要读取的栅格数据

第二步

读取栅格数据

第三步

写入栅格数据并赋值投影

2.2. 核心接口与方法

接口/类

方法/属性

说明

RasterDatasetPtr

GetBandCount()

获取波段数

GetRasterBand(int nIndex)

获取栅格波段对象

GetRasterDataType()

获取栅格数据类型

Read(int nx, int ny, int nWid, int nHei, int nBufXSize, int nBufYSize, const QVector<int>& bandMap)

栅格数据集读取数据

2.3. 示例代码

项目路径

百度云盘地址下/PIE示例程序/04数据操作/12栅格数据集的读写

数据路径

百度云盘地址下/PIE示例数据/栅格数据/04.World/World.tif

视频路径

百度云盘地址下/PIE视频教程/04数据操作/12栅格数据集的读写.avi

示例代码

void PIEMainWindow::On_ActionLayoutReadRaster_Triggered(bool checked)

{

SysCarto::RasterLayerPtr rasterLayerPtr = m_pCurrentControl->GetActiveView()->GetCurrentLayer();

if (rasterLayerPtr == nullptr) return;

SysDataSource::RasterDatasetPtr rasterDataSetPtr = rasterLayerPtr->GetDataset();

int BandCount = rasterDataSetPtr->GetBandCount();

SysDataSource::RasterBandPtr band = rasterDataSetPtr->GetRasterBand(0);

SysDataSource::PixelDataType bandType= band->GetRasterDataType();

QVector<int> vectorBand;

int* bandMap = new int[BandCount];

for (int i = 0; i < BandCount; i++)

{

bandMap[i] = i + 1;

vectorBand.insert(i, i + 1);

}

SysDataSource::PixelBufferPtr buffer= rasterDataSetPtr->Read(0, 0, 500, 500, 500, 500, vectorBand);

/*将读取到的数据,写入内存数据集,并加载至图层*/

SysDataSource::RasterDatasetPtr newDataSet = SysDataSource::DatasetFactory::Instance()->CreateRasterDataset("", 500, 500        , BandCount, rasterDataSetPtr->GetRasterBand(0)->GetRasterDataType(), "MEM");

double* geo = new double[6];

rasterDataSetPtr->GetGeoTransform(geo);

newDataSet->SetSpatialReference(rasterDataSetPtr->GetSpatialReference());

newDataSet->SetGeoTransform(geo);

bool flag = newDataSet->Write(0, 0, 500, 500, buffer->GetData(), 500, 500, bandType, BandCount, bandMap);

if (flag)

{

SysCarto::RasterLayerPtr newLayer = SysCarto::LayerFactory::Instance()->CreateDefaultRasterLayer(newDataSet);

newLayer->SetName("内存图层");

m_pCurrentControl->GetMap()->AddLayer(newLayer);

m_pCurrentControl->GetActiveView()->Refresh();

}

}

2.4. 示例截图

PIE-SDK For C++栅格数据集的读写的更多相关文章

  1. PIE SDK栅格数据集的读写

    1. 功能简介 栅格数据包含很多信息,在数据的运用中需要对数据的信息进行读取或写入,目前PIE SDK支持多种数据格式的数据读取和写入,下面对栅格数据格式的数据读写功能进行介绍. 2. 功能实现说明 ...

  2. PIE创建带压缩的栅格数据集

    这段时间我一直在研究如何用PIE创建带压缩的栅格数据集,由于我在比赛中使用的原始影像大小普遍都在300M以上,软件加载较慢,因此希望能对原始影像进行压缩,加快加载时间. 首先,该方法的关键是修改Dat ...

  3. PIE SDK 文章目录索引

    1.PIE SDK介绍 1.1.  PIE软件介绍 1.2.  PIE SDK介绍 1.3.  PIE支持项目介绍 1.4.  PIE.NET-SDK插件式二次开发介绍 1.5.  PIE.NET-S ...

  4. PIE SDK打开自定义栅格数据

    1. 数据介绍 信息提取和解译的过程中,经常会生成一部分中间临时栅格数据,这些数据在执行完对应操作后就失去了存在的价值,针对这种情况,PIE增加了内存栅格数据集,来协助用户完成对自定义栅格数据的读取和 ...

  5. PIE SDK栅格RGB渲染

    1. 功能简介 RGB色彩模式是一种颜色标准,是通过对红(R).绿(G).蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代表红.绿.蓝三个通道的颜色,这个标准几乎包 ...

  6. PIE SDK栅格增强控制

    1. 功能简介 亮度是指发光体(反光体)表面发光(反光)强弱的物理量:对比度指的是一幅图像中明暗区域最亮的白和最暗的黑之间不同亮度层级的测量:透明度是描述光线透过的程度 栅格数据增强控制主要是通过对亮 ...

  7. PIE SDK栅格图层渲染变化事件监听

    1. 功能简介 通过PIE SDK加载图层后,会默认的赋值给数据一个渲染.当用户重新给数据赋值Render或改变数据显示效果时,会触发渲染变化事件. 所谓的事件监听是在事件触发时,将执行用户指定的函数 ...

  8. PIE SDK栅格生成等值线、面

      1.算法功能简介 等值线图能直观地展示数据的变化趋势,是众多领域展示成果的重要图建之一,被广泛应用于石油勘探.矿物开采.气象预报等众多领域.等值线的绘制是指从大量采样数据中提取出具有相同值的点的信 ...

  9. PIE SDK 多数据源的复合数据集加载

    1. 功能简介 GIS遥感图像数据复合是将多种遥感图像数据融合成一种新的图像数据的技术,是目前遥感应用分析的前沿,PIESDK通过复合数据技术可以将多幅幅影像数据集(多光谱和全色数据)组合成一幅多波段 ...

随机推荐

  1. 进阶之路 | 奇妙的Animation之旅

    前言 本文已经收录到我的Github个人博客,欢迎大佬们光临寒舍: 我的GIthub博客 学习清单: 动画的种类 自定义View动画 View动画的特殊使用场景 属性动画 使用动画的注意事项 一.为什 ...

  2. C# DateTime 工具类

    项目gitHub地址 点我跳转 今天给大家带来一个C#里面的时间工具类,具体的直接看下面代码 using System; namespace ToolBox.DateTimeTool { public ...

  3. 1Python学习CentOS 7 Linux环境搭建

    鉴于python3目前已成流行之势,而各发行版Linux依然是自带python2.x,笔者尝试在centos7下,部署Python3.x与2.x共存环境 本文参考博主良哥95网址https://blo ...

  4. Linux学习Day2:安装RedHat Linux和新手必须掌握的命令

    今天是Linux线上培训的第二天,主要是Linux环境的安装和几个常见命令的学习,具体如下: 一.RHEL7系统的安装 首先是VMware WorkStation 12.0软件的安装,然后是RHEL7 ...

  5. 2、CentOS7密码重置

    一.重启系统,在开机过程中,快速按下键盘上的方向键↑和↓.目的是告知引导程序,我们需要在引导页面选择不同的操作,以便让引导程序暂停.  以下是暂停后的界面,可以查看下方的英文可知↑和↓的作用.  二. ...

  6. ts中基本数据类型(上)

      /* 定义数组*/ var arr: number[] = [1, 2, 3]; var arr1: Array<number> = [1, 2, 3]; var arr2: [str ...

  7. mysql必知必会--MySQL简介

    什么是MySQL MySQL已经存在很久了,它在世界范围内得到了广泛的安装和使用. 为什么有那么多的公司和开发人员使用MySQL?以下列出其原因. 成本--MySQL是开放源代码的,一般可以免费使用( ...

  8. Elasticsearch必知必会的干货知识一:ES索引文档的CRUD

    ​ 若在传统DBMS 关系型数据库中查询海量数据,特别是模糊查询,一般我们都是使用like %查询的值%,但这样会导致无法应用索引,从而形成全表扫描效率低下,即使是在有索引的字段精确值查找,面对海量数 ...

  9. linux下安装lxml包

    爬虫项目需要用到lxml包,解析html文件,但是linux服务器没有lxml包, 服务器中python版本是3.8. 直接使用命令安装: pip install lxml 中途会报错,错误提示我没有 ...

  10. 关于MY Sql 查询锁表信息和解锁表

    1.查询锁住表信息 show OPEN TABLES where In_use > 0; 2.查看进程  show processlist; 3.解开锁住的表 需要杀掉锁住表的相关进程Id. k ...