zoukankan      html  css  js  c++  java
  • 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. 示例截图

         

  • 相关阅读:
    CWMP开源代码研究6——libcwmp动态库开发
    CWMP开源代码研究5——CWMP程序设计思想
    CWMP开源代码研究4——认证流程
    CWMP开源代码研究2——easycwmp安装和学习
    CWMP开源代码研究3——ACS介绍
    CWMP开源代码研究1——开篇之作
    usb驱动开发之大结局
    usb驱动开发24之接口驱动
    usb驱动开发23之驱动生命线
    usb驱动开发22之驱动生命线
  • 原文地址:https://www.cnblogs.com/PIESat/p/10168540.html
Copyright © 2011-2022 走看看