• PIE SDK矢量数据的读取


     

    1.功能简介

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

        

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

        目前PIE SDK支持多种数据格式的数据读取,下面对矢量数据格式的数据读取功能进行介绍。

    2.功能实现说明

    2.1. 矢量数据的读取

    2.2. 实现思路及原理说明

    第一步

    获取要读取数据的数据集

    第二步

    从数据集里面读取需要读取的信息

    2.3. 核心接口与方法

    接口/类

    方法/属性

    说明

    IFeatureDataset

    SpatialReference

    空间参考

     

     

     

     

    IFeatureClass

    IFeature GetFeature (System.Int64 nFID)

    获取要素类的一个要素

    GetFeatureCount()

    得到要素数量

    GetFields()

    获取所有字段

    GetFeatureDataset ()

    获取挂载的矢量数据集

    GetName()

    数据名称

    IFields

    GetFieldIndex()

    得到字段的索引值

    IFeatureCursor

    NextFeature

    获取下一个要素

     

    2.4. 示例代码

    项目路径

    百度云盘地址下/PIE示例程序/04数据操作/03矢量数据集的读取

    数据路径

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

    视频路径

        百度云盘地址下/PIE视频教程/04数据操作/03矢量数据集的读取.avi

    示例代码

     1          /// <summary>
     2         /// 矢量数据的读取
     3         /// </summary>
     4         /// <param name="sender"></param>
     5         /// <param name="e"></param>
     6         private void toolStripButton_ReadShpDataInfo_Click(object sender, EventArgs e)
     7         {
     8             //1.获取要读取的数据
     9             ILayer layer = mapControlMain.FocusMap.GetLayer(0);
    10             IFeatureClass featureClass = (layer as IFeatureLayer).FeatureClass;
    11 
    12             //2.要素数据集信息的读取
    13             string fileName = featureClass.GetName();
    14             long featureCount = featureClass.GetFeatureCount();
    15             string spatialReference = featureClass.GetFeatureDataset().SpatialReference.Name;// featureClass.SpatialReference.ExportToWkt();
    16             string message = string.Format("数据名称:{0};
    要素的数量:{1};
    数据空间参考:{2}", fileName, featureCount, spatialReference);
    17             MessageBox.Show(message, string.Format("{0}数据的信息:", fileName));
    18 
    19             //要素的信息
    20             IFeature feature = featureClass.GetFeature(0);
    21             IFields fields = featureClass.GetFields();
    22             int fieldIndex = fields.GetFieldIndex("NAME");
    23             IField field = fields.GetField(fieldIndex);
    24             string fieldValue = field.Name;
    25             string fieldInfo = "";
    26             while (feature != null)
    27             {
    28                 fieldInfo += fieldValue + "字段值为:
    " + feature.GetValue(fieldValue) + "
    ";
    29                 MessageBox.Show(fieldInfo, "要素的信息");
    30                 feature = null;//数据量太大,示例只读取一条要素的信息
    31                 //feature = featureClass.GetNextFeature();
    32             }     
    33         }
    View Code 

    2.5. 示例截图

         

  • 相关阅读:
    【记录】ASP.NET MVC MapRoute .htm 不起作用
    【记录】ASP.NET MVC JsonResult JsonRequestBehavior AllowGet
    爱与恨的抉择:ASP.NET 5+EntityFramework 7
    EntityFramework 7 Linq Contains In 奇怪问题
    EntityFramework 7 Left Join Where is error(Test record)
    EntityFramework 7 Left Join Where Select 奇怪问题
    EntityFramework 7 Join Count LongCount 奇怪问题
    EntityFramework 7 OrderBy Skip Take-计算排序分页 SQL 翻译
    EntityFramework 7 如何查看执行的 SQL 代码?
    写点东西来吐槽一下自己,真是无语了。
  • 原文地址:https://www.cnblogs.com/PIESat/p/10168540.html
Copyright © 2020-2023  润新知