1.算法功能简介
图像裁剪的目的是获取选定的影像范围区域。图像裁切工具提供像素范围裁切、矢量裁切、栅格图像裁切和几何图元裁切四种方式。 像素范围裁切是基于像素坐标获取矩形裁切区域的裁切方式;矢量裁切是基于矢量地理坐标获取任意形状裁切区域的裁切方式; 栅格图像裁剪是基于栅格文件的坐标获取裁剪区域的裁剪方式; 几何图元裁切是基于交互方式在主视图上绘制多边形来获取裁切范围的裁切方式。
PIE支持算法功能的执行,下面对图像裁剪算法功能进行介绍。
2.算法功能实现说明
2.1. 实现步骤
2.2. 算法参数
算法名称
|
图像裁剪
|
C#算法DLL
|
PIE.CommonAlgo.dll
|
C#算法名称
|
PIE.CommonAlgo.ImageClipAlgo
|
参数结构体
|
DataPreImgClip_Exchange_Info
|
参数说明
|
InputFilePath
|
String
|
输入文件
(*.tif;*.tiff;*.bmp;*.img;*.jpg;*.ldf)
|
Type
|
Int
|
裁剪类型
0为以栅格来裁剪;1为用shp文件; 2为几何范围来裁剪
|
ShpFilePath
|
String
|
如果以shp文件裁剪,需要输入的shp文件路径
|
OutputFilePath
|
String
|
输出文件路径
(*.tif;*.tiff; *.img)
|
FileType
|
String
|
根据输出类型获得文件编码类型
.tif/.tiff——GTiff
.img—————HFA
其他—————ENVI
|
XStart
|
Int
|
裁剪范围起始X
|
XEnd
|
Int
|
裁剪范围终点X
|
YStart
|
Int
|
裁剪范围起始Y
|
YEnd
|
Int
|
裁剪范围终点Y
|
bInvalidValue
|
bool
|
是否设置无效值
|
InvalidValue
|
double
|
无效值
|
FuncName
|
String
|
功能名称
|
ListBands
|
IList<Int>
|
输出裁剪影像的波段
|
Geometry
|
IGeometry
|
裁剪几何形状
|
2.3. 示例代码
项目路径
|
百度云盘地址下/PIE示例程序/10.算法调用/图像预处理/ClipAlgoDemo.Form1
|
数据路径
|
百度云盘地址下/PIE示例数据/ 栅格数据/04.World/World.tif
百度云盘地址下/PIE示例数据/ 矢量数据/Shape/省级行政区.shp
|
视频路径
|
百度云盘地址下/PIE视频教程/10.算法调用/图像预处理/图像裁剪算法.avi
|
示例代码
|
//(一)通过栅格范围裁剪
/// <summary>
///图像裁剪算法测试,本算法实现了将World.tif根据起始点(0,0)到终止点(500,500)的矩形范围裁剪生成clip_xy.tif文件
/// </summary>
private void button_xy_Click ()
{
#region 1、参数设置
//Clip裁剪
PIE.CommonAlgo.DataPreImgClip_Exchange_Info info = new PIE.CommonAlgo.DataPreImgClip_Exchange_Info();
info.InputFilePath = @"D:\Data\World.tif"; //待裁剪影像
PIE.DataSource.IRasterDataset rDataset = PIE.DataSource.DatasetFactory.OpenRasterDataset(info.InputFilePath, PIE.DataSource.OpenMode.ReadOnly);
if (rDataset == null) return;
int count=rDataset.GetBandCount();
List<int> list = new List<int> { };
for (int i = ; i < count; i++) {
list.Add(i);
}
info.listBands = list;
info.XFactor = ;
info.YFactor = ;
info.bInvalidValue = false;
info.OutputFilePath = @"D:\Data\clip_xy.tif"; //裁剪保存结果
info.Type = ; // (等于0表示通过栅格范围裁剪)
info.XStart = ;
info.XEnd = ;
info.YStart = ;
info.YEnd = ;
info.FileType = "GTiff"; //Tiff数据的FileTypeCode为“GTiff”,IMG数据的FileTypeCode为"HFA",其他格式的为"ENVI"。;
PIE.SystemAlgo.ISystemAlgo algo = PIE.SystemAlgo.AlgoFactory.Instance().CreateAlgo("PIE.CommonAlgo.dll", "PIE.CommonAlgo.ImageClipAlgo");
if (algo == null) return;
#endregion
//2、算法执行
PIE.SystemAlgo.ISystemAlgoEvents algoEvents = algo as PIE.SystemAlgo.ISystemAlgoEvents;
algo.Name = "影像裁剪";
algo.Params = info;
//PIE.SystemAlgo.AlgoFactory.Instance().AsynExecuteAlgo(algo);
//bool OK = PIE.SystemAlgo.AlgoFactory.Instance().ExecuteAlgo(algo);
bool OK = algo.Execute();
MessageBox.Show("裁剪成功!");
}
//(二)使用shape文件裁剪
/// <summary>
///图像裁剪算法测试,本算法实现了将World.tif根据省级行政区.shp文件裁剪生成clip_shp.tif文件
/// </summary>
private void button_shp_Click ()
{
#region 1、参数设置
//Clip裁剪
PIE.CommonAlgo.DataPreImgClip_Exchange_Info info = new PIE.CommonAlgo.DataPreImgClip_Exchange_Info();
//参数设置
string featurePath = @"D:\Data\省级行政区.shp"; //裁剪的几何要素
info.InputFilePath = @"D:\Data\World.tif"; //待裁剪影像
PIE.DataSource.IRasterDataset rDataset = PIE.DataSource.DatasetFactory.OpenRasterDataset(info.InputFilePath, PIE.DataSource.OpenMode.ReadOnly);
if (rDataset == null) return;
int count = rDataset.GetBandCount();
List<int> list = new List<int> { };
for (int i = ; i < count; i++)
{
list.Add(i);
}
info.listBands = list;
info.bInvalidValue = false;
info.OutputFilePath = @"D:\Data\clip_shp.tif"; //裁剪保存结果
info.ShpFilePath = featurePath;
info.Type = ; // (等于1表示使用shape文件裁剪)
info.FileType = "GTiff"; //Tiff数据的FileTypeCode为“GTiff”,IMG数据的FileTypeCode为"HFA",其他格式的为"ENVI"。;
PIE.SystemAlgo.ISystemAlgo algo = PIE.SystemAlgo.AlgoFactory.Instance().CreateAlgo("PIE.CommonAlgo.dll", "PIE.CommonAlgo.ImageClipAlgo");
if (algo == null) return;
#endregion
//2、算法执行
PIE.SystemAlgo.ISystemAlgoEvents algoEvents = algo as PIE.SystemAlgo.ISystemAlgoEvents;
algo.Name = "影像裁剪";
algo.Params = info;
PIE.SystemAlgo.AlgoFactory.Instance().AsynExecuteAlgo(algo);
//bool OK = PIE.SystemAlgo.AlgoFactory.Instance().ExecuteAlgo(algo);
//bool OK = algo.Execute();
MessageBox.Show("裁剪成功!");
}
//(三)使用几何范围裁剪
/// <summary>
///图像裁剪算法测试,本算法实现了将World.tif根据省级行政区.shp文件中索引为0的geometry裁剪生成clip_shp.tif文件
/// </summary>
private void button_geometry_Click ()
{
#region 1、参数设置
//Clip裁剪
PIE.CommonAlgo.DataPreImgClip_Exchange_Info info = new PIE.CommonAlgo.DataPreImgClip_Exchange_Info();
//参数设置
string featurePath = @"D:\Data\省级行政区.shp"; //裁剪的几何要素
PIE.DataSource.IFeatureDataset fDataset = PIE.DataSource.DatasetFactory.OpenFeatureDataset(featurePath);
PIE.DataSource.IFeature feature = fDataset.GetNextFeature();
fDataset.ResetReading();
PIE.Geometry.IGeometry geometryClip = null;
while (feature != null)
{
geometryClip = feature.Geometry;
feature = fDataset.GetNextFeature();
break;
}
info.InputFilePath = @"D:\Data\World.tif"; //待裁剪影像
PIE.DataSource.IRasterDataset rDataset = PIE.DataSource.DatasetFactory.OpenRasterDataset(info.InputFilePath, PIE.DataSource.OpenMode.ReadOnly);
if (rDataset == null) return;
int count = rDataset.GetBandCount();
List<int> list = new List<int> { };
for (int i = ; i < count; i++)
{
list.Add(i);
}
info.listBands = list;
info.bInvalidValue = false;
info.OutputFilePath = @"D:\Data\clip_geometry.tif"; //裁剪保存结果
info.Type = ; // (等于2表示使用几何范围裁剪)
info.Geometry = geometryClip;
info.FileType = "GTiff"; //Tiff数据的FileTypeCode为“GTiff”,IMG数据的FileTypeCode为"HFA",其他格式的为"ENVI"。;
PIE.SystemAlgo.ISystemAlgo algo = PIE.SystemAlgo.AlgoFactory.Instance().CreateAlgo("PIE.CommonAlgo.dll", "PIE.CommonAlgo.ImageClipAlgo");
if (algo == null) return;
#endregion
//2、算法执行
PIE.SystemAlgo.ISystemAlgoEvents algoEvents = algo as PIE.SystemAlgo.ISystemAlgoEvents;
algo.Name = "影像裁剪";
algo.Params = info; PIE.SystemAlgo.AlgoFactory.Instance().AsynExecuteAlgo(algo);
//bool OK = PIE.SystemAlgo.AlgoFactory.Instance().ExecuteAlgo(algo);
//bool OK = algo.Execute();
MessageBox.Show("裁剪成功!");
}
|
2.4. 示例截图
(一)通过栅格范围裁剪
(二)使用shape文件裁剪
(三)使用几何范围裁剪
- PIE SDK图像重采样算法
1.算法功能简介 图像重采样是指对采样后形成的由离散数据组成的数字图像按所需的像元位置或像元问距重新采样,以构成几何变换后的新图像.重采样过程本质上是图像恢复过程,它用输入的离散数字图像重建代表原始图 ...
- PIE SDK图像镜像
1.算法功能简介 图像镜像可生成图像的水平镜像.垂直镜像和水平垂直镜像.水平镜像是图像以垂直中线为轴, 将图像左右半部对调:垂直镜像是图像以水平中线为轴,将图像上下半部对调. PIE支持算法功能的 ...
- PIE SDK图像旋转
1.算法功能简介 图像旋转可使图像以中心点为轴沿特定方向旋转指定的角度. PIESDK支持算法功能的执行,下面对图像旋转算法功能进行介绍. 2.算法功能实现说明 2.1 实现步骤 第一步 算法参数设置 ...
- PIE SDK 文章目录索引
1.PIE SDK介绍 1.1. PIE软件介绍 1.2. PIE SDK介绍 1.3. PIE支持项目介绍 1.4. PIE.NET-SDK插件式二次开发介绍 1.5. PIE.NET-S ...
- PIE SDK Command&&Tool工具命令一览表
PIE SDK Command&&Tool工具命令一览表 编号 模板 名称(中文) Command&Tool 程序集 备注 1 数据管理 加载栅格数据 PIE.Controls ...
- PIE SDK与IDL算法结合说明文档
1.功能简介 IDL是一门简单易用的科学计算和可视化语言,包含大量的图形图像处理函数,尤其是同ENVI结合集成了该软件的大量功能,因此被广泛用于遥感.地信领域. 本示例程序实现了IDL算法与PIESD ...
- PIE SDK与Python结合说明文档
1.功能简介 Python是一种跨平台语言.无论是在Windows.Linux.Unix还是Mac Os系统,我们都可以使用Python.甚至在Linux.Unix及Mac OS系统内已经集成了Pyt ...
- PIE SDK影像坏线修复
1.算法功能简介 坏条带的由来:2003年5月31日,Landsat-7ETM+机载扫描行校正器(SLC) 故障,导致此后获取的影像出现了数据条带丢失,严重影响了Landsat ETM遥感影像的使用. ...
- PIE SDK Command、Tool、Control的调用和拓展
1.功能简介 在一个项目中,是通过小组成员共同开发的,难以避免的是当项目功能集成的时候会出现很多兼容性问题,开发讲究高内聚低耦合,利用Command.Tool和Control的使用,可以提升集成的效率 ...
随机推荐
- SpringMVC——数据转换 & 数据格式化 & 数据校验
一.数据绑定流程 1. Spring MVC 主框架将 ServletRequest 对象及目标方 法的入参实例传递给 WebDataBinderFactory 实例,以创 建 DataBinder ...
- 字符串的查找删除---C++中string.find()函数与string::npos
给定一个短字符串(不含空格),再给定若干字符串,在这些字符串中删除所含有的短字符串 输入: 输入只有一组数据 输入一个短字符串(不含空格),再输入若干字符串直到文件结束为止 输出: 删除输入的短字符串 ...
- MVC值提供组件ValueProvider的继承关系
MVC请求过程中中各组件调用顺序:值提供组件(IValueProvider)->模型绑定组件(IModelBinder)->模型验证组件 值提供组件接口 public interface ...
- Linux 查看是64位还是32位
[root@VM_7_88_centos ~]# uname -a Linux VM_7_88_centos 3.10.0-229.el7.x86_64 #1 SMP Fri Mar 6 11:36: ...
- 关于同时查询父子名称的SQL查询语句的写法 id name parentId parentName .
parentid是1就是id为1的公司的子公司 如图 查询出所有的信息后 由于我要呈现的是parentName 不是parentId所以想问下SQL语句怎么写 谢谢啦~~:) 解法: SELECT s ...
- 策略与计费控制(PCC)流程与信令流程
该文为3GPP TS23.203-be0 条款6-7译文 策略与计费控制(PCC)流程[^4] IP-CAN 会话有三种显著的场景: 无网关控制会话需求,不会出现网关控制建立 需要网关控制会话支持:B ...
- tomcat启动startup.bat一闪而过
编辑startup.bat,在文本最后添加PAUSE,保存后打开startup.bat,此时窗口会暂停,并出现错误信息,然后按照错误提示纠正即可!
- Time - Time-interval Measurements
public class TimeHelper { private long _start, _stop, _elapsed; /// <summary> /// 获取初始时间戳 /// ...
- loj #6342. 跳一跳
#6342. 跳一跳 题目描述 现有一排方块,依次编号为 1…n1\ldots n1…n.方块 111 上有一个小人,已知当小人在方块 iii 上时,下一秒它会等概率地到方块 iii(即不动),方块 ...
- [Swift实际操作]九、完整实例-(3)创建和安装开发证书、发布证书及开发证书配置文件、发布证书配置文件
本文将为你演示,如何创建开发证书和发布证书,以及其他辅助内容.首先打开浏览器,进入[苹果开发者网站]输入[Apple ID]和[密码],点击登录按钮,进入开发者管理后台. 点击左侧的[Membersh ...