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. 7.linux安全基线加固

    本文大多截图出自于:http://c.biancheng.net/cpp/shell/ 现在大多数企业都是使用linux作为服务器,不仅是linux是开源系统,更是因为linux比windows更安全 ...

  2. HDU 1540 Tunnel Warfare (线段树或set水过)

    题意:D代表破坏村庄,R代表修复最后被破坏的那个村庄,Q代表询问包括x在内的最大连续区间是多少. 析:首先可以用set水过,set用来记录每个被破坏的村庄,然后查找时,只要查找左右两个端点好. 用线段 ...

  3. Sort函数(C++)

    原创 C++中内置了sor函数供排序,函数原型为: #include<algorithm> //所属头文件 sort(begin,end,cmp); //其中cmp参数可以省略,省略后默认 ...

  4. MongoDB整理笔记の减少节点

    当应用的压力小时,可以减少一些节点来减少硬件资源的成本:总之这是一个长期且持续的工作. 下面将刚刚添加的两个新节点28013 和28014 从复制集中去除掉,只需执行rs.remove 指令就可以了, ...

  5. Js杂谈-单体模式

    单体模式的思想:保证一个特定类仅有一个实例,意味着第二次使用同一个类创建新对象的时候,应该得到与第一次所创建对象完全相同的对象. 下面举几个实现的例子 1.new操作符 这种思想在于当使用同一个构造函 ...

  6. constexpr函数------c++ primer

    constexpr函数是指能用于常量表达式的函数.定义constexpr函数的方法有其他函数类似,不过要遵循几项约定:函数的返回值类型及所以形参的类型都是字面值类型,而且函数体中必须有且只有一条ret ...

  7. ios app提交之前需要哪几个证书

    1.遇到的问题 一款App在别人的机器上开发和发布,现在迭代更新和开发需要在一台新mac机上开发和发布. (使用同一个开发者账号)问题: 1.在新mac机器上开发并导入真机测试,是不是需要从别人的机器 ...

  8. 标准模板库使用参考——vector向量容器

    C++的STL从广义上讲分为algorithm(算法),container(容器)和iterator(迭代器)三类,包含了诸多在计算机科学领域里所常用的基本数据结构和基本算法. 在C++标准库中,ST ...

  9. HDP 中 yarn 和 MR2 的配置

    以下说明均以集群中 slave 结点的配置为 48G内存,12块硬盘,12核(core) CPU 为例. 在 Yarn 中,一个 Container 是一个基础的包含内存和CPU 的单元.为了较好的平 ...

  10. 连接数据库+注册->登录->抽奖(有关联关系的接口)

    注册账号信息需要写入数据库,登录和抽奖时从数据库获取数据 一.连接数据库 my_sql.py: import pymysql class MyDb: def __init__(self,host,pa ...