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.算法功能简介 图像重采样是指对采样后形成的由离散数据组成的数字图像按所需的像元位置或像元问距重新采样,以构成几何变换后的新图像.重采样过程本质上是图像恢复过程,它用输入的离散数字图像重建代表原始图 ...

  2. PIE SDK图像镜像

      1.算法功能简介 图像镜像可生成图像的水平镜像.垂直镜像和水平垂直镜像.水平镜像是图像以垂直中线为轴, 将图像左右半部对调:垂直镜像是图像以水平中线为轴,将图像上下半部对调. PIE支持算法功能的 ...

  3. PIE SDK图像旋转

    1.算法功能简介 图像旋转可使图像以中心点为轴沿特定方向旋转指定的角度. PIESDK支持算法功能的执行,下面对图像旋转算法功能进行介绍. 2.算法功能实现说明 2.1 实现步骤 第一步 算法参数设置 ...

  4. 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 ...

  5. PIE SDK Command&&Tool工具命令一览表

    PIE SDK Command&&Tool工具命令一览表 编号 模板 名称(中文) Command&Tool 程序集 备注 1 数据管理 加载栅格数据 PIE.Controls ...

  6. PIE SDK与IDL算法结合说明文档

    1.功能简介 IDL是一门简单易用的科学计算和可视化语言,包含大量的图形图像处理函数,尤其是同ENVI结合集成了该软件的大量功能,因此被广泛用于遥感.地信领域. 本示例程序实现了IDL算法与PIESD ...

  7. PIE SDK与Python结合说明文档

    1.功能简介 Python是一种跨平台语言.无论是在Windows.Linux.Unix还是Mac Os系统,我们都可以使用Python.甚至在Linux.Unix及Mac OS系统内已经集成了Pyt ...

  8. PIE SDK影像坏线修复

    1.算法功能简介 坏条带的由来:2003年5月31日,Landsat-7ETM+机载扫描行校正器(SLC) 故障,导致此后获取的影像出现了数据条带丢失,严重影响了Landsat ETM遥感影像的使用. ...

  9. PIE SDK Command、Tool、Control的调用和拓展

    1.功能简介 在一个项目中,是通过小组成员共同开发的,难以避免的是当项目功能集成的时候会出现很多兼容性问题,开发讲究高内聚低耦合,利用Command.Tool和Control的使用,可以提升集成的效率 ...

随机推荐

  1. MongoDB整理笔记の导入导出

    一.导入 1.导入json数据 我们先将表user删除掉,以便演示效果: > db.user.drop(); true > show collections; system.indexes ...

  2. .Net Core 项目部署IIS简单步骤

    1.新建一个解决方案: 我习惯会把运行文件移至一级目录 然后清除CoreTest 文件夹里面的文件 2.在解决方案中新建一个项目 点击确认有,这里有几种选择类型,我一般选择空类型(这里需要注意一下,空 ...

  3. 分享我的第一个asp.net core开发过程

    .net core 这个东西感觉还是很不错的,学习了一下,并且做了一个微服务(IP地址查询服务) http://vju.cc/ip/ipquery 看上他的跨平台功能,所以就研究一下,中间有不少坑,有 ...

  4. vs2010远程调试断点无效问题

    ps:本人按照下面的方式设置成功,个人感觉写的也比较清楚 来源:http://www.cnblogs.com/OpenCoder/archive/2010/02/17/1668983.html   v ...

  5. 搭建Selenium环境

    1.下载并安装Python 此学习笔记使用Python语言进行开发,所以我已经安装了Python环境,我的Python版本为3.5.2: 2.安装selenium 因为我使用的Python3版本,在该 ...

  6. rtabmap and rtabmap_ros make error(rtabmap编译错误)

    Build from source following README.nd in rtabmap_ros rtabmap make error Error 1 make[2]: *** No rule ...

  7. CF914E Palindromes in a Tree

    $ \color{#0066ff}{ 题目描述 }$ 给你一颗 n 个顶点的树(连通无环图).顶点从 1 到 n 编号,并且每个顶点对应一个在'a'到't'的字母. 树上的一条路径是回文是指至少有一个 ...

  8. SDUT OJ 数据结构实验之排序四:寻找大富翁

    数据结构实验之排序四:寻找大富翁 Time Limit: 200 ms Memory Limit: 512 KiB Submit Statistic Discuss Problem Descripti ...

  9. linux下蓝牙开发(bluez应用)

    编译blueZ-5.25 需要先编译安装以下包: bluez-libs-3.36.tar.gz expat-2.1.0.tar.gz dbus-1.10.0.tar.gz glib-2.26.1.ta ...

  10. ThinkPHP U方法

    方法1: {:U('User/Booking/bookingdetails')} 方法2: {:U('User/Booking/bookingdetails')}"+"&a ...