PIE SDK內存柵格數據的建立

 

1. 功能簡介ide

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

2. 功能實現說明code

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

第一步視頻

獲取要讀取的柵格數據blog

第二步教程

獲取柵格數據的讀取接口

第三步ip

構建新的柵格數據集內存

第四步

柵格數據寫入

第五步

設置空間參考

第六步

設置仿射變換

2.2.  核心接口與方法

接口/類

方法/屬性

說明

 

 

 

 

IRasterDataset

GetBandCount()

獲取波段數

Read()

柵格讀取

Write()

柵格寫入

GetGeoTransform()

獲取仿射變換參數

SetGeoTransform()

設置仿射變換參數

SpatialReference

空間參考

DataSource.DatasetFactory

CreateRasterDataset()

空間柵格數據集

2.3. 示例代碼

項目路徑

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

數據路徑

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

視頻路徑

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

示例代碼

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

2.4. 示例截圖

相關文章
相關標籤/搜索