PIE SDK矢量柵格化算法

1.算法功能簡介

  矢量柵格化,由矢量數據向柵格數據的轉換通常比較方便.對於點、線目標,由其所在的柵格行、列數表示,對於面狀目標,則需斷定落人該面積內的像元.一般柵格(像元)尺寸均大於原來座標表示的分辨率,因此若將柵格化數據再反轉回去,則不可能達到原來矢量數據的精度.將矢量數據轉化爲柵格數據,主要用於空間分析、多邊形疊置等.算法

  PIE支持矢量柵格化算法功能的執行,下面對該算法功能進行介紹。ide

2.算法功能實現說明

2.1 實現步驟

第一步編碼

算法參數設置spa

第二步code

算法執行blog

第三步索引

結果顯示ci

2.2 算法參數

算法名稱event

矢量柵格化table

C#算法DLL

PIE.CommonAlgo.dll

C#算法名稱

PIE.CommonAlgo.VectorToRasterAlgo

參數結構體

VectorToRaster_Exchange_Info

參數說明

strInputFile

String

要轉換的矢量數據文件

nFieldIndex

Int

轉換所依賴的字段索引

strOutputFile

String

轉換後的柵格數據文件路徑

strOutputFileType

String

根據輸出類型得到文件編碼類型

.tif/.tiff——GTiff

.img—————HFA

其餘—————ENVI

bStandardFile

bool

是否指定

FALSE : 基於指定大小 xy有效,  true : 基於影像大小 strStandardFile有效

x

Int

指定輸出圖像的列數

y

Int

指定輸出圖像的行數

strStandardFile

String

基準影像路徑

若是選擇基準影像,則輸出圖像的大小和基準影像大小相同

bHasNoData

bool

是否設置無效值

dbNoData

double

無效值

 

2.3 示例代碼

數據路徑

百度雲盤地址下/PIE示例數據/柵格數據/ 08.圖像分類/ distanceClassify-Julei.tif

 1         /// <summary>
 2         ///  矢量柵格化算法 本示例數據用的是將distanceClassify-Julei.tif數據進行矢量化的結果進行柵格化
 3         /// </summary>
 4         public void VectorToRaster()
 5         {
 6             VectorToRaster_Exchange_Info info = new VectorToRaster_Exchange_Info();
 7             info.strInputFile = @"D:\data\圖像分類2\distanceClassify-Julei_Re.shp";
 8             info.strOutputFile = @"D:\data\圖像分類2\VectorToRaster.tif";
 9             info.strOutputFileType = "GTiff";//GTiff、HAF或者ENVI
10             info.nFieldIndex = 1;//選擇字段的索引
11 
12             info.bStandardFile = false;//是否指定;false:基於指定大小 xy有效;true:基於影像大小 strStandardFile有效
13             info.strStandardFile = "";//基準影像路徑
14             info.x = 1313;//指定輸出的柵格列數
15             info.y = 1215;//指定輸出的柵格行數
16 
17             info.bHasNoData = true;//是否設置無效值
18             info.dbNoData = 65535;//無效值
19                              
20             PIE.SystemAlgo.ISystemAlgo algo = PIE.SystemAlgo.AlgoFactory.Instance().CreateAlgo("PIE.CommonAlgo.dll", "PIE.CommonAlgo.VectorToRasterAlgo");
21             if (algo == null) return;
22 
23             PIE.SystemAlgo.ISystemAlgoEvents algoEvents = algo as PIE.SystemAlgo.ISystemAlgoEvents;
24             algo.Name = "矢量柵格化";
25             algo.Params = info;
26             bool result = PIE.SystemAlgo.AlgoFactory.Instance().ExecuteAlgo(algo);
27             if (result)
28             {
29                 MessageBox.Show("矢量柵格化算法執行成功");
30                 ILayer layer = LayerFactory.CreateDefaultLayer(info.strOutputFile);
31                 if (layer == null) return;
32                 m_HookHelper.ActiveView.FocusMap.AddLayer(layer);
33                 m_HookHelper.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll);
34             }
35         }
View Code

2.4 示例截圖

 

相關文章
相關標籤/搜索