PIE SDK打开栅格数据

时间:2025-04-10 16:36:25

1. 功能简介

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

PIE SDK打开栅格数据       PIE SDK打开栅格数据

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

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

2. 功能实现说明

2.1  栅格数据介绍

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

PIE SDK打开栅格数据

[Tiff数据文件结构]

编号

后缀

文件说明

1

.tiff

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

2

.jpg

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

3

.rpb

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

4

.xml

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

5

.ovr/aux.xml

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

[Tiff数据文件结构说明]

2.2 实现思路及原理说明

第一步

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

第二步

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

2.3 核心接口与方法

接口/类

方法

说明

DataSource.DatasetFactory

OpenRasterDataset

打开栅格数据集

Carto.LayerFactory

CreateDefaultRasterLayer

创建栅格图层

2.4 示例代码

项目路径

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

数据路径

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

视频路径

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

示例代码

 方法(一)
// 获得要打开Shape数据的路径
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Filter = "栅格数据(*.tiff)|*.tif;*.tiff";
if (openFileDialog.ShowDialog() != DialogResult.OK) return;
// 打开图层
string filePath = openFileDialog.FileName;
ILayer layer = PIE.Carto.LayerFactory.CreateDefaultLayer(filePath);
if (layer == null) return;
// 添加图层到地图并刷新
mapControMain.FocusMap.AddLayer(layer);
mapControMain.ActiveView.PartialRefresh(PIE.Carto.ViewDrawPhaseType.ViewAll); 方法(二)
// 获得要打开栅格数据的路径
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Filter = "栅格数据(*.tiff)|*.tif;*.tiff";
if (openFileDialog.ShowDialog() != DialogResult.OK) return;
// 打开栅格数据集
string filePath= openFileDialog.FileName;
IRasterDataset rDataset = PIE.DataSource.DatasetFactory.OpenRasterDataset(filePath,OpenMode.ReadOnly);
if (rDataset == null) return;
// 创建栅格图层
IRasterLayer rasterlayer = PIE.Carto.LayerFactory.CreateDefaultRasterLayer(rDataset);
if (rasterlayer == null) return;
// 添加图层到地图并刷新
mapControlMain.FocusMap.AddLayer(rasterlayer as ILayer);
mapControlMain.ActiveView.PartialRefresh(PIE.Carto.ViewDrawPhaseType.ViewAll);

2.5 示例截图

PIE SDK打开栅格数据