1.      功能简介

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

      

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

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

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示例程序/02.打开栅格数据

数据路径

百度云盘地址下/PIE示例数据/栅格数据/GF1下的tiff数据

视频路径

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

示例代码

方法(一)

    // 获得要打开数据的路径

    OpenFileDialog openFileDialog = new OpenFileDialog();

    openFileDialog.Filter = “Raster Files|*.tif;*.tiff;*.dat;*.bmp;*.img;*.jpg|All Files|*.*”;

    if (openFileDialog.ShowDialog() != DialogResult.OK) return;

 

    // 打开图层

    string filePath = openFileDialog.FileName;

    ILayer layer = PIE.Carto.LayerFactory.CreateDefaultLayer(filePath);

    if (layer == null) return;

 

    // 添加图层到地图并刷新

    mapControlMain.FocusMap.AddLayer(layer);

    mapControlMain.ActiveView.PartialRefresh(PIE.Carto.ViewDrawPhaseType.ViewAll);

 

方法(二)

    // 获得要打开的数据的路径

    OpenFileDialog openFileDialog = new OpenFileDialog();

    openFileDialog.Filter = “Raster Files|*.tif;*.tiff;*.dat;*.bmp;*.img;*.jpg|All Files|*.*”;

    if (openFileDialog.ShowDialog() != DialogResult.OK) return;

 

    // 打开栅格数据集

    string filePath = openFileDialog.FileName;

    IRasterDataset rasterDataset = PIE.DataSource.DatasetFactory.OpenRasterDataset(filePath, OpenMode.ReadOnly);

    if (rasterDataset == null) return;

 

    // 创建矢量图层

    IRasterLayer rasterLayer = PIE.Carto.LayerFactory.CreateDefaultRasterLayer(rasterDataset);

    if (rasterLayer == null) return;

 

    // 添加图层到地图并刷新

    mapControlMain.FocusMap.AddLayer(rasterLayer as ILayer);

    mapControlMain.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll);

2.5           示例截图

 

版权声明:本文为PIESat原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/PIESat/p/10141454.html