PIE SDK柵格數據的建立

 

1. 功能簡介ide

   目前在地理信息領域中數據包括矢量和柵格兩種數據組織形式。每一種數據有不一樣的數據格式,目前PIE SDK支持多種數據格式的數據建立,下面對柵格數據格式的數據建立功能進行介紹。spa

2. 功能實現說明code

2.1. 實現思路及原理說明orm

第一步視頻

獲取要讀取的柵格數據blog

第二步教程

獲取柵格數據的讀取接口

第三步ip

構建新的柵格數據集ci

第四步

柵格數據寫入

第五步

設置空間參考

第六步

設置仿射變換

2.2. 核心接口與方法

接口/類

方法/屬性

說明

 

 

 

 

IRasterDataset

GetBandCount()

獲取波段數

Read()

柵格讀取

Write()

柵格寫入

GetGeoTransform()

獲取仿射變換參數

SetGeoTransform()

設置仿射變換參數

SpatialReference

空間參考

DataSource.DatasetFactory

CreateRasterDataset()

空間柵格數據集

2.3. 示例代碼

項目路徑

百度雲盤地址下/PIE示例程序/04數據操做/10柵格數據的建立

數據路徑

百度雲盤地址下/PIE示例數據/柵格數據/04.World/World.tif

視頻路徑

百度雲盤地址下/PIE視頻教程/04數據操做/10柵格數據的建立.avi

示例代碼

 1         /// <summary>
 2         /// 建立柵格數據
 3         /// </summary>
 4         /// <param name="sender"></param>
 5         /// <param name="e"></param>
 6         private void toolStripButton_CreateRasterData_Click(object sender, EventArgs e)
 7         {
 8             //1獲取當前的柵格圖層
 9             //能夠自定義打開一個tiff柵格數據DatasetFactory.OpenRasterDataset(strPath,OpenMode.ReadOnly);
10             IRasterDataset rasterDataset = (mapControlMain.FocusMap.GetLayer(0) as IRasterLayer).Dataset;
11             int BandCount = rasterDataset.GetBandCount();
12             //2柵格數據範圍等信息的讀取
13             IEnvelope envelop = rasterDataset.GetExtent();
14             int xSize = rasterDataset.GetRasterXSize();//
15             int ySize = rasterDataset.GetRasterYSize();//
16             UInt16[] array = new UInt16[xSize * ySize * BandCount];
17             int[] bandMap = new int[BandCount];
18             for (int i = 0; i < BandCount; i++)
19             {
20                 bandMap[i] = i + 1;
21             }
22             SaveFileDialog saveFileDialog = new SaveFileDialog();
23             saveFileDialog.Title = "請選擇要保存的路徑:";
24             saveFileDialog.Filter = "Raster File|*.tiff";
25             if (saveFileDialog.ShowDialog() != DialogResult.OK) return;
26             //3柵格數據讀取
27             bool OK = rasterDataset.Read(0, 0, xSize, ySize, array, xSize, ySize, PixelDataType.UInt16, BandCount, bandMap);
28             //4構建柵格數據集
29             IRasterDataset newRasterDataset = DatasetFactory.CreateRasterDataset(saveFileDialog.FileName, xSize, ySize, BandCount, PixelDataType.UInt16, "GTiff", null);
30             //5設設置空間參考
31             newRasterDataset.SpatialReference = rasterDataset.SpatialReference;
32             //6柵格數據的寫入
33             bool OK1 = newRasterDataset.Write(0, 0, xSize, ySize, array, xSize, ySize, PixelDataType.UInt16, BandCount, bandMap);
34             //7設置仿射變換
35             double[] geoTrans = rasterDataset.GetGeoTransform();
36             newRasterDataset.SetGeoTransform(geoTrans);
37             //8建立圖層添加到map中
38             ILayer layer = LayerFactory.CreateDefaultRasterLayer(newRasterDataset) as ILayer;
39             //第一種添加數據的方法
40             mapControlMain.FocusMap.AddLayer(layer, 0);
41             //第二種添加數據方法
42             //  mapControl1.AddLayerFromFile(saveFileDialog.FileName, 0);
43             mapControlMain.PartialRefresh(ViewDrawPhaseType.ViewAll);
44         }
View Code

2.4. 示例截圖

相關文章
相關標籤/搜索