zoukankan      html  css  js  c++  java
  • PIE SDK内存矢量数据的创建

      

    1.功能简介

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

          

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

        PIE支持多种矢量数据的创建,下面对矢量数据格式的内存矢量数据创建功能进行介绍。

    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

    CreateFeatureDataset(…)

    创建要素数据集

    Carto.LayerFactory

    CreateDefaultFeatureLayer(…)

    创建矢量图层

    Geometry.SpatialReferenceFactory

    CreateSpatialReference(string strWkt)

    创建空间参考

    IFeatureDataset

    CreateNewFeature()

    创建新要素

    IField

    Name,AliasName,DefaultValue

    字段属性

    IFields

    AddField(IField ptrField)

    添加字段

    IFeature

    SetValue(int nIndex, object field)

    设置字段值

    IFeatureClass

    AddFeature(IFeature ptrFeature)

    添加要素

    2.4. 示例代码

    项目路径

    百度云盘地址下/PIE示例程序/04数据操作/02.内存矢量数据的创建

    视频路径

    百度云盘地址下/PIE视频教程/04数据操作/02.内存矢量数据的创建.avi

    示例代码

     1     /// <summary>
     2         /// 创建内存矢量数据
     3         /// </summary>
     4         /// <param name="sender"></param>
     5         /// <param name="e"></param>
     6         private void toolStripButton_CreateMemShpData_Click(object sender, EventArgs e)
     7         { //1设置字段
     8             IField field1 = new Field("Name", FieldType.OFTString, 50, 1);
     9             field1.Name = "Name";
    10             field1.AliasName = "名称";
    11 
    12             IField field2 = new Field("Level", FieldType.OFTInteger, 50, 1);
    13             field2.Name = "Level";
    14             field2.AliasName = "级别";
    15 
    16             //2添加字段
    17             IFields fields = new Fields();
    18             fields.AddField(field1);
    19             fields.AddField(field2);
    20 
    21             //3创建空间参考信息
    22             ISpatialReference spatialReference = SpatialReferenceFactory.CreateSpatialReference((int)PIE.Geometry.GeoCSType.GeoCSType_WGS1984);
    23             //4创建矢量要素集
    24             IFeatureDataset newFeatureDataset = DatasetFactory.CreateFeatureDataset("", fields, GeometryType.GeometryPoint, spatialReference, "MEM");
    25 
    26             #region 5添加point 信息
    27             //A POINT
    28             IFeature feature = newFeatureDataset.CreateNewFeature();
    29             IPoint point = new PIE.Geometry.Point();
    30             point.PutCoords(90, 45);
    31             feature.Geometry = point as IGeometry;
    32 
    33             feature.FID = 02;
    34             feature.SetValue(0, "A");
    35             feature.SetValue(1, 2);
    36 
    37             //B POINT
    38             IFeature feature2 = newFeatureDataset.CreateNewFeature();
    39             IPoint point2 = new PIE.Geometry.Point();
    40             point2.PutCoords(93, 40);
    41             feature2.Geometry = point2 as IGeometry;
    42 
    43             feature2.FID = 01;
    44             feature2.SetValue(0, "B");
    45             feature2.SetValue(1, 3);
    46             #endregion
    47 
    48             newFeatureDataset.Name = "LayerA";//设置图层的名称
    49             //第一种方法
    50    //IFeatureLayer featureLayer = LayerFactory.CreateDefaultFeatureLayer(newFeatureDataset);
    51             //第二种方法
    52             IFeatureLayer featureLayer = new FeatureLayer();
    53            // IFeatureClass fClass = new FeatureClass(newFeatureDataset);
    54             featureLayer.FeatureClass = new FeatureClass(newFeatureDataset);
    55             featureLayer.FeatureClass.AddFeature(feature);
    56             featureLayer.FeatureClass.AddFeature(feature2);
    57 
    58             mapControlMain.FocusMap.AddLayer(featureLayer as ILayer);          mapControlMain.PartialRefresh(ViewDrawPhaseType.ViewAll);
    59         }
    View Code

    2.5. 示例截图

  • 相关阅读:
    最炫数学风
    A fine property of the convective terms of axisymmetric MHD system, and a regularity criterion in terms of $om^ t$
    Regularity criteria for NSE 4: $p_3u$
    2017-2018-2 PDE 讨论班
    2017-2018-2点集拓扑
    轴对称 Navier-Stokes 方程组的点态正则性准则 II
    轴对称 Navier-Stokes 方程组的点态正则性准则 I
    二维空间中的一个向量场的散度
    word插入公式不自动斜体的解决办法
    2017-2018-2课表
  • 原文地址:https://www.cnblogs.com/PIESat/p/10168443.html
Copyright © 2011-2022 走看看