• PIE SDK算法的同步调用


    1.    算法功能简介

        同步调用一旦开始,调用者必须等到方法调用返回后,才能继续后续的行为。

        PIE SDK支持算法功能的执行,下面对算法的同步调用功能进行介绍。

    2.    算法功能实现说明

    2.1. 示例简介

        AlgoFactory类实现了算法的管理,主要实现了以下方法:

        1)      AlgoFactory.Instance().CreateAlgo(A,B)实现算法Algo的创建;需要注意的是:A:“PIE.CommonAlgo.dll”,B: "PIE.CommonAlgo.ImageClipAlgo"。

        2)      设置算法执行的参数;

        3)      通过算法的Excute或AlgoFactory.Instance().ExcuteAlgo()方法实现算法的同步调用;

    2.2. 实现步骤

    第一步

    算法创建CreateAlgo

    第二步

    设置算法执行的参数;

    第三步

    同步执行ExcuteAlgo

    2.3. 示例代码

    项目路径

    百度云盘地址下/PIE示例程序/10.算法调用/算法的调用方式/Algo.Execute

    数据路径

    百度云盘地址下/PIE示例数据/栅格数据/04.World/ World.tif

    视频路径

    百度云盘地址下/PIE视频教程/10.算法调用/算法的调用方式/算法的同步调用.avi

    示例代码

     1          /// <summary>
     2         /// 单击方法
     3         /// </summary>
     4         public override void OnClick()
     5         {
     6             //Clip裁剪
     7             PIE.CommonAlgo.DataPreImgClip_Exchange_Info info = new PIE.CommonAlgo.DataPreImgClip_Exchange_Info();
     8 
     9             info.InputFilePath = @"D:DataWorld.tif";  //待裁剪影像
    10             PIE.DataSource.IRasterDataset rDataset = PIE.DataSource.DatasetFactory.OpenRasterDataset(info.InputFilePath, PIE.DataSource.OpenMode.ReadOnly);
    11             if (rDataset == null) return;
    12             int count = rDataset.GetBandCount();
    13             List<int> list = new List<int> { };
    14             for (int i = 0; i < count; i++)
    15             {
    16                 list.Add(i);
    17             }
    18             info.listBands = list;
    19             info.XFactor = 1;
    20             info.YFactor = 1;
    21             info.bInvalidValue = false;
    22             info.OutputFilePath = @"D:Dataclip_Execute.tif";  //裁剪保存结果
    23             info.Type = 0;  // (等于0表示通过栅格范围裁剪)
    24             info.XStart = 0;
    25             info.XEnd = 500;
    26             info.YStart = 0;
    27             info.YEnd = 500;
    28             info.FileType = "GTiff";  //Tiff数据的FileTypeCode为“GTiff”,IMG数据的FileTypeCode为"HFA",其他格式的为"ENVI"。;
    29 
    30             //1、初始实例化Instance,算法创建CreateAlgo
    31             PIE.SystemAlgo.ISystemAlgo algo = PIE.SystemAlgo.AlgoFactory.Instance().CreateAlgo("PIE.CommonAlgo.dll", "PIE.CommonAlgo.ImageClipAlgo");
    32             if (algo == null) return;
    33 
    34             //2、同步执行Excute
    35             PIE.SystemAlgo.ISystemAlgoEvents algoEvents = algo as PIE.SystemAlgo.ISystemAlgoEvents;
    36             algo.Name = "影像裁剪";
    37             algo.Params = info;
    38             bool OK = algo.Execute();
    39 
    40             PIE.Carto.ILayer layer = PIE.Carto.LayerFactory.CreateDefaultLayer(@"D:Dataclip_Execute.tif");
    41             m_HookHelper.FocusMap.AddLayer(layer);           m_HookHelper.ActiveView.PartialRefresh(PIE.Carto.ViewDrawPhaseType.ViewAll);
    42         }
    View Code

    2.4. 示例截图

     

  • 相关阅读:
    小米笔试题:无序数组中最小的k个数
    搜狐畅游笔试题:1. 美丽的项链(动态规划) 2.多线程并发交替输出
    RPC系列:基本概念
    度小满面试题20190923
    Java 基础系列:异常
    JAVA基础系列:ThreadLocal
    leetcode 410. 分割数组的最大值(二分法)
    JAVA基础系列:Object类
    Redis系列1——概述
    剑指offer:对称的二叉树(镜像,递归,非递归DFS栈+BFS队列)
  • 原文地址:https://www.cnblogs.com/PIESat/p/10221373.html
Copyright © 2020-2023  润新知