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的使用,可以提升集成的效率 ...
随机推荐
- Part4_lesson1---Bootloader设计蓝图
1.bootloader的作用 2.u-boot是bootloader业界的老大 u-boot分为自主模式和开发模式 3.建立U-boot工程 uboot不能在window下面进行解压,因为在wind ...
- 8.python 系统批量运维管理器之pexpect模块
小插曲 前几节讲了paramiko模块,但是pexpect模块的功能几乎跟paramiko一样,先来分析一下: 1.各自介绍 pexpect是一个通过启动子程序,使用正则表达式对程序输出做出特定响应, ...
- App性能测试工具使用说明-MobilePerformance
一. 环境搭建 安装Android SDK 1.6或者1.7版本均可,建议1.7,环境变量的配置,Java SDK的安装很简单,不赘述了. 安装SDK 1.安装Android SDK: 2.安装完毕后 ...
- (转)Web API 入门指南 - 闲话安全
原文地址:http://www.cnblogs.com/developersupport/p/WebAPI-Security.html Web API入门指南有些朋友回复问了些安全方面的问题,安全方面 ...
- Android Tablayout属性介绍
1.添加依赖 compile 'com.android.support:design:26.0.0-alpha1' 2.属性 改变选中字体的颜色app:tabSelectedTextColor=&qu ...
- C# 控制win7任务栏、开始菜单的显示与隐藏
因为是做显示程序,故需要控制任务栏与开始菜单的显示与隐藏,这样就美观些.不啰嗦.直接上代码: using System; using System.Collections.Generic; using ...
- xmlreader与xmlwriter里的几个坑与解决方案
加载超过100M的xml文件时(可能不是很常见),XmlDocument这种全部加载到内存里的模式就有点不友好了,耗时长.内存高. 这时用xmlreader就会有自行车换超跑的感觉,但其间遇到几个坑, ...
- C#中return的两个作用
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threa ...
- 复制构造函数被调用的三种情况------新标准c++程序设计
1.当用一个对象去初始化同类的另一个对象时,会引发复制构造函数被调用.例如,下面的两条语句都会引发复制构造函数的调用,用以初始化c2. C c2 (c1); C c2=c1; 这两条语句是等价的.注意 ...
- CENTOS7 使用 Nginx + Uwsgi 部署 Django 项目
写在前面的话 最近总是见到有新学 Django 的朋友在部署自己的项目到 Linux 上面的时候运行不起来,所以就动手写了这篇博客. 对于不会搭建 Python 3 环境的朋友可以参考前面的博客[CE ...