矢量柵格化,由矢量數據向柵格數據的轉換通常比較方便.對於點、線目標,由其所在的柵格行、列數表示,對於面狀目標,則需斷定落人該面積內的像元.一般柵格(像元)尺寸均大於原來座標表示的分辨率,因此若將柵格化數據再反轉回去,則不可能達到原來矢量數據的精度.將矢量數據轉化爲柵格數據,主要用於空間分析、多邊形疊置等.算法
PIE支持矢量柵格化算法功能的執行,下面對該算法功能進行介紹。ide
第一步編碼 |
算法參數設置spa |
第二步code |
算法執行blog |
第三步索引 |
結果顯示ci |
算法名稱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 |
無效值 |
數據路徑 |
百度雲盤地址下/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 } |