PIE SDK内存矢量数据的建立

  

1.功能简介

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

      

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

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

2.功能实现说明

2.1. Shape数据介绍

    Shapefile是由ESRI开发后被普遍应用的数据格式,它采用文件的方式分开存储数据的控件信息和属性信息,但其不能存储拓扑关系,具备简单、快速显示的优势。一个Shape数据的文件结构以下所示:code

 

[Shape数据文件结构]视频

编号blog

后缀教程

文件说明索引

1接口

.shpip

基本文件,存储地理要素的几何图形信息;

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

相关文章
相关标签/搜索