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};\r\n要素的数量:{1};\r\n数据空间参考:{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 + "字段值为:\r\n" + feature.GetValue(fieldValue) + "\r\n";
29                 MessageBox.Show(fieldInfo, "要素的信息");
30                 feature = null;//数据量太大,示例只读取一条要素的信息
31                 //feature = featureClass.GetNextFeature();
32             }     
33         }
View Code 

2.5. 示例截图

     

posted @ 2018-12-24 14:46  PIESAT  阅读(1417)  评论(0编辑  收藏  举报