PIE SDK矢量栅格化算法
1.算法功能简介
矢量栅格化,由矢量数据向栅格数据的转换一般比较方便.对于点、线目标,由其所在的栅格行、列数表示,对于面状目标,则需判定落人该面积内的像元.通常栅格(像元)尺寸均大于原来坐标表示的分辨率,所以若将栅格化数据再反转回去,则不可能达到原来矢量数据的精度.将矢量数据转化为栅格数据,主要用于空间分析、多边形叠置等.
PIE支持矢量栅格化算法功能的执行,下面对该算法功能进行介绍。
2.算法功能实现说明
2.1 实现步骤
第一步 |
算法参数设置 |
第二步 |
算法执行 |
第三步 |
结果显示 |
2.2 算法参数
算法名称 |
矢量栅格化 |
|
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 } |
2.4 示例截图