PIE SDK矢量數據的建立

 

1.功能簡介

    GIS將地理空間數據表示爲矢量數據和柵格數據。矢量數據模型使用點、線和多邊形來表示具備清晰空間位置和邊界的空間要素,如控制點、河流和宗地等,每一個要素被賦予一個ID,以便與其屬性相關聯。柵格數據模型使用一個格網和格網元胞(像元)表明空間要素,元胞值表示該元胞位置的空間要素屬性。柵格數據模型適用於表示連續的要素,如海拔和降水量。ide

   

  [矢量數據模型]                                             [柵格數據模型]spa

    PIE支持多種矢量數據的建立,下面對矢量數據格式的數據建立功能進行介紹。code

2.功能實現說明

2.1 Shape數據介紹

    Shapefile是由ESRI開發後被普遍應用的數據格式,它採用文件的方式分開存儲數據的控件信息和屬性信息,但其不能存儲拓撲關係,具備簡單、快速顯示的優勢。一個Shape數據的文件結構以下所示:視頻

 

[Shape數據文件結構]blog

編號教程

後綴索引

文件說明接口

1ci

.shp開發

基本文件,存儲地理要素的幾何圖形信息;

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)

建立空間參考

IField

Name,AliasName,DefaultValue

字段屬性

IFields

AddField(IField ptrField)

添加字段

IFeature

SetValue(int nIndex, object field)

設置字段值

IFeatureClass

AddFeature(IFeature ptrFeature)

添加要素

2.4示例代碼

項目路徑

百度雲盤地址下/PIE示例程序/04數據操做/01.矢量數據的建立

視頻路徑

百度雲盤地址下/PIE視頻教程/04數據操做/01.矢量數據的建立.avi

示例代碼

 1      //建立矢量要素數據集
 2             //1建立路徑
 3             SaveFileDialog saveFileDialog = new SaveFileDialog();
 4             saveFileDialog.Title = "待建立的矢量要素數據集";
 5             saveFileDialog.Filter = "ShapeFile|*.shp";
 6             if (saveFileDialog.ShowDialog() != DialogResult.OK) return;
 7 
 8             //2設置字段
 9             IField field1 = new Field("Name", FieldType.OFTString, 50, 1);
10             field1.Name = "Name";
11             field1.AliasName = "名稱";
12 
13             IField field2 = new Field("Level", FieldType.OFTInteger, 50, 1);
14             field2.Name = "Level";
15             field2.AliasName = "級別";
16 
17             //3添加字段
18             IFields fields = new Fields();
19             fields.AddField(field1);
20             fields.AddField(field2);
21 
22             string path = saveFileDialog.FileName;
23             //4建立空間參考信息
24             ISpatialReference spatialReference = SpatialReferenceFactory.CreateSpatialReference((int)PIE.Geometry.GeoCSType.GeoCSType_WGS1984);
25             //5建立矢量要素集
26             IFeatureDataset newFeatureDataset = DatasetFactory.CreateFeatureDataset(path, fields, GeometryType.GeometryPoint, spatialReference, "SHP");
27 
28             #region 6添加point 信息
29             //A POINT
30             IFeature feature = newFeatureDataset.CreateNewFeature();
31             IPoint point = new PIE.Geometry.Point();
32             point.PutCoords(90, 45);
33             feature.Geometry = point as IGeometry;
34 
35             feature.FID = 02;
36             feature.SetValue(0, "A");
37             feature.SetValue(1, 2);
38 
39             //B POINT
40             IFeature feature2 =newFeatureDataset.CreateNewFeature();
41             IPoint point2 = new PIE.Geometry.Point();
42             point2.PutCoords(93, 40);
43             feature2.Geometry = point2 as IGeometry;
44 
45             feature2.FID = 01;
46             feature2.SetValue(0, "B");
47             feature2.SetValue(1, 3);
48             #endregion
49   //將要素字段信息添加進矢量數據集裏面
50             newFeatureDataset.AddFeature(feature);
51             newFeatureDataset.AddFeature(feature2);
52             //第一種方法:
53             IFeatureLayer featureLayer = new FeatureLayer(); 
54             IFeatureClass fClass = new FeatureClass(newFeatureDataset);
55             featureLayer.FeatureClass = fClass;
56 
57             //第二種方法:
58    // IFeatureLayer featureLayer = LayerFactory.CreateDefaultFeatureLayer(newFeatureDataset);
59             //建立空間索引,爲要素數據集建立空間索引
60             newFeatureDataset.CreateSpatialIndex(1);
61             //(featureLayer.FeatureClass as IFeatureDataset).CreateSpatialIndex(2);     
62             m_mapControl.FocusMap.AddLayer(featureLayer as ILayer);          m_mapControl.PartialRefresh(ViewDrawPhaseType.ViewAll);
View Code

2.5示例截圖

 

生成的shape文件,格式以下:

  

相關文章
相關標籤/搜索