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 |
/// <summary>
/// 矢量栅格化算法 本示例数据用的是将distanceClassify-Julei.tif数据进行矢量化的结果进行栅格化
/// </summary>
public void VectorToRaster()
{
VectorToRaster_Exchange_Info info = new VectorToRaster_Exchange_Info();
info.strInputFile = @"D:\data\图像分类2\distanceClassify-Julei_Re.shp";
info.strOutputFile = @"D:\data\图像分类2\VectorToRaster.tif";
info.strOutputFileType = "GTiff";//GTiff、HAF或者ENVI
info.nFieldIndex = ;//选择字段的索引
info.bStandardFile = false;//是否指定;false:基于指定大小 xy有效;true:基于影像大小 strStandardFile有效
info.strStandardFile = "";//基准影像路径
info.x = ;//指定输出的栅格列数
info.y = ;//指定输出的栅格行数
info.bHasNoData = true;//是否设置无效值
info.dbNoData = ;//无效值
PIE.SystemAlgo.ISystemAlgo algo = PIE.SystemAlgo.AlgoFactory.Instance().CreateAlgo("PIE.CommonAlgo.dll", "PIE.CommonAlgo.VectorToRasterAlgo");
if (algo == null) return;
PIE.SystemAlgo.ISystemAlgoEvents algoEvents = algo as PIE.SystemAlgo.ISystemAlgoEvents;
algo.Name = "矢量栅格化";
algo.Params = info;
bool result = PIE.SystemAlgo.AlgoFactory.Instance().ExecuteAlgo(algo);
if (result)
{
MessageBox.Show("矢量栅格化算法执行成功");
ILayer layer = LayerFactory.CreateDefaultLayer(info.strOutputFile);
if (layer == null) return;
m_HookHelper.ActiveView.FocusMap.AddLayer(layer);
m_HookHelper.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll);
}
} |
2.4 示例截图