PIE SDK打開矢量數據

 

1. 功能簡介

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

       

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

    PIE支持多種矢量數據的打開,下面咱們就介紹如何在PIE中打開Shape類型的矢量數據。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

OpenFeatureDataset

打開矢量數據集

Carto.LayerFactory

CreateDefaultFeatureLayer

建立矢量圖層

2.4 示例代碼

項目路徑

百度雲盤地址下/PIE示例程序/03.數據加載/01.打開矢量數據

數據路徑

百度雲盤地址下/PIE示例數據/矢量數據/Shape/省級行政區.shp

視頻路徑

百度雲盤地址下/PIE視頻教程/03.數據加載/01.打開矢量數據.avi

示例代碼

 1 方法(一)
 2   // 得到要打開Shape數據的路徑
 3   OpenFileDialog openFileDialog = new OpenFileDialog();
 4   openFileDialog.Filter = "矢量數據(*.shp)|*.shp";
 5   if (openFileDialog.ShowDialog() != DialogResult.OK) return;
 6   // 打開圖層
 7   string filePath = openFileDialog.FileName;
 8   ILayer layer = PIE.Carto.LayerFactory.CreateDefaultLayer(filePath);
 9   if (layer == null) return;
10   // 添加圖層到地圖並刷新
11   mapControMain.FocusMap.AddLayer(layer);
12  mapControMain.ActiveView.PartialRefresh(PIE.Carto.ViewDrawPhaseType.ViewAll);
13 
14 方法(二)
15    // 得到要打開Shape數據的路徑
16    OpenFileDialog openFileDialog = new OpenFileDialog();
17    openFileDialog.Filter = "矢量數據(*.shp)|*.shp";
18    if (openFileDialog.ShowDialog() != DialogResult.OK) return;
19    // 打開矢量數據集
20    string filePath= openFileDialog.FileName;
21    IFeatureDataset fDataset = PIE.DataSource.DatasetFactory.OpenFeatureDataset(filePath);
22    if (fDataset == null) return;
23    // 建立矢量圖層
24    IFeatureLayer fLayer = PIE.Carto.LayerFactory.CreateDefaultFeatureLayer(fDataset);
25    if (fLayer == null) return;
26    // 添加圖層到地圖並刷新
27    mapControlMain.FocusMap.AddLayer(fLayer as ILayer);   mapControlMain.ActiveView.PartialRefresh(PIE.Carto.ViewDrawPhaseType.ViewAll);
View Code

2.5 示例截圖

 

相關文章
相關標籤/搜索