PIE SDK打开栅格数据
1. 功能简介
GIS将地理空间数据表示为矢量数据和栅格数据。矢量数据模型使用点、线和多边形来表示具有清晰空间位置和边界的空间要素,如控制点、河流和宗地等,每个要素被赋予一个ID,以便与其属性相关联。栅格数据模型使用一个格网和格网元胞(像元)代表空间要素,元胞值表示该元胞位置的空间要素属性。栅格数据模型适用于表示连续的要素,如海拔和降水量。
[矢量数据模型] [栅格数据模型]
PIE支持多种矢量数据的打开,下面我们就介绍如何在PIE中打开Shape类型的矢量数据。
2. 功能实现说明
2.1 栅格数据介绍
常见的栅格数据文件格式包括tiff、tif、img、dat等,它们采用文件的方式存储相关信息,一个Tiff数据的文件结构如下所示(GF1数据为例):
[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 |
示例代码 |
|
1 方法(一) 2 // 获得要打开Shape数据的路径 3 OpenFileDialog openFileDialog = new OpenFileDialog(); 4 openFileDialog.Filter = "栅格数据(*.tiff)|*.tif;*.tiff"; 5 if (openFileDialog.ShowDialog() != DialogResult.OK) return; 6 // 打开图层 7 string filePath = openFileDialog.FileName; 8 ILayer layer = PIE.Carto.LayerFactory.CreateDefaultLayer(filePath); 9 if (layer == null) return; 10 // 添加图层到地图并刷新 11 mapControMain.FocusMap.AddLayer(layer); 12 mapControMain.ActiveView.PartialRefresh(PIE.Carto.ViewDrawPhaseType.ViewAll); 13 14 方法(二) 15 // 获得要打开栅格数据的路径 16 OpenFileDialog openFileDialog = new OpenFileDialog(); 17 openFileDialog.Filter = "栅格数据(*.tiff)|*.tif;*.tiff"; 18 if (openFileDialog.ShowDialog() != DialogResult.OK) return; 19 // 打开栅格数据集 20 string filePath= openFileDialog.FileName; 21 IRasterDataset rDataset = PIE.DataSource.DatasetFactory.OpenRasterDataset(filePath,OpenMode.ReadOnly); 22 if (rDataset == null) return; 23 // 创建栅格图层 24 IRasterLayer rasterlayer = PIE.Carto.LayerFactory.CreateDefaultRasterLayer(rDataset); 25 if (rasterlayer == null) return; 26 // 添加图层到地图并刷新 27 mapControlMain.FocusMap.AddLayer(rasterlayer as ILayer); 28 mapControlMain.ActiveView.PartialRefresh(PIE.Carto.ViewDrawPhaseType.ViewAll); |
2.5 示例截图