Пример #1
0
 private static void SetThemeEnvelope(IThemeGraphGenerator tgg, CoordEnvelope customEnv)
 {
     if (customEnv != null)
     {
         (tgg as CmaThemeGraphGenerator).SetEnvelope(new Layout.GxdEnvelope(customEnv.MinX, customEnv.MaxX, customEnv.MinY, customEnv.MaxY));
     }
 }
Пример #2
0
        /// <summary>
        /// 根据所选的文件提取产品标识和子产品标识,自动匹配应该生成的专题图类型,如ndvi
        /// </summary>
        /// <param name="session"></param>
        /// <param name="isCustom"></param>
        /// <param name="multiSelect"></param>
        /// <returns></returns>
        private static IExtractResult CreateThemeGraphyBase(ISmartSession session, string algorithmName, bool isCustom, bool multiSelect)
        {
            IMonitoringSubProduct msp = (session.MonitoringSession as IMonitoringSession).ActiveMonitoringSubProduct;

            if (msp == null)
            {
                return(null);
            }
            object obj = msp.ArgumentProvider.GetArg("SelectedPrimaryFiles");

            //从工作空间中获取选择的文件名
            if (!SetSelectedPrimaryFiles(session, ref obj, msp.ArgumentProvider, algorithmName))
            {
                return(null);
            }
            string[] files = obj as string[];
            if (files == null || files.Length == 0)
            {
                if (File.Exists(obj.ToString()))
                {
                    files = new string[] { obj.ToString() }
                }
                ;
                else
                {
                    return(null);
                }
            }
            //添加对生成专题图文件类型的判断,排除生成的专题图和统计结果文件,add by wangyu,20120923
            foreach (string fname in files)
            {
                CanCreatThemegraph(fname);
            }
            string outFileIdentify = null;
            string templateName    = null;

            GetTemplateName(msp.Definition.SubProductInstanceDefs, files, multiSelect, out outFileIdentify, out templateName);
            if (string.IsNullOrEmpty(outFileIdentify) || string.IsNullOrEmpty(templateName))
            {
                return(null);
            }

            if (isCustom && !SetAOIArugment(files, msp, multiSelect))
            {
                return(null);
            }
            else if (!isCustom)
            {
                msp.ArgumentProvider.SetArg("AOI", null);
            }
            IThemeGraphGenerator tgg = (session.MonitoringSession as IMonitoringSession).ThemeGraphGenerator;

            msp.ArgumentProvider.SetArg("ThemeGraphyGenerator", tgg);
            msp.ArgumentProvider.SetArg("OutFileIdentify", outFileIdentify);
            msp.ArgumentProvider.SetArg("ThemeGraphTemplateName", templateName);
            IExtractResult result = msp.Make(null);

            DisplayResultClass.DisplayResult(session, msp, result, false);
            return(result);
        }
Пример #3
0
 public MonitoringSession(ISmartSession session)
 {
     _session             = session;
     _themeGraphGenerator = new ThemeGraphGenerator(session);
     _filenameGenerator   = new FileNameGeneratorDefault();
     _extractingSession   = new ExtractingSession(session);
     LoadMonitoringTheme();
 }
Пример #4
0
        public static IExtractResult CreateThemeGraphyBase(ISmartSession session, string algorithmName, string outFileIdentify, string colorTableName, string dataIdentify, string templateName, bool isCustom, bool multiSelect, Dictionary <string, string> aoiTemplateList)
        {
            IMonitoringSubProduct msp = (session.MonitoringSession as IMonitoringSession).ActiveMonitoringSubProduct;

            if (msp == null)
            {
                return(null);
            }
            object obj = msp.ArgumentProvider.GetArg("SelectedPrimaryFiles");

            //if (obj == null)
            //{
            if (!SetSelectedPrimaryFiles(session, ref obj, msp.ArgumentProvider, algorithmName))
            {
                return(null);
            }
            //}
            string[] files = obj as string[];
            if (files == null || files.Length == 0)
            {
                if (File.Exists(obj.ToString()))
                {
                    files = new string[] { obj.ToString() }
                }
                ;
                else
                {
                    return(null);
                }
            }
            //添加对生成专题图文件类型的判断,排除生成的专题图和统计结果文件,add by wangyu,20120923
            foreach (string fname in files)
            {
                CanCreatThemegraph(fname);
            }
            if (isCustom && !SetAOIArugment(files, msp, multiSelect, aoiTemplateList))
            {
                return(null);
            }
            else if (!isCustom)
            {
                msp.ArgumentProvider.SetArg("AOI", null);
            }
            IThemeGraphGenerator tgg = (session.MonitoringSession as IMonitoringSession).ThemeGraphGenerator;

            msp.ArgumentProvider.SetArg("ThemeGraphyGenerator", tgg);
            msp.ArgumentProvider.SetArg("OutFileIdentify", outFileIdentify);
            msp.ArgumentProvider.SetArg("ThemeGraphTemplateName", templateName);
            if (!string.IsNullOrEmpty(colorTableName))
            {
                msp.ArgumentProvider.SetArg("colortablename", "colortablename=" + colorTableName);
            }
            IExtractResult result = msp.Make(null);

            DisplayResultClass.DisplayResult(session, msp, result, false);
            return(result);
        }
Пример #5
0
        public IExtractResult CompareAnalysisByPixel <T1, T>(string productName, string productIdentify, string extInfos, Func <T1, T1, T> function)
        {
            string[] files = GetStringArray("SelectedPrimaryFiles");
            if (files == null || files.Length == 0 || files.Length == 1)
            {
                return(null);
            }
            //文件列表排序
            string[] dstFiles        = SortFileName(files);
            string   outFileIdentify = GetStringArugment("OutFileIdentify");
            object   obj             = _argumentProvider.GetArg("ThemeGraphyGenerator");

            if (obj == null)
            {
                return(null);
            }
            IThemeGraphGenerator tgg = obj as IThemeGraphGenerator;

            if (tgg == null)
            {
                return(null);
            }
            string             templatName    = GetStringArugment("ThemeGraphTemplateName");
            string             colorTabelName = GetColorTableName("colortablename");
            ExtractResultArray results        = new ExtractResultArray(productIdentify + "_COMP");

            for (int i = 0; i < dstFiles.Length - 1; i++)
            {
                //生成专题图
                IPixelFeatureMapper <T> rasterResult = MakeCompareRaster <T1, T>(productIdentify, dstFiles[i], dstFiles[i + 1], function);
                string aoiTemplateName         = string.Empty;
                Dictionary <string, int[]> aoi = null;
                GetAOI(out aoiTemplateName, out aoi);
                if (rasterResult == null)
                {
                    continue;
                }
                RasterIdentify        rid = new RasterIdentify(dstFiles[i]);
                IInterestedRaster <T> iir = new InterestedRaster <T>(rid, rasterResult.Size, rasterResult.CoordEnvelope, rasterResult.SpatialRef);
                iir.Put(rasterResult);
                iir.Dispose();
                string resultFilename = tgg.Generate(iir.FileName, templatName, MasicAOI(aoi, ref extInfos), extInfos, outFileIdentify, colorTabelName);
                if (string.IsNullOrEmpty(resultFilename))
                {
                    return(null);
                }
                FileExtractResult result = new FileExtractResult(outFileIdentify, resultFilename);
                if (result != null)
                {
                    results.Add(result);
                }
            }
            return(results);
        }
Пример #6
0
 public AutoGenerateExecutor(IResultHandler resultHandler,
                             IMonitoringProduct monitoringProduct,
                             IThemeGraphGenerator layoutGenerator,
                             IFileNameGenerator fileNameGenerator)
 {
     _resultHandler      = resultHandler;
     _monitoringProduct  = monitoringProduct;
     _layoutGenerator    = layoutGenerator;
     _fileNameGenerator  = fileNameGenerator;
     _contextEnvironment = new ContextEnvironment();
 }
Пример #7
0
        public IExtractResult CycleTimeStatAnalysisByPixel <T>(string productName, string productIdentify, string extInfos, Func <int, T, T, T> function)
        {
            IRasterOperator <T>   roper           = new RasterOperator <T>();
            IInterestedRaster <T> cycleIimeResult = null;

            string[] files = GetStringArray("SelectedPrimaryFiles");
            if (files == null || files.Length == 0)
            {
                return(null);
            }
            if (string.IsNullOrEmpty(extInfos))
            {
                extInfos = GetStringArugment("extinfo");
            }
            DataIdentify di = GetDataIdentify();
            string       outFileIdentify = GetStringArugment("OutFileIdentify");

            cycleIimeResult = roper.CycleTimes(files, CreatRasterIndetifyId(files, productIdentify, outFileIdentify, di, null, extInfos), function);
            if (cycleIimeResult == null)
            {
                return(null);
            }
            object obj = _argumentProvider.GetArg("ThemeGraphyGenerator");

            if (obj == null)
            {
                return(cycleIimeResult);
            }
            IThemeGraphGenerator tgg = obj as IThemeGraphGenerator;

            if (tgg == null)
            {
                return(cycleIimeResult);
            }
            cycleIimeResult.Dispose();
            string aoiTemplateName         = string.Empty;
            Dictionary <string, int[]> aoi = null;

            GetAOI(out aoiTemplateName, out aoi);
            string templatName    = GetStringArugment("ThemeGraphTemplateName");
            string colorTabelName = GetColorTableName("colortablename");
            string resultFilename = tgg.Generate(cycleIimeResult.FileName, templatName, MasicAOI(aoi, ref extInfos), extInfos, outFileIdentify, colorTabelName);

            if (string.IsNullOrEmpty(resultFilename))
            {
                return(cycleIimeResult);
            }
            return(new FileExtractResult(outFileIdentify, resultFilename));
        }
Пример #8
0
        private void CreateThemeGraphyBase(ISmartSession session, string algorithmName, string outFileIdentify, string dataIdentify, string templateName, bool isCustom, string colorTableName)
        {
            IMonitoringSubProduct msp = (session.MonitoringSession as IMonitoringSession).ActiveMonitoringSubProduct;

            if (msp == null)
            {
                return;
            }
            IThemeGraphGenerator tgg = (session.MonitoringSession as IMonitoringSession).ThemeGraphGenerator;

            msp.ArgumentProvider.SetArg("ThemeGraphyGenerator", tgg);
            msp.ArgumentProvider.SetArg("OutFileIdentify", outFileIdentify);
            msp.ArgumentProvider.SetArg("ThemeGraphTemplateName", templateName);
            msp.ArgumentProvider.SetArg("colortablename", "colortablename=" + colorTableName);
        }
Пример #9
0
        public IExtractResult ThemeGraphyResult(string extInfos)
        {
            object obj = _argumentProvider.GetArg("ThemeGraphyGenerator");

            if (obj == null)
            {
                return(null);
            }
            IThemeGraphGenerator tgg = obj as IThemeGraphGenerator;

            if (tgg == null)
            {
                return(null);
            }
            string aoiTemplateName         = string.Empty;
            Dictionary <string, int[]> aoi = null;

            GetAOI(out aoiTemplateName, out aoi);
            string outFileIdentify = GetStringArugment("OutFileIdentify");
            string templatName     = GetStringArugment("ThemeGraphTemplateName");

            string[] files = GetStringArray("SelectedPrimaryFiles");
            if (files == null || files.Length == 0)
            {
                return(null);
            }
            PrjEnvelope useRegion = GetArgToPrjEnvelope("UseRegion");

            if (useRegion != null)  //需要限定输出范围
            {
            }
            string colorTabelName = GetColorTableName("colortablename");

            if (string.IsNullOrEmpty(extInfos))
            {
                extInfos = GetStringArugment("extinfo");
            }
            string resultFilename = tgg.Generate(files[0], templatName, MasicAOI(aoi, ref extInfos), extInfos, outFileIdentify, colorTabelName);

            if (string.IsNullOrEmpty(resultFilename))
            {
                return(null);
            }
            return(new FileExtractResult(outFileIdentify, resultFilename));
        }
Пример #10
0
        private IExtractResult IMGAlgorithm()
        {
            object obj = _argumentProvider.GetArg("ThemeGraphyGenerator");

            if (obj == null)
            {
                return(null);
            }
            IThemeGraphGenerator tgg = obj as IThemeGraphGenerator;

            if (tgg == null)
            {
                return(null);
            }
            string aoiTemplateName         = string.Empty;
            Dictionary <string, int[]> aoi = null;

            GetAOI(out aoiTemplateName, out aoi);
            string outFileIdentify = GetStringArgument("OutFileIdentify");
            string templatName     = GetStringArgument("ThemeGraphTemplateName");

            string[] files = GetStringArray("SelectedPrimaryFiles");
            if (files == null || files.Length == 0)
            {
                return(null);
            }
            foreach (string item in files)
            {
                if (!File.Exists(item))
                {
                    return(null);
                }
            }
            //计算网络二值图dat文件
            string dir = AppDomain.CurrentDomain.BaseDirectory + "SystemData\\RasterTemplate\\China_LandRaster.dat";

            if (!File.Exists(dir))
            {
                return(null);
            }
            string datFileName = GenerateNetImageFile(dir, files[0]);

            if (string.IsNullOrEmpty(datFileName))
            {
                return(null);
            }
            string colorTabelName = GetColorTableName("colortablename");

            if (outFileIdentify == "NSNI")  //需要限定输出范围
            {
                RasterIdentify rstId = new RasterIdentify(files[0]);
                if (!string.IsNullOrWhiteSpace(rstId.RegionIdentify))
                {
                    DefinedRegionParse reg        = new DefinedRegionParse();
                    BlockItemGroup     blockGroup = reg.BlockDefined.FindGroup("积雪");
                    PrjEnvelopeItem    envItem    = blockGroup.GetPrjEnvelopeItem(rstId.RegionIdentify);
                    if (envItem != null)
                    {
                        RasterProject.PrjEnvelope prjEnvelope = RasterProject.PrjEnvelope.CreateByCenter(envItem.PrjEnvelope.CenterX, envItem.PrjEnvelope.CenterY, 10, 10);
                        (tgg as CmaThemeGraphGenerator).SetEnvelope(new Layout.GxdEnvelope(prjEnvelope.MinX, prjEnvelope.MaxX, prjEnvelope.MinY, prjEnvelope.MaxY));
                        (tgg as ThemeGraphGenerator).IsFitToTemplateWidth = false;
                    }
                }
            }
            tgg.Generate(datFileName, templatName, null, null, outFileIdentify, colorTabelName);
            string resultFilename = tgg.Save();

            if (string.IsNullOrEmpty(resultFilename))
            {
                return(null);
            }
            return(new FileExtractResult(outFileIdentify, resultFilename));
        }
Пример #11
0
        public override IExtractResult Make(Action <int, string> progressTracker)
        {
            if (!CheckArguments())
            {
                return(null);
            }
            Dictionary <DateTime, List <string> > orderedFiles = GroupByOrbitDate();

            if (orderedFiles.Count == 0)
            {
                return(null);
            }
            object obj = _argumentProvider.GetArg("ThemeGraphyGenerator");

            if (obj == null)
            {
                return(null);
            }
            IThemeGraphGenerator tgg     = obj as IThemeGraphGenerator;
            List <string>        rdpList = new List <string>();//按照日期生成的多个日最大合成数据

            //每天生成一个最大日合成图

            foreach (DateTime time in orderedFiles.Keys)
            {
                RasterMoasicProcesser      processer = new RasterMoasicProcesser();
                List <IRasterDataProvider> srcdata   = new List <IRasterDataProvider>();
                try
                {
                    foreach (string item in orderedFiles[time])
                    {
                        IRasterDataProvider rdp = GeoDataDriver.Open(item) as IRasterDataProvider;
                        if (rdp != null)
                        {
                            srcdata.Add(rdp);
                        }
                    }
                    string             fileName  = null;
                    IFileNameGenerator generator = GetFileNameGenerator();
                    if (generator == null)
                    {
                        fileName = string.Empty;
                    }
                    else
                    {
                        fileName = generator.NewFileName(CreatRasterIndetifyId(orderedFiles[time].ToArray(), "SNW", "MAXI", GetDataIdentify(), ".LDF", null));
                    }
                    using (IRasterDataProvider dstPrd = processer.Moasic <Int16>(srcdata.ToArray(), "LDF", fileName, false, null, "MAX", null, (srcValue, dstValue) => { return(srcValue > dstValue ? srcValue : dstValue); }))
                    {
                        if (dstPrd != null)
                        {
                            rdpList.Add(dstPrd.fileName);
                        }
                    }
                }
                finally
                {
                    foreach (IRasterDataProvider rdp in srcdata)
                    {
                        rdp.Dispose();
                    }
                    srcdata.Clear();
                }
            }
            string templatName              = GetStringArgument("ThemeGraphTemplateName");
            string colorTabelName           = GetColorTableName("colortablename");
            IExtractResultArray resultArray = new ExtractResultArray("MAXI");

            foreach (string file in rdpList)
            {
                tgg.Generate(file, templatName, null, null, "MAXI", colorTabelName);
                string resultFilename = tgg.Save();
                if (string.IsNullOrEmpty(resultFilename))
                {
                    continue;
                }
                resultArray.Add(new FileExtractResult("MAXI", resultFilename));
            }
            if (resultArray != null)
            {
                return(resultArray);
            }
            return(null);
        }
Пример #12
0
        //根据文件名提取区域标识,限定专题图输出数据范围。一般用于制作网络图。
        public static IExtractResult CreateThemeGraphyBase(ISmartSession session, string algorithmName, string outFileIdentify, string colorTableName, string dataIdentify, string templateName, bool isCustom, bool multiSelect, bool isUseRegion)
        {
            IMonitoringSubProduct msp = (session.MonitoringSession as IMonitoringSession).ActiveMonitoringSubProduct;

            if (msp == null)
            {
                return(null);
            }
            object obj = msp.ArgumentProvider.GetArg("SelectedPrimaryFiles");

            //if (obj == null)
            //{
            if (!SetSelectedPrimaryFiles(session, ref obj, msp.ArgumentProvider, algorithmName))
            {
                return(null);
            }
            //}
            string[] files = obj as string[];
            if (files == null || files.Length == 0)
            {
                if (File.Exists(obj.ToString()))
                {
                    files = new string[] { obj.ToString() }
                }
                ;
                else
                {
                    return(null);
                }
            }
            //添加对生成专题图文件类型的判断,排除生成的专题图和统计结果文件,add by wangyu,20120923
            foreach (string fname in files)
            {
                CanCreatThemegraph(fname);
            }
            if (isCustom && !SetAOIArugment(files, msp, multiSelect))
            {
                return(null);
            }
            else if (!isCustom)
            {
                msp.ArgumentProvider.SetArg("AOI", null);
            }
            IThemeGraphGenerator tgg = (session.MonitoringSession as IMonitoringSession).ThemeGraphGenerator;

            msp.ArgumentProvider.SetArg("ThemeGraphyGenerator", tgg);
            msp.ArgumentProvider.SetArg("OutFileIdentify", outFileIdentify);
            msp.ArgumentProvider.SetArg("ThemeGraphTemplateName", templateName);
            if (isUseRegion)// 换为字符串,为区域定义分组名称regionGroupName,为空代表不指定区域。
            {
                RasterIdentify rstId = new RasterIdentify(files[0]);
                if (!string.IsNullOrWhiteSpace(rstId.RegionIdentify))
                {
                    DefinedRegionParse        reg         = new DefinedRegionParse();
                    BlockItemGroup            blockGroup  = reg.BlockDefined.FindGroup("积雪");
                    PrjEnvelopeItem           envItem     = blockGroup.GetPrjEnvelopeItem(rstId.RegionIdentify);
                    RasterProject.PrjEnvelope prjEnvelope = RasterProject.PrjEnvelope.CreateByCenter(envItem.PrjEnvelope.CenterX, envItem.PrjEnvelope.CenterY, 1000, 1000);
                    msp.ArgumentProvider.SetArg("UseRegion", prjEnvelope);
                }
            }
            if (!string.IsNullOrEmpty(colorTableName))
            {
                msp.ArgumentProvider.SetArg("colortablename", "colortablename=" + colorTableName);
            }
            IExtractResult result = msp.Make(null);

            DisplayResultClass.DisplayResult(session, msp, result, false);
            return(result);
        }