Пример #1
0
        public override IExtractResult Make(Action <int, string> progressTracker, IContextMessage contextMessage)
        {
            if (_argumentProvider.GetArg("SelectedPrimaryFiles") == null)
            {
                return(null);
            }
            string[] binWater = _argumentProvider.GetArg("SelectedPrimaryFiles") as string[];
            for (int i = 0; i < binWater.Length; i++)
            {
                if (!File.Exists(binWater[i]))
                {
                    return(null);
                }
            }
            _contextMessage = contextMessage;
            if (_argumentProvider == null)
            {
                return(null);
            }
            if (_argumentProvider.GetArg("AlgorithmName") == null)
            {
                return(null);
            }
            IFileExtractResult[] flodFiles = null;
            IExtractResult       fldsFile  = null;

            if (_argumentProvider.GetArg("AlgorithmName").ToString() == "DayFLDSAlgorithm")
            {
                flodFiles = GreateFLODFile(binWater, progressTracker);
                if (flodFiles == null || flodFiles.Length == 0 || string.IsNullOrEmpty(flodFiles[0].FileName))
                {
                    return(null);
                }
                List <string> toFLDSFiles = new List <string>();
                foreach (IFileExtractResult item in flodFiles)
                {
                    toFLDSFiles.Add(item.FileName);
                }
                fldsFile = FLODLastFiles(toFLDSFiles.ToArray(), progressTracker);
            }
            else if (_argumentProvider.GetArg("AlgorithmName").ToString() == "FloodFLDSAlgorithm")
            {
                fldsFile = FLODLastFiles(binWater, progressTracker);
            }
            if (fldsFile != null)
            {
                IExtractResultArray array = new ExtractResultArray("洪涝持续天数");
                if (flodFiles != null && flodFiles.Length != 0)
                {
                    foreach (IFileExtractResult item in flodFiles)
                    {
                        (item as IFileExtractResult).SetDispaly(false);
                        array.Add(item as IExtractResultBase);
                    }
                }
                array.Add(fldsFile as IExtractResultBase);
                return(array);
            }
            return(null);
        }
Пример #2
0
 public override IExtractResult Make(Action <int, string> progressTracker, IContextMessage contextMessage)
 {
     _contextMessage = contextMessage;
     if (_argumentProvider == null || _argumentProvider.DataProvider == null)
     {
         return(null);
     }
     if (_argumentProvider.GetArg("AlgorithmName") == null)
     {
         PrintInfo("参数\"AlgorithmName\"为空。");
         return(null);
     }
     if (_argumentProvider.GetArg("AlgorithmName").ToString() == "NOAA16Algorithm" ||
         _argumentProvider.GetArg("AlgorithmName").ToString() == "NOAA18Algorithm" ||
         _argumentProvider.GetArg("AlgorithmName").ToString() == "FY3Algorithm")
     {
         return(ExtractLST());
     }
     else if (_argumentProvider.GetArg("AlgorithmName").ToString() == "CMAAlgorithm")
     {
         return(ExtractCMA());
     }
     else
     {
         PrintInfo("指定的算法没有实现。");
         return(null);
     }
 }
Пример #3
0
 public override IExtractResult Make(Action <int, string> progressTracker, IContextMessage contextMessage)
 {
     _contextMessage = contextMessage;
     if (_argumentProvider == null)
     {
         return(null);
     }
     if (_argumentProvider.GetArg("AlgorithmName") == null)
     {
         return(null);
     }
     if (_argumentProvider.GetArg("AlgorithmName").ToString() == "0IMGAlgorithm")
     {
         string instanceIdentify = _argumentProvider.GetArg("OutFileIdentify") as string;
         if (instanceIdentify == "ISOI")//
         {
             return(ISOIIMGAlgorithm());
         }
         else
         {
             return(IMGAlgorithm());
         }
     }
     return(null);
 }
Пример #4
0
        public override IExtractResult Make(Action <int, string> progressTracker, IContextMessage contextMessage)
        {
            if (_argumentProvider.DataProvider == null)
            {
                return(null);
            }
            _contextMessage = contextMessage;
            string algorithmName = Obj2String(_argumentProvider.GetArg("AlgorithmName"));

            if (string.IsNullOrEmpty(algorithmName))
            {
                PrintInfo("参数\"AlgorithmName\"为空。");
                return(null);
            }
            switch (algorithmName)
            {
            case "EasyAlgorithm":
                return(DoMakeUseEasyAlgorithm(progressTracker));

            case "NightAlgorithm":
                return(DoMakeUseNightAlgorithm(progressTracker));

            case "ExactAlgorithm":
                return(DoMakeUseAdvanceAlgorithm(progressTracker));

            case "ImportAlgorithm":
                return(DoMakeUseImportAlgorithm(progressTracker));

            default:
                PrintInfo("指定的算法\"" + algorithmName + "\"没有实现。");
                return(null);
            }
        }
Пример #5
0
        private void Execute(List <IMonitoringSubProduct> waitingSubProducts, IContextMessage contextMessage, IArgumentMissProcessor argumentMissProcessor, string executeGroup, Action <int, string> processTracker)
        {
            if (waitingSubProducts == null || waitingSubProducts.Count == 0)
            {
                if (contextMessage != null)
                {
                    contextMessage.PrintMessage("待批量生成的子产品(定量产品\\专题图产品\\统计分析表格等)为空,批量生成进程退出。");
                }
                return;
            }
            int step = 100 / waitingSubProducts.Count;
            int i    = 0;

            foreach (IMonitoringSubProduct subprd in waitingSubProducts)
            {
                if (processTracker != null)
                {
                    processTracker((i++) * step, "正在生成\"" + subprd.Name + "\"......");
                }
                if (contextMessage != null)
                {
                    contextMessage.PrintMessage("开始生成\"" + subprd.Name + "\"......");
                }
                MakeSubProduct("    ", subprd, contextMessage, argumentMissProcessor, executeGroup, processTracker);
                if (contextMessage != null)
                {
                    contextMessage.PrintMessage("\"" + subprd.Name + "\"生成完成。");
                }
            }
        }
Пример #6
0
 public override IExtractResult Make(Action <int, string> progressTracker, IContextMessage contextMessage)
 {
     _contextMessage = contextMessage;
     if (_argumentProvider != null)
     {
         _curArguments = _argumentProvider;
     }
     if (_curArguments == null)
     {
         return(null);
     }
     if (_curArguments.GetArg("AlgorithmName") == null)
     {
         PrintInfo("参数\"AlgorithmName\"为空。");
         return(null);
     }
     if (_curArguments.GetArg("AlgorithmName").ToString() == "CLMAlgorithm")
     {
         return(CLMAlgorithm());
     }
     //蓝藻云判识入口,其他采用统一方法
     if (_curArguments.GetArg("AlgorithmName").ToString() == "BAGCLMAlgorithm")
     {
         return(BAGAlgorithm());
     }
     else
     {
         PrintInfo("指定的算法没有实现。");
         return(null);
     }
 }
Пример #7
0
 protected override bool ConditionsIsEnough(IContextMessage contextMessage)
 {
     if (_dbConnection == null)
     {
         contextMessage.AddError("数据库连接对象为空。");
         return(false);
     }
     try
     {
         _dbConnection.Open();
     }
     catch (Exception ex)
     {
         contextMessage.AddError(ex.Message);
         return(false);
     }
     try
     {
         _metadata = new BudGISMetadata();
     }
     catch (Exception ex)
     {
         contextMessage.AddError(ex.Message);
         return(false);
     }
     return(true);
 }
Пример #8
0
        public void CopyFileToCopyFolder()
        {
            if (string.IsNullOrEmpty(FolderOfCopyTo) || GeneratedFileNames == null || GeneratedFileNames.Count == 0)
            {
                return;
            }
            IContextMessage msg = Session.SmartWindowManager.SmartToolWindowFactory.GetSmartToolWindow(9006) as IContextMessage;

            if (msg != null)
            {
                msg.PrintMessage("开始拷贝文件......");
            }
            string fileName;

            foreach (string fname in GeneratedFileNames)
            {
                try
                {
                    fileName = Path.GetFileName(fname);
                    File.Copy(fname, Path.Combine(FolderOfCopyTo, fileName));
                    msg.PrintMessage("拷贝文件\"" + fileName + "\" 到 " + FolderOfCopyTo);
                }
                catch (Exception ex)
                {
                    if (msg != null)
                    {
                        msg.PrintMessage(ex.Message);
                    }
                }
            }
            if (msg != null)
            {
                msg.PrintMessage("开始拷贝文件结束。");
            }
        }
Пример #9
0
        private ComputeArgument GetComputeArguments(IContextMessage contextMessage)
        {
            int bandV    = (int)_argumentProvider.GetArg("Visible");
            int bandNear = (int)_argumentProvider.GetArg("NearInfrared");

            if (bandV == -1 || bandNear == -1)
            {
                PrintInfo("获取波段序号失败,可能是波段映射表配置错误或判识算法波段参数配置错误!");
                return(null);
            }
            if (bandV < 1)
            {
                PrintInfo("无法正确获取可见光波段序号!");
                return(null);
            }
            if (bandNear < 1)
            {
                PrintInfo("无法正确获取近红外波段序号!");
                return(null);
            }
            int[]  bandNos      = new int[] { bandV, bandNear };
            double visibleZoom  = (double)_argumentProvider.GetArg("Visible_Zoom");
            double nearInfrared = (double)_argumentProvider.GetArg("NearInfrared_Zoom");
            string express      = "(band" + bandNos[1] + "+band" + bandNos[0] + ")==0?(Int16)0:(Int16)((float)(band" + bandNos[1] + "/" + nearInfrared + "-band" + bandNos[0] + "/" + visibleZoom + ")/(band" + bandNos[1] + "/" + nearInfrared + "+band" + bandNos[0] + "/" + visibleZoom + ") * " + _argumentProvider.GetArg("resultZoom") + ")";

            return(new ComputeArgument(bandNos, express));
        }
Пример #10
0
        public override IExtractResult Make(Action <int, string> progressTracker, IContextMessage contextMessage)
        {
            _contextMessage = contextMessage;
            if (_argumentProvider == null)
            {
                return(null);
            }
            if (_argumentProvider.GetArg("AlgorithmName") == null)
            {
                PrintInfo("参数\"AlgorithmName\"为空。");
                return(null);
            }
            string algorith = _argumentProvider.GetArg("AlgorithmName").ToString();

            if (_argumentProvider.GetArg("AlgorithmName").ToString() != "CYCIAlgorithm")
            {
                PrintInfo("指定的算法\"" + algorith + "\"没有实现。");
                return(null);
            }
            string[] files = GetStringArray("SelectedPrimaryFiles");
            if (files == null || files.Length == 0)
            {
                PrintInfo("请选择需要进行统计的文件!");
                return(null);
            }
            return(CYCIAlgorithm(progressTracker));
        }
Пример #11
0
 public override IExtractResult Make(Action <int, string> progressTracker, IContextMessage contextMessage)
 {
     _progressTracker = progressTracker;
     if (_argumentProvider == null)
     {
         return(null);
     }
     if (_argumentProvider.GetArg("AlgorithmName") == null)
     {
         return(null);
     }
     //产品制作
     if (_argumentProvider.GetArg("AlgorithmName").ToString() == "LAISWIR")
     {
         return(DoCalLAIfromHDF());
     }
     else if (_argumentProvider.GetArg("AlgorithmName").ToString() == "LAIPrj")
     {
         return(DoCalLAIfromHDFPrj());
     }
     else
     {
         return(null);
     }
 }
Пример #12
0
        public Producter()
        {
            frmMainForm mainForm = new frmMainForm(new StartProgress());

            _session = mainForm.Session;
            _context = new ContentText();
        }
Пример #13
0
        public override IExtractResult Make(Action <int, string> progressTracker, IContextMessage contextMessage)
        {
            _contextMessage = contextMessage;
            IRasterDataProvider currPrd = _argumentProvider.DataProvider;

            if (currPrd == null)
            {
                return(null);
            }
            string algorithmName = _argumentProvider.GetArg("AlgorithmName").ToString();

            if (string.IsNullOrEmpty(algorithmName))
            {
                PrintInfo("参数\"AlgorithmName\"为空。");
                return(null);
            }
            switch (algorithmName)
            {
            case "FIRFAlgorithm":
                return(FIRFMack(progressTracker));

            default:
                PrintInfo("指定的算法\"" + algorithmName + "\"没有实现。");
                return(null);
            }
        }
Пример #14
0
 public IExtractResult Extracting(IArgumentProvider argProvider, out Dictionary <int, PixelFeature> features, IContextMessage contextMessage, Action <int, string> progressTracker)
 {
     _contextMessage = contextMessage;
     CreateMapper(argProvider);
     features = null;
     DoFilters(argProvider, out features, progressTracker);
     return(_candidateFirPixels);
     //return GetOtherExtractResult.GetExtractResult(argProvider, features, _candidateFirPixels, contextMessage, progressTracker);
 }
Пример #15
0
        public override IExtractResult Make(Action <int, string> progressTracker, IContextMessage contextMessage)
        {
            _contextMessage = contextMessage;
            if (_argumentProvider == null || _argumentProvider.DataProvider == null)
            {
                return(null);
            }
            string algname = _argumentProvider.GetArg("AlgorithmName").ToString();

            if (string.IsNullOrEmpty(algname))
            {
                PrintInfo("参数\"AlgorithmName\"为空。");
                return(null);
            }
            if (algname == "SNWExtract")
            {
                IBandNameRaster bandNameRaster = _argumentProvider.DataProvider as IBandNameRaster;
                int             visiBandNo     = TryGetBandNo(bandNameRaster, "Visible");
                int             sIBandNo       = TryGetBandNo(bandNameRaster, "ShortInfrared");
                int             fIBandNo       = TryGetBandNo(bandNameRaster, "FarInfrared");
                double          visiBandZoom   = (double)_argumentProvider.GetArg("Visible_Zoom");
                double          siBandZoom     = (double)_argumentProvider.GetArg("ShortInfrared_Zoom");
                double          fiBandZoom     = (double)_argumentProvider.GetArg("FarInfrared_Zoom");
                if (visiBandNo <= 0 || sIBandNo <= 0 || fIBandNo <= 0 || visiBandZoom <= 0 || siBandZoom <= 0 || fiBandZoom <= 0)
                {
                    PrintInfo("获取波段序号失败,可能是波段映射表配置错误或判识算法波段参数配置错误。");
                    return(null);
                }
                string express = string.Format(@"(band{1}/{4}f > var_ShortInfraredMin) && (band{1}/{4}f< var_ShortInfraredMax) && 
                                (band{2}/{5}f< var_FarInfraredMax) && (band{2}/{5}f > var_FarInfraredMin) && (band{0}/{3}f> var_VisibleMin) && 
                                ((float)(band{0}/{3}f-band{1}/{4}f)/(band{0}/{3}f+band{1}/{4}f)> var_NDSIMin) && 
                                ((float)(band{0}/{3}f-band{1}/{4}f)/(band{0}/{3}f+band{1}/{4}f)< var_NDSIMax)&&
                                (band{0}/{3}f< var_VisibleMax)", visiBandNo, sIBandNo, fIBandNo, visiBandZoom, siBandZoom, fiBandZoom);
                int[]  bandNos = new int[] { visiBandNo, sIBandNo, fIBandNo };
                IThresholdExtracter <UInt16> extracter = new SimpleThresholdExtracter <UInt16>();
                extracter.Reset(_argumentProvider, bandNos, express);
                int width  = _argumentProvider.DataProvider.Width;
                int height = _argumentProvider.DataProvider.Height;
                IPixelIndexMapper result = PixelIndexMapperFactory.CreatePixelIndexMapper("SNW", width, height, _argumentProvider.DataProvider.CoordEnvelope, _argumentProvider.DataProvider.SpatialRef);
                try
                {
                    SnwFeatureCollection featureInfo = SnwDisplayInfo.GetDisplayInfo(_argumentProvider, visiBandNo, sIBandNo, fIBandNo);
                    result.Tag = featureInfo;
                }
                catch
                {
                    result.Tag = new SnwFeatureCollection("积雪辅助信息计算失败", null);
                }
                extracter.Extract(result);
                return(result);
            }
            else
            {
                PrintInfo("指定的算法\"" + algname + "\"没有实现。");
                return(null);
            }
        }
Пример #16
0
 public MultiFileComputer(IArgumentProvider argumentProvider, string defaultDirPath,
                          IContextMessage contextMessage, string identify, ComputeArgument arg)
 {
     _argumentProvider  = argumentProvider;
     _orbitFilesDirPath = defaultDirPath;
     _contextMessage    = contextMessage;
     _identify          = identify;
     _arg = arg;
 }
Пример #17
0
 public void Execute(string beginSubProduct, IContextMessage contextMessage, IArgumentMissProcessor argumentMissProcessor, string executeGroup, Action <int, string> processTracker)
 {
     try
     {
         SubProductDef firstSubProduct = _monitoringProduct.Definition.GetSubProductDefByIdentify(beginSubProduct);
         List <IMonitoringSubProduct> waitingSubProducts = new List <IMonitoringSubProduct>();
         bool isBefore = true;
         if (string.IsNullOrEmpty(executeGroup))
         {
             foreach (IMonitoringSubProduct subprd in _monitoringProduct.SubProducts)
             {
                 if (firstSubProduct.Identify != subprd.Definition.Identify && isBefore)
                 {
                     continue;
                 }
                 if (!subprd.Definition.IsAutoGenerate)
                 {
                     continue;
                 }
                 isBefore = false;
                 waitingSubProducts.Add(subprd);
             }
             Execute(waitingSubProducts, contextMessage, argumentMissProcessor, null, processTracker);
         }
         else
         {
             foreach (IMonitoringSubProduct subprd in _monitoringProduct.SubProducts)
             {
                 if (firstSubProduct.Identify != subprd.Definition.Identify && isBefore)
                 {
                     continue;
                 }
                 if (!subprd.Definition.IsAutoGenerate)
                 {
                     continue;
                 }
                 if (subprd.Definition.AutoGenerateGroup != null)
                 {
                     if (!subprd.Definition.AutoGenerateGroup.Contains(executeGroup))
                     {
                         continue;
                     }
                 }
                 isBefore = false;
                 waitingSubProducts.Add(subprd);
             }
             Execute(waitingSubProducts, contextMessage, argumentMissProcessor, executeGroup, processTracker);
         }
     }
     catch (Exception ex)
     {
         if (contextMessage != null)
         {
             contextMessage.PrintMessage(ex.Message);
         }
     }
 }
Пример #18
0
 public override IExtractResult Make(Action <int, string> progressTracker, IContextMessage contextMessage)
 {
     _contextMessage = contextMessage;
     if (_argumentProvider == null)
     {
         return(null);
     }
     return(ICETFRI());
 }
Пример #19
0
        public override IExtractResult Make(Action <int, string> progressTracker, IContextMessage contextMessage)
        {
            IArgumentProvider argPrd = _argumentProvider;
            ArgumentDef       def    = argPrd.GetArgDef("ImageFile");

            if (def.RefIdentify == "CurrentImage" && def.Defaultvalue == null)
            {
            }
            return(null);
        }
Пример #20
0
        public override IExtractResult Make(Action <int, string> progressTracker, IContextMessage contextMessage)
        {
            _progressTracker = progressTracker;
            _contextMessage  = contextMessage;
            if (_argumentProvider == null)
            {
                return(null);
            }
            if (_argumentProvider.GetArg("AlgorithmName") == null)
            {
                return(null);
            }
            //Initialize Argument
            string[] arguments = _argumentProvider.GetArg("CoverageArguments") as string[];
            if (arguments == null || arguments.Length < 2)
            {
                return(null);
            }
            if (!File.Exists(arguments[0]) || string.IsNullOrEmpty(arguments[1]))
            {
                return(null);
            }
            _fileName     = arguments[0];
            _fileOpenArgs = arguments[1];
            if (arguments[1].Contains("south"))
            {
                _outFileIdentify = "SICI";
                _aoiFileName     = _southAOIName;
            }
            else
            {
                _outFileIdentify = "NICI";
                _aoiFileName     = _northAOIName;
            }
            //产品制作
            IExtractResult result = null;

            if (_argumentProvider.GetArg("AlgorithmName").ToString() == "IceConverageAlgorithm")
            {
                _isUseAOIToClear = (bool)_argumentProvider.GetArg("BoolCustomAOI");
                if (_isUseAOIToClear)
                {
                    TryCreateNewAoiFile();
                }
                if (_isUseAOIToClear && AOIFileExist())
                {
                    result = IceConverageAlgorithmWithAOI(progressTracker);
                }
                else
                {
                    result = IceConverageAlgorithm(progressTracker);
                }
            }
            return(result);
        }
Пример #21
0
        public override IExtractResult Make(Action <int, string> progressTracker, IContextMessage contextMessage)
        {
            _contextMessage = contextMessage;
            if (_argumentProvider == null)
            {
                return(null);
            }
            if (_argumentProvider.GetArg("AlgorithmName") == null)
            {
                return(null);
            }
            if (_argumentProvider.GetArg("AlgorithmName").ToString() == "FLDC")
            {
                if (_argumentProvider.GetArg("SelectedPrimaryFiles") == null)
                {
                    return(null);
                }
                string[] binWater = _argumentProvider.GetArg("SelectedPrimaryFiles") as string[];
                if (_argumentProvider.GetArg("BackWaterFile") == null)
                {
                    return(null);
                }
                string backWaterPath = _argumentProvider.GetArg("BackWaterFile").ToString();
                if (!File.Exists(backWaterPath))
                {
                    return(null);
                }
                for (int i = 0; i < binWater.Length; i++)
                {
                    if (!File.Exists(binWater[i]))
                    {
                        return(null);
                    }
                }
                if (string.IsNullOrEmpty(backWaterPath) || string.Equals(binWater, backWaterPath))
                {
                    return(null);
                }
                //生成判识结果数据统计数据集
                FileExtractResult dblvCount = GreateDBLVCount(binWater, progressTracker);
                //背景水体可能为DAT/MVG/SHP格式文件
                switch (Path.GetExtension(backWaterPath).ToUpper())
                {
                case ".DAT":
                    return(CompareDATFile(backWaterPath, dblvCount, progressTracker));

                case ".SHP":
                    return(CompareSHPFile(backWaterPath, dblvCount, progressTracker));

                case ".MVG":
                    return(null);
                }
            }
            return(null);
        }
Пример #22
0
 private static void PrintInfo(IContextMessage contextMessage, string info)
 {
     if (contextMessage != null)
     {
         contextMessage.PrintMessage(info);
     }
     else
     {
         Console.WriteLine(info);
     }
 }
Пример #23
0
        private ComputeArgument GetComputeArguments(IContextMessage contextMessage)
        {
            //排除因为计算生成的*.dat文件生成的错误
            int bandCount = _argumentProvider.DataProvider.BandCount;

            if (bandCount == 0 || bandCount == 1)
            {
                PrintInfo("请选择正确的局地文件进行计算。");
                return(null);
            }
            if (_argumentProvider.GetArg("Visible") == null)
            {
                PrintInfo("参数\"Visible\"为空。");
                return(null);
            }
            int bandV = (int)_argumentProvider.GetArg("Visible");

            if (_argumentProvider.GetArg("NearInfrared") == null)
            {
                PrintInfo("参数\"NearInfrared\"为空。");
                return(null);
            }
            int bandN = (int)_argumentProvider.GetArg("NearInfrared");

            if (bandV < 1 || bandN < 1 || bandCount < bandV || bandCount < bandN)
            {
                PrintInfo("获取波段序号失败,可能是波段映射表配置错误或判识算法波段参数配置错误。");
                return(null);
            }
            if (_argumentProvider.GetArg("Visible_Zoom") == null)
            {
                PrintInfo("参数\"Visible_Zoom\"为空。");
                return(null);
            }
            double visibleZoom = (double)_argumentProvider.GetArg("Visible_Zoom");

            if (_argumentProvider.GetArg("NearInfrared_Zoom") == null)
            {
                PrintInfo("参数\"NearInfrared_Zoom\"为空。");
                return(null);
            }
            double nearInfrared = (double)_argumentProvider.GetArg("NearInfrared_Zoom");

            string express = "";

            int[] bandNos = null;
            bandNos = new int[] { bandV, bandN };
            //express = "band" + bandNos[0] + "==0?0f:(((float)band" + bandNos[1] + "/" + nearInfrared + ")/(band" + bandNos[0] + "/" + visibleZoom + "))" + "*" + _argumentProvider.GetArg("resultZoom");
            //改为Int16
            express = "band" + bandNos[0] + "==0?(Int16)0:(Int16)((((float)band" + bandNos[1] + "/" + nearInfrared + ")/(band" + bandNos[0] + "/" + visibleZoom + "))" + "*" + _argumentProvider.GetArg("resultZoom") + ")";

            return(new ComputeArgument(bandNos, express));
        }
Пример #24
0
 public override IExtractResult Make(Action <int, string> progressTracker, IContextMessage contextMessage)
 {
     _contextMessage = contextMessage;
     if (_argumentProvider == null || _argumentProvider.GetArg("AlgorithmName") == null)
     {
         return(null);
     }
     if (_argumentProvider.GetArg("AlgorithmName").ToString() == "IceThinknessAlgorithm")
     {
         return(IceThinknessAlgorithm(progressTracker));
     }
     return(null);
 }
Пример #25
0
 protected override bool ConditionsIsEnough(IContextMessage contextMessage)
 {
     if (string.IsNullOrEmpty(_filename))
     {
         contextMessage.AddError("没有设置要创建的dbf文件名称。");
         return(false);
     }
     if (_fieldDefs == null || _fieldDefs.Length == 0)
     {
         contextMessage.AddError("没有设置地段列表。");
         return(false);
     }
     return(true);
 }
Пример #26
0
 protected override bool Execute(IContextMessage contextMessage)
 {
     try
     {
         SpatialDbBuilder builder = new SpatialDbBuilder(_dbConnection);
         builder.Build(_dbConnection, _metadata, _tracker);
         return(true);
     }
     catch (Exception ex)
     {
         contextMessage.AddError(ex.Message);
         return(false);
     }
 }
Пример #27
0
 public override IExtractResult Make(Action <int, string> progressTracker, IContextMessage contextMessage)
 {
     _progressTracker = progressTracker;
     _contextMessage  = contextMessage;
     if (_argumentProvider == null)
     {
         return(null);
     }
     if (_argumentProvider.GetArg("AlgorithmName") == null)
     {
         return(null);
     }
     return(ISOIAlgorithm());
 }
Пример #28
0
        private void btnExtract_Click(object sender, EventArgs e)
        {
            IMonitoringSubProduct subProduct = GetCurrentSubProduct();

            if (subProduct == null)
            {
                return;
            }
            IContextMessage msg = _session.SmartWindowManager.SmartToolWindowFactory.GetSmartToolWindow(9006) as IContextMessage;

            SetAOIArgument(subProduct);
            IProgressMonitor tracker = _session.ProgressMonitorManager.DefaultProgressMonitor;
            IExtractResult   result  = null;

            try
            {
                subProduct.ArgumentProvider.SetArg("SmartSession", _session);
                //不能在这里设置SelectedPrimaryFiles参数,会将界面上设置好参数值的覆盖掉。
                //TrySetSelectedPrimaryFilesArgs(_session, subProduct);

                tracker.Start(false);
                tracker.Reset("正在生成...", 100);
                result = subProduct.Make((pro, tip) =>
                {
                    if (tracker != null)
                    {
                        tracker.Boost(pro, tip);
                    }
                },
                                         msg);
                if (result == null)
                {
                    _isNullResult = true;
                    return;
                }
            }
            finally
            {
                tracker.Finish();
            }
            if (!(result is IPixelIndexMapper) && !(result is IExtractResultArray))
            {
                _isAutoSave = false;
            }
            if (result is IExtractResultArray)
            {
                SetIsAutoSave(result as IExtractResultArray);
            }
            DisplayResultClass.DisplayResult(_session, subProduct, result, true);
        }
Пример #29
0
        private ComputeArgument GetComputeArguments(IContextMessage contextMessage)
        {
            int bandCount = _argumentProvider.DataProvider.BandCount;

            if (bandCount == 0 || bandCount == 1)
            {
                PrintInfo("请选择正确的局地文件进行计算。");
                return(null);
            }
            if (_argumentProvider.GetArg("Visible") == null)
            {
                PrintInfo("参数\"Visible\"为空。");
                return(null);
            }
            int bandV = (int)_argumentProvider.GetArg("Visible");

            if (_argumentProvider.GetArg("NearInfrared") == null)
            {
                PrintInfo("参数\"NearInfrared\"为空。");
                return(null);
            }
            int bandN = (int)_argumentProvider.GetArg("NearInfrared");

            if (bandN < 1 || bandV < 1 || bandV > bandCount || bandN > bandCount)
            {
                PrintInfo("获取波段序号失败,可能是波段映射表配置错误或判识算法波段参数配置错误。");
                return(null);
            }
            if (_argumentProvider.GetArg("Visible_Zoom") == null)
            {
                PrintInfo("参数\"Visible_Zoom\"为空。");
                return(null);
            }
            double visibleZoom = (double)_argumentProvider.GetArg("Visible_Zoom");

            if (_argumentProvider.GetArg("NearInfrared_Zoom") == null)
            {
                PrintInfo("参数\"NearInfrared_Zoom\"为空。");
                return(null);
            }
            double nearInfrared = (double)_argumentProvider.GetArg("NearInfrared_Zoom");

            int[] bandNos = new int[] { bandV, bandN };
            //express = "(band" + bandNos[1] + "/" + nearInfrared + "-band" + bandNos[0] + "/" + visibleZoom + ")*" + _argumentProvider.GetArg("resultZoom") + "/100";
            //改为Int16
            string express = "(Int16)((band" + bandNos[1] + "/" + nearInfrared + "-band" + bandNos[0] + "/" + visibleZoom + ")*" + _argumentProvider.GetArg("resultZoom") + "/100)";

            return(new ComputeArgument(bandNos, express));
        }
Пример #30
0
 /// <summary>
 /// Task执行Action的入口函数
 /// 注意:子类最好不要覆写该函数
 /// </summary>
 /// <param name="contextMessage"></param>
 /// <returns></returns>
 public bool Do(IContextMessage contextMessage)
 {
     try
     {
         if (!ConditionsIsEnough(contextMessage))
         {
             return(false);
         }
         return(Execute(contextMessage));
     }
     finally
     {
         Sleep(contextMessage);
     }
 }