GIS將地理空間數據表示爲矢量數據和柵格數據。矢量數據模型使用點、線和多邊形來表示具備清晰空間位置和邊界的空間要素,如控制點、河流和宗地等,每一個要素被賦予一個ID,以便與其屬性相關聯。柵格數據模型使用一個格網和格網元胞(像元)表明空間要素,元胞值表示該元胞位置的空間要素屬性。柵格數據模型適用於表示連續的要素,如海拔和降水量。ide
[矢量數據模型] [柵格數據模型]spa
PIE支持多種矢量數據的打開,下面咱們就介紹如何在PIE中打開Shape類型的矢量數據。code
常見的柵格數據文件格式包括tiff、tif、img、dat等,它們採用文件的方式存儲相關信息,一個Tiff數據的文件結構以下所示(GF1數據爲例):視頻
[Tiff數據文件結構]xml
編號blog |
後綴教程 |
文件說明接口 |
1ci |
.tiffstring |
基本文件,存儲柵格數據的像素、座標系、座標等信息; |
2 |
.jpg |
可選文件,柵格數據的示意圖; |
3 |
.rpb |
可選文件,座標參數文件; |
4 |
.xml |
可選文件,數據相關信息文件; |
5 |
.ovr/aux.xml |
可選文件,柵格數據金字塔文件; |
[Tiff數據文件結構說明]
第一步 |
經過文件路徑打開柵格數據集 |
第二步 |
經過柵格數據集建立柵格圖層 |
接口/類 |
方法 |
說明 |
DataSource.DatasetFactory |
OpenRasterDataset |
打開柵格數據集 |
Carto.LayerFactory |
CreateDefaultRasterLayer |
建立柵格圖層 |
項目路徑 |
百度雲盤地址下/PIE示例程序/03.數據加載/02.打開柵格數據 |
數據路徑 |
百度雲盤地址下/PIE示例數據/柵格數據/01.GF1/GF1_PMS1_E116.5_N39.4_20131127_L1A0000117600/xxx.tif |
視頻路徑 |
百百度雲盤地址下/PIE視頻教程/03.數據加載/02.打開柵格數據.avi |
示例代碼 |
|
1 方法(一) 2 // 得到要打開Shape數據的路徑 3 OpenFileDialog openFileDialog = new OpenFileDialog(); 4 openFileDialog.Filter = "柵格數據(*.tiff)|*.tif;*.tiff"; 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 // 得到要打開柵格數據的路徑 16 OpenFileDialog openFileDialog = new OpenFileDialog(); 17 openFileDialog.Filter = "柵格數據(*.tiff)|*.tif;*.tiff"; 18 if (openFileDialog.ShowDialog() != DialogResult.OK) return; 19 // 打開柵格數據集 20 string filePath= openFileDialog.FileName; 21 IRasterDataset rDataset = PIE.DataSource.DatasetFactory.OpenRasterDataset(filePath,OpenMode.ReadOnly); 22 if (rDataset == null) return; 23 // 建立柵格圖層 24 IRasterLayer rasterlayer = PIE.Carto.LayerFactory.CreateDefaultRasterLayer(rDataset); 25 if (rasterlayer == null) return; 26 // 添加圖層到地圖並刷新 27 mapControlMain.FocusMap.AddLayer(rasterlayer as ILayer); 28 mapControlMain.ActiveView.PartialRefresh(PIE.Carto.ViewDrawPhaseType.ViewAll); |