zoukankan      html  css  js  c++  java
  • PIE SDK打开矢量数据

     

    1. 功能简介

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

           

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

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

    2. 功能实现说明

    2.1 Shape数据介绍

        Shapefile是由ESRI开发后被广泛应用的数据格式,它采用文件的方式分开存储数据的控件信息和属性信息,但其不能存储拓扑关系,具有简单、快速显示的优点。一个Shape数据的文件结构如下所示:

     

    [Shape数据文件结构]

    编号

    后缀

    文件说明

    1

    .shp

    基本文件,存储地理要素的几何图形信息;

    2

    .dbf

    基本文件,存储地理要素的属性信息;

    3

    .shx

    基本文件,存储图形要素与属性信息的索引;

    4

    .prj

    可选文件,存储数据的空间参考信息;

    5

    .sbn/.sbx

    可选文件,存储数据的空间索引信息(ESRI创建的空间索引);

    6

    .qix

    可选文件,存储数据的空间索引信息(PIE创建的空间索引);

    [Shape数据文件结构说明]

    2.2 实现思路及原理说明

    第一步

    根据文件路径打开矢量数据集;

    第二步

    通过矢量数据集创建矢量图层;

    2.3 核心接口与方法

    接口/类

    方法

    说明

    DataSource.DatasetFactory

    OpenFeatureDataset

    打开矢量数据集

    Carto.LayerFactory

    CreateDefaultFeatureLayer

    创建矢量图层

    2.4 示例代码

    项目路径

    百度云盘地址下/PIE示例程序/03.数据加载/01.打开矢量数据

    数据路径

    百度云盘地址下/PIE示例数据/矢量数据/Shape/省级行政区.shp

    视频路径

    百度云盘地址下/PIE视频教程/03.数据加载/01.打开矢量数据.avi

    示例代码

     1 方法(一)
     2   // 获得要打开Shape数据的路径
     3   OpenFileDialog openFileDialog = new OpenFileDialog();
     4   openFileDialog.Filter = "矢量数据(*.shp)|*.shp";
     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    // 获得要打开Shape数据的路径
    16    OpenFileDialog openFileDialog = new OpenFileDialog();
    17    openFileDialog.Filter = "矢量数据(*.shp)|*.shp";
    18    if (openFileDialog.ShowDialog() != DialogResult.OK) return;
    19    // 打开矢量数据集
    20    string filePath= openFileDialog.FileName;
    21    IFeatureDataset fDataset = PIE.DataSource.DatasetFactory.OpenFeatureDataset(filePath);
    22    if (fDataset == null) return;
    23    // 创建矢量图层
    24    IFeatureLayer fLayer = PIE.Carto.LayerFactory.CreateDefaultFeatureLayer(fDataset);
    25    if (fLayer == null) return;
    26    // 添加图层到地图并刷新
    27    mapControlMain.FocusMap.AddLayer(fLayer as ILayer);   mapControlMain.ActiveView.PartialRefresh(PIE.Carto.ViewDrawPhaseType.ViewAll);
    View Code

    2.5 示例截图

     

  • 相关阅读:
    稳扎稳打Silverlight(13) 2.0交互之鼠标事件和键盘事件
    稳扎稳打Silverlight(17) 2.0数据之详解DataGrid, 绑定数据到ListBox
    再接再厉VS 2008 sp1 + .NET 3.5 sp1(2) Entity Framework(实体框架)之详解 Linq To Entities 之一
    稳扎稳打Silverlight(8) 2.0图形之基类System.Windows.Shapes.Shape
    稳扎稳打Silverlight(11) 2.0动画之ColorAnimation, DoubleAnimation, PointAnimation, 内插关键帧动画
    稳扎稳打Silverlight(21) 2.0通信之WebRequest和WebResponse, 对指定的URI发出请求以及接收响应
    稳扎稳打Silverlight(16) 2.0数据之独立存储(Isolated Storage)
    稳扎稳打Silverlight(9) 2.0画笔之SolidColorBrush, ImageBrush, VideoBrush, LinearGradientBrush, RadialGradientBrush
    稳扎稳打Silverlight(23) 2.0通信之调用WCF的双向通信(Duplex Service)
    游戏人生Silverlight(1) 七彩俄罗斯方块[Silverlight 2.0(c#)]
  • 原文地址:https://www.cnblogs.com/PIESat/p/10142687.html
Copyright © 2011-2022 走看看