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 } |
2.5. 示例截图