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)); } }
/// <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); }
public MonitoringSession(ISmartSession session) { _session = session; _themeGraphGenerator = new ThemeGraphGenerator(session); _filenameGenerator = new FileNameGeneratorDefault(); _extractingSession = new ExtractingSession(session); LoadMonitoringTheme(); }
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); }
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); }
public AutoGenerateExecutor(IResultHandler resultHandler, IMonitoringProduct monitoringProduct, IThemeGraphGenerator layoutGenerator, IFileNameGenerator fileNameGenerator) { _resultHandler = resultHandler; _monitoringProduct = monitoringProduct; _layoutGenerator = layoutGenerator; _fileNameGenerator = fileNameGenerator; _contextEnvironment = new ContextEnvironment(); }
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)); }
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); }
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)); }
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)); }
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); }
//根据文件名提取区域标识,限定专题图输出数据范围。一般用于制作网络图。 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); }