PIE-SDK For C++打开栅格数据

摘要:
网格数据模型适用于表示连续特征,例如高程和降水量。[矢量数据模型][光栅数据模型]PIE支持打开多个矢量数据。让我们介绍一下如何在PIE中打开网格数据。

1.功能简介

        GIS将地理空间数据表示为矢量数据和栅格数据。矢量数据模型使用点、线和多边形来表示具有清晰空间位置和边界的空间要素,如控制点、河流和宗地等,每个要素被赋予一个ID,以便与其属性相关联。栅格数据模型使用一个格网和格网元胞(像元)代表空间要素,元胞值表示该元胞位置的空间要素属性。栅格数据模型适用于表示连续的要素,如海拔和降水量。

PIE-SDK For C++打开栅格数据第1张PIE-SDK For C++打开栅格数据第2张

[矢量数据模型]                                                                                              [栅格数据模型]

         PIE支持多种矢量数据的打开,下面我们就介绍如何在PIE中打开栅格数据。

2.功能实现说明

2.1栅格数据介绍

   常见的栅格数据文件格式包括tifftifimgdat等,它们采用文件的方式存储相关信息,一个Tiff数据的文件结构如下所示(GF1数据为例):

PIE-SDK For C++打开栅格数据第3张

[Tiff数据文件结构]

编号

后缀

文件说明

1

.tiff

基本文件,存储栅格数据的像素、坐标系、坐标等信息;

2

.jpg

可选文件,栅格数据的示意图;

3

.rpb

可选文件,坐标参数文件;

4

.xml

可选文件,数据相关信息文件;

5

.ovr/aux.xml

可选文件,栅格数据金字塔文件;

[Tiff数据文件结构说明]

2.2实现思路及原理说明

第一步

通过文件路径打开栅格数据集

第二步

通过栅格数据集创建栅格图层

2.3核心接口与方法

接口/

方法

说明

SysDataSource::DatasetFactory

OpenRasterDataset

打开栅格数据集

SysCarto::LayerFactory

CreateDefaultRasterLayer

创建栅格图层

2.4示例代码

项目路径

百度云盘地址下/PIE示例程序/03.数据加载/02.打开栅格数据

数据路径

百度云盘地址下/PIE示例数据/栅格数据/01.GF1/GF1_PMS1_E116.5_N39.4_20131127_L1A0000117600/xxx.tif

视频路径

百度云盘地址下/PIE视频教程/03.数据加载/02.打开栅格数据.avi

示例代码

方法(一)

QStringfilter = "Raster Files (*.tif *.tiff *.img *.bmp *.jpg *.ldf *.dat *.1bd *.1b);;S57 Files (*.000);;HDF Files (*.hdf *.h5);;NC Files (*.nc);;All Files (*.*)";

        QStringListlstFile = QFileDialog::getOpenFileNames(nullptr, "添加数据", "", filter);

    if (lstFile.count() < 1) return;

    //直接创建layer进行添加

    QList<SysCarto::LayerPtr> lstLayers = SysCarto::LayerFactory::CreateDefaultLayers(lstFile);

    m_ptrHookHelper->GetFocusMap()->AddLayers(lstLayers);

    m_ptrHookHelper->GetActiveView()->Refresh();

 

方法(二)

QStringfilter = "Raster Files (*.tif *.tiff *.img *.bmp *.jpg *.ldf *.dat *.1bd *.1b);;S57 Files (*.000);;HDF Files (*.hdf *.h5);;NC Files (*.nc);;All Files (*.*)";

    QStringListlstFile = QFileDialog::getOpenFileNames(nullptr, "添加数据", "", filter);

    if (lstFile.count() < 1) return;

    foreach (QString_fileinlstFile)

    {

        SysDataSource::RasterDatasetPtrrasterDatasetPtr = SysDataSource::DatasetFactory::Instance()->OpenRasterDataset(_file, SysDataSource::OpenMode::GA_ReadOnly);

        if (rasterDatasetPtr!=nullptr)

        {

            SysCarto::RasterLayerPtrrasterLayerPtr = SysCarto::LayerFactory::Instance()->CreateDefaultRasterLayer(rasterDatasetPtr);

            if (rasterLayerPtr!=nullptr)

            {

                m_ptrHookHelper->GetFocusMap()->AddLayer(rasterLayerPtr);

            }

        }

        m_ptrHookHelper->GetActiveView()->Refresh();

    }

2.5示例截图

PIE-SDK For C++打开栅格数据第4张

免责声明:文章转载自《PIE-SDK For C++打开栅格数据》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇如何通过外部表做数据一致性检查和配平EFCore执行Sql语句的方法:FromSql与ExecuteSqlCommand下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

DataGridView只显示数据源中绑定的字段

场景: 由于环境需要,在获取数据源的时候会获取多于DataGridView中绑定的字段,若不做任何处理,直接将数据源绑定到DataGridView上面,DataGridView就会将数据源中没有绑定的字段显示出来,这样就不符合我们的需求了。 DataGridView中有一个属性AutoGenerateColumns来控制这种情况。 在绑定数据源之前将Aut...

【Oracle】给clob字段插入数据

// 插入 //OracleCommand cmd = "insertInto into GIS_PolygonPoint(PCode,PointColl) values('140134', :var)"; // 修改 //OracleCommand cmd = new OracleCommand("update yd_line set coord=:co...

自主驱动发展 创新引领未来丨第九届数据技术嘉年华大会全议程精彩呈现

简介 时光荏苒,转眼又到了一年一度的总结时刻。第八届数据技术嘉年华大会的精彩演讲还历历在目, 第九届数据技术嘉年华大会在紧锣密鼓的筹备中,即将拉开帷幕。本次大会于2019年11月15日-16日在北京新云南皇冠假日酒店盛大开启,期待现场与大家共畅技术之美。 2019年,对于数据库行业,注定是不平凡的一年。在墨天轮数据库流行度的排行榜上,Oracle 依旧保持...

Vault数据库还原/恢复问题

我们在系统崩溃或Vault库从一台计算机移植到另一台计算机等情况时,可能会通过恢复或还原原Vault数据库来解决问题,本以为这样就可以正常使用了,哪知道会报如下错误:“Vault Failed to establish a connection to the database”。现提供一个我的解决办法:1.从控制面板里面卸载Vault,卸载时请注意在问你是...

Mysql触发器 :当一个表发生插入或更新时,将数据同步到另一张表中

tbl_slope:发生更新的表, checkupdates:更新后插入数据的表 CREATE triggerupdatetbl_slope AFTER update--表示触发器是在激活它的语句之后触发 ontbl_slope for each row --mysql固定语法 BEGIN if EXISTS(SELECT * FROM ch...

R语言基础-数据转换

一、基本转换 读取Excel数据 methods(is) 函数可以查看所有 is 的方法。用于判断数据 methods(as) 函数可以查看所有的转换方法。 二、对大数据集,取数据子集 1.读数据 两种写法 2.随机抽样函数 sample() 对向量抽样 对数据框抽样,取子集 3.删除特定数据 原数据 mtcars 删除1-5列 删除mpg列...