Esempio n. 1
0
        protected override void ApplyAttributesOfLayoutTemplate(ILayoutTemplate template)
        {
            string instanceIdentify = _argumentProvider.GetArg("OutFileIdentify") as string;

            if (instanceIdentify == "NCSI" || instanceIdentify == "NMCS")
            {
                string[]       files = GetStringArray("SelectedPrimaryFiles");
                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);
                        ILayout layout = template.Layout;
                        if (layout.Size.Width != 1000 || layout.Size.Height != 1000)
                        {
                            ChangeTemplateSize(layout, 1000, 1000);
                        }
                        _envelope = new Layout.GxdEnvelope(prjEnvelope.MinX, prjEnvelope.MaxX, prjEnvelope.MinY, prjEnvelope.MaxY);
                    }
                }
            }
        }
        private void btnAddRegion_Click(object sender, EventArgs e)
        {
            errorProvider1.Clear();
            string      name = textBox1.Text;
            double      minx = doubleTextBox1.Value;
            double      maxx = doubleTextBox2.Value;
            double      miny = doubleTextBox3.Value;
            double      maxy = doubleTextBox4.Value;
            PrjEnvelope env  = new RasterProject.PrjEnvelope(minx, maxx, miny, maxy);

            if (string.IsNullOrWhiteSpace(name))
            {
                errorProvider1.SetError(textBox1, "名字不能为空");
                return;
            }
            if (env.IsEmpty || env.Width <= 0 || env.Height <= 0 ||
                env.MinX < -180 || env.MaxX > 180 ||
                env.MinY < -90 || env.MaxY > 90)
            {
                errorProvider1.SetError(panel2, "范围不合法");
                return;
            }
            if (ContainItem(name))
            {
                errorProvider1.SetError(textBox1, "已经含有该名字的范围定义");
                return;
            }
            PrjEnvelopeItem item = new PrjEnvelopeItem(name, env);

            AddDefinedRegion(item);
        }
Esempio n. 3
0
        private void btnAddEvp_Click(object sender, EventArgs e)
        {
            string evpName = txtRegionName.Text.Trim();

            if (string.IsNullOrWhiteSpace(evpName))
            {
                MsgBox.ShowInfo("请输入范围标识");
                return;
            }
            foreach (PrjEnvelopeItem item in _envList)
            {
                if (item.Name == evpName)
                {
                    MsgBox.ShowInfo("已存在名为" + evpName + "的区域范围名称,请重新输入!");
                    return;
                }
            }
            RasterProject.PrjEnvelope envelope = GetEnvelopeFromUI();
            if (envelope.Width == 0 || envelope.Height == 0 ||
                !CheckRegion(envelope.MinX, envelope.MaxX, -180, 180) ||
                !CheckRegion(envelope.MinY, envelope.MaxY, -90, 90))
            {
                MsgBox.ShowInfo("请输入正确的地理坐标范围值!");
                return;
            }
            PrjEnvelopeItem env = new PrjEnvelopeItem(txtRegionName.Text, envelope);

            lstRegions.Items.Add(env.Name);
            _envList.Add(env);
        }
Esempio n. 4
0
        public static IExtractResult StatAnaylsisBase(ISmartSession session, string outFileIdentify, string aoiTemplate, string subProductIdentify, string algorithmName, bool isCustom, bool multiSelect)
        {
            (session.MonitoringSession as IMonitoringSession).ChangeActiveSubProduct(subProductIdentify);
            GetCommandAndExecute(session, 6602);
            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);
                }
            }
            CoordEnvelope customEnv = null;

            if (isCustom && !SetAOIArugment(files, msp, multiSelect, out customEnv))
            {
                return(null);
            }
            else if (!isCustom)
            {
                msp.ArgumentProvider.SetArg("AOI", string.IsNullOrEmpty(aoiTemplate) ? null : aoiTemplate);
            }
            else
            if (customEnv != null)
            {
                RasterProject.PrjEnvelope prjEnvelope = new RasterProject.PrjEnvelope(customEnv.MinX, customEnv.MaxX, customEnv.MinY, customEnv.MaxY);
                msp.ArgumentProvider.SetArg("UseRegion", prjEnvelope);
            }
            try
            {
                msp.ArgumentProvider.SetArg("FileNameGenerator", (session.MonitoringSession as IMonitoringSession).FileNameGenerator);
                msp.ArgumentProvider.SetArg("OutFileIdentify", outFileIdentify);
                IExtractResult result = msp.Make(null);
                DisplayResultClass.DisplayResult(session, msp, result, false);
                return(result);
            }
            catch
            {
                return(null);
            }
        }
Esempio n. 5
0
        private void btnSaveNewRegion_Click(object sender, EventArgs e)
        {
            string evpName = txtRegionName.Text.Trim();

            if (string.IsNullOrWhiteSpace(evpName))
            {
                MessageBox.Show("请输入范围标识");
                return;
            }
            foreach (PrjEnvelopeItem item in _envList)
            {
                if (item.Name == evpName)
                {
                    MessageBox.Show("已存在名为" + evpName + "的区域范围名称,请重新输入!");
                    return;
                }
            }
            RasterProject.PrjEnvelope env = new RasterProject.PrjEnvelope(dtbxMinX.Value, dtbxMaxX.Value, dtbxMinY.Value, dtbxMaxY.Value);
            if (env.Width <= 0 || env.Height <= 0 ||
                env.MinX < -180 || env.MaxX > 180 ||
                env.MinY < -90 || env.MaxY > 90)
            {
                MessageBox.Show("经纬度值超出有效值");
                return;
            }
            if (env.MinX == env.MaxX || env.MinY == env.MaxY)
            {
                MessageBox.Show("范围最大最小值不能相等!");
                return;
            }
            PrjEnvelopeItem newenv = new PrjEnvelopeItem(txtRegionName.Text, env);

            _envList.Add(newenv);
            cbxRegionlist.Items.Add(newenv.Name);
            cbxRegionlist.SelectedItem = newenv.Name;
            cbxRegionlist.Visible      = true;
            txtRegionName.Visible      = false;
            btnSaveNewRegion.Enabled   = false;
            btnAddRegion.Enabled       = true;
            btnCancelNewReg.Enabled    = false;
        }
Esempio n. 6
0
 public OriginData2Database(string inputDir, Dictionary <string, List <string> > originFiles2Base, bool isOverrideRecord, Action <string> calProBack)
 {
     InitializeComponent();
     _uniformOriginFiles = originFiles2Base;
     _inputDir           = inputDir;
     _isOverrideRecord   = isOverrideRecord;
     _dbConnect          = new ConnectMySqlCloud();
     _calProBack         = calProBack;
     if (File.Exists(_path))
     {
         InputArg arg = InputArg.ParseXml(_path);
         if (arg != null && arg.ValidEnvelopes != null && arg.ValidEnvelopes.Length > 0)
         {
             _chinaENV = arg.ValidEnvelopes[0].PrjEnvelope;
         }
     }
     if (_chinaENV == null)
     {
         _chinaENV = new RasterProject.PrjEnvelope(65, 145, 10, 60);
     }
 }
Esempio n. 7
0
 private void AddDefaultRegions()
 {
     if (File.Exists(_path))
     {
         InputArg arg = InputArg.ParseXml(_path);
         if (arg != null)
         {
             _xmlSelectedNode = arg.Bands;
             if (Directory.Exists(arg.InputDir))
             {
                 txtInDir.Text = arg.InputDir;
             }
             txtOutDir.Text = arg.OutputDir;
             if (arg.ValidEnvelopes != null && arg.ValidEnvelopes.Length > 0)
             {
                 _envList = arg.ValidEnvelopes.ToList();
                 foreach (PrjEnvelopeItem item in _envList)
                 {
                     cbxRegionlist.Items.Add(item.Name);
                 }
             }
         }
     }
     else
     {
         RasterProject.PrjEnvelope globalEnv    = new RasterProject.PrjEnvelope(-180, 180, -90, 90);
         PrjEnvelopeItem           globalPrjEnv = new PrjEnvelopeItem("Global", globalEnv);
         _envList.Add(globalPrjEnv);
         RasterProject.PrjEnvelope chinaEnv    = new RasterProject.PrjEnvelope(65, 145, 10, 60);
         PrjEnvelopeItem           chinaPrjEnv = new PrjEnvelopeItem("China", chinaEnv);
         _envList.Add(chinaPrjEnv);
         foreach (PrjEnvelopeItem env in _envList)
         {
             cbxRegionlist.Items.Add(env.Name);
         }
         cbxRegionlist.SelectedIndex = 1;
     }
 }
Esempio n. 8
0
        private void btnExcute_Click(object sender, EventArgs e)
        {
            //Save arg xml
            ////check argments
            if (CheckArgument() == false)
            {
                MessageBox.Show("参数设置不完整!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }
            InputArg arg = new InputArg();

            if (rdbInputFiles.Checked)
            {
                arg.InputFilename = txtInputFiles.Text;
            }
            else
            {
                arg.InputFilename = txtInputDir.Text + " " + txtFilter.Text;
            }
            if (rdoAllBands.Checked == true)
            {
                arg.Bands = null;
            }
            else
            {
                int      bandNo;
                string[] bandNos = txtBands.Text.Trim().Split(',');
                arg.Bands = new int[bandNos.Length];
                for (int i = 0; i < bandNos.Length; i++)
                {
                    if (int.TryParse(bandNos[i], out bandNo))
                    {
                        arg.Bands[i] = bandNo;
                    }
                }
            }
            arg.OutputDir = txtOutputDir.Text;
            if (rdoCResolution.Checked == true)
            {
                float resX;
                if (float.TryParse(txtResolution.Text, out resX))
                {
                    arg.ResolutionX = arg.ResolutionY = resX;
                }
            }
            //region
            arg.ValidEnvelopes = new PrjEnvelopeItem[_envList.Count()];
            arg.Envelopes      = new PrjEnvelopeItem[_envList.Count()];
            if (ckbMoasic.Checked == true)
            {
                arg.MosaicInputArg = new MosaicInputArg();
                RasterProject.PrjEnvelope envelope = GetEnvelopeFromUI();
                arg.MosaicInputArg.Envelope  = new PrjEnvelopeItem(txtRegionName.Text, envelope);
                arg.MosaicInputArg.OutputDir = txtMoasicOutDir.Text;
            }
            for (int i = 0; i < _envList.Count; i++)
            {
                arg.ValidEnvelopes[i] =
                    arg.Envelopes[i]  = _envList[i];
            }
            arg.IsOnlySaveMosaicFile = ckbOnlyMoasicFile.Checked;
            arg.ProjectionIdentify   = "GLL";
            arg.ToXml(_path);
            DialogResult = DialogResult.OK;
            Close();
        }
Esempio n. 9
0
 public static RasterProject.PrjEnvelope GetAIRSFileEnv(string fileName)
 {
     RasterProject.PrjEnvelope env = new RasterProject.PrjEnvelope(-180, 180, -90, 90);
     try
     {
         string xmlf = fileName + ".xml";
         if (File.Exists(xmlf))
         {
             float    WestBoundingCoordinate, NorthBoundingCoordinate, EastBoundingCoordinate, SouthBoundingCoordinate;
             XElement xml = XElement.Load(xmlf);
             if (xml == null)
             {
                 return(env);
             }
             IEnumerable <XElement> elements = xml.Elements();
             foreach (XElement ele in elements)
             {
                 if (ele == null || ele.IsEmpty || ele.Name != "SpatialDomainContainer")
                 {
                     continue;
                 }
                 IEnumerable <XElement> subelements = ele.Elements();
                 foreach (XElement xel in subelements)
                 {
                     if (xel == null || xel.IsEmpty || xel.Name != "HorizontalSpatialDomainContainer")
                     {
                         continue;
                     }
                     {
                         IEnumerable <XElement> subsubelements = xel.Elements();
                         foreach (XElement subxel in subsubelements)
                         {
                             if (subxel == null || subxel.IsEmpty || subxel.Name != "BoundingRectangle")
                             {
                                 continue;
                             }
                             XElement BoundingRectangleX = subxel;
                             if (!BoundingRectangleX.IsEmpty)
                             {
                                 XElement WestBoundingCoordinateX = BoundingRectangleX.Element("WestBoundingCoordinate");
                                 WestBoundingCoordinate = float.Parse(WestBoundingCoordinateX.Value);
                                 XElement NorthBoundingCoordinateX = BoundingRectangleX.Element("NorthBoundingCoordinate");
                                 NorthBoundingCoordinate = float.Parse(NorthBoundingCoordinateX.Value);
                                 XElement EastBoundingCoordinateX = BoundingRectangleX.Element("EastBoundingCoordinate");
                                 EastBoundingCoordinate = float.Parse(EastBoundingCoordinateX.Value);
                                 XElement SouthBoundingCoordinateX = BoundingRectangleX.Element("SouthBoundingCoordinate");
                                 SouthBoundingCoordinate = float.Parse(SouthBoundingCoordinateX.Value);
                                 return(new RasterProject.PrjEnvelope(WestBoundingCoordinate, EastBoundingCoordinate, SouthBoundingCoordinate, NorthBoundingCoordinate));
                             }
                         }
                     }
                 }
             }
         }
         return(env);
     }
     catch (System.Exception ex)
     {
         return(env);
     }
 }
Esempio n. 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));
        }
Esempio n. 11
0
 public override void ComputeDstEnvelope(RSS.Core.DF.IRasterDataProvider srcRaster, Project.ISpatialReference dstSpatialRef, out RasterProject.PrjEnvelope maxPrjEnvelope, Action <int, string> progressCallback)
 {
     if (dstSpatialRef == null || dstSpatialRef.ProjectionCoordSystem == null)
     {
         maxPrjEnvelope = new PrjEnvelope(60, 150, -70, 70);
     }
     else
     {
         maxPrjEnvelope = null;
     }
 }
Esempio n. 12
0
 public override void ComputeDstEnvelope(RSS.Core.DF.IRasterDataProvider srcRaster, Project.ISpatialReference dstSpatialRef, out RasterProject.PrjEnvelope maxPrjEnvelope, Action <int, string> progressCallback)
 {
     //throw new NotImplementedException();
     if (srcRaster != null)
     {
         Size     srcSize = new Size(srcRaster.Width, srcRaster.Height);
         double[] xs, ys;
         ReadyLocations(srcRaster, dstSpatialRef, srcSize, out xs, out ys, out maxPrjEnvelope, progressCallback);
     }
     else
     {
         maxPrjEnvelope = PrjEnvelope.Empty;
     }
 }
Esempio n. 13
0
        /// <summary>
        /// 将扫描得到的原始数据文件归档
        /// </summary>
        /// <param name="files"></param>
        /// <param name="dir"></param>
        /// <param name="mode"></param>
        /// <param name="state"></param>
        /// <returns></returns>
        private static List <string> Uniformfiles2Dir(List <string> files, string dir, string mode, Action <string> state)
        {
            List <string> filesDir = new List <string>();
            string        dstDir = "", fname, dstfname, tempf, tempdstf;
            DateTime      fdate = DateTime.MinValue;
            StringBuilder fn, dstfn, dstDirB;

            foreach (string file in files)
            {
                fname = Path.GetFileName(file);
                if (mode.ToUpper() == "AIRS")
                {
                    #region 筛选中国区的AIRS文件
                    RasterProject.PrjEnvelope       env        = AIRSDataProcesser.GetAIRSFileEnv(file);
                    GeoDo.RasterProject.PrjEnvelope dstmainPrj = GeoDo.RasterProject.PrjEnvelope.Intersect(_chinaENV, env);
                    if (dstmainPrj == null || dstmainPrj.Width <= 0 || dstmainPrj.Height <= 0)
                    {
                        if (state != null)
                        {
                            state("文件不在中国区!" + fname);
                        }
                        continue;
                    }
                    #endregion
                }
                if (state != null)
                {
                    state("开始归档" + fname + "...");
                }
                fdate   = GetFileDateTime(fname, mode);
                dstDirB = new StringBuilder(dir);
                dstDirB.Append("\\").Append(fdate.Year.ToString()).Append("\\").Append(fdate.Month.ToString());
                dstDir = dstDirB.ToString();
                if (!Directory.Exists(dstDir))
                {
                    Directory.CreateDirectory(dstDir);
                }
                dstfname = dstDirB.Append("\\").Append(fname).ToString(); //Path.Combine(dstDir, fname);
                //文件复制
                if (mode.ToUpper() != "CLOUDSAT")
                {
                    if (dstfname != file && !File.Exists(dstfname))
                    {
                        System.IO.File.Copy(file, dstfname);
                    }
                    else
                    {
                        if (state != null)
                        {
                            state("文件已存在或源数据位置与目标数据位置相同,跳过归档!");
                        }
                    }
                    if (!filesDir.Contains(dstfname))
                    {
                        filesDir.Add(dstfname);
                    }
                    if (mode == "AIRS")
                    {
                        fn       = new StringBuilder(file);
                        dstfn    = new StringBuilder(dstfname);
                        tempf    = fn.Append(".xml").ToString();
                        tempdstf = dstfn.Append(".xml").ToString();
                        if (File.Exists(tempf) && !File.Exists(tempdstf))
                        {
                            System.IO.File.Copy(tempf, tempdstf, true);
                        }
                        tempf    = fn.Append(".jpg").ToString();
                        tempdstf = dstfn.Append(".jpg").ToString();
                        if (File.Exists(tempf) && !File.Exists(tempdstf))
                        {
                            System.IO.File.Copy(tempf, tempdstf, true);
                        }
                        tempf    = fn.Append(".map.gz").ToString();
                        tempdstf = dstfn.Append(".map.gz").ToString();
                        if (File.Exists(tempf) && !File.Exists(tempdstf))
                        {
                            System.IO.File.Copy(tempf, tempdstf, true);
                        }
                        //if (File.Exists(file + ".jpg") && !File.Exists(dstfname + ".jpg"))
                        //    System.IO.File.Copy(file + ".jpg", dstfname + ".jpg", true);
                        //if (File.Exists(file + ".map.gz") && !File.Exists(dstfname + ".map.gz"))
                        //    System.IO.File.Copy(file + ".map.gz", dstfname + ".map.gz", true);
                    }
                }
                else
                {
                    UnzipCloudSATFiles(file, dstDir, state);
                    filesDir.Add(dstfname.Substring(0, dstfname.Length - 4));
                }
                if (state != null)
                {
                    state("归档完成!");
                }
            }
            if (state != null)
            {
                state(mode + "数据归档完成!");
            }
            return(filesDir);
        }
Esempio n. 14
0
        //根据文件名提取区域标识,限定专题图输出数据范围。一般用于制作网络图。
        public static IExtractResult CreateThemeGraphyBase(ISmartSession session, string algorithmName, string outFileIdentify, string colorTableName, string dataIdentify, string templateName, bool isCustom, bool multiSelect, bool isUseRegion, int genralAndTheme)
        {
            IMonitoringSubProduct msp = (session.MonitoringSession as IMonitoringSession).ActiveMonitoringSubProduct;

            if (msp == null)
            {
                return(null);
            }
            string[]      files     = null;
            CoordEnvelope customEnv = null;

            if (genralAndTheme == 0)
            {
                object obj = msp.ArgumentProvider.GetArg("SelectedPrimaryFiles");
                if (!SetSelectedPrimaryFiles(session, ref obj, msp.ArgumentProvider, algorithmName))
                {
                    return(null);
                }
                files = obj as string[];
                if (files == null || files.Length == 0)
                {
                    if (File.Exists(obj.ToString()))
                    {
                        files = new string[] { obj.ToString() }
                    }
                    ;
                    else
                    {
                        return(null);
                    }
                }
                //by chennan 20130319 根据需要查找相应文件
                UpdateFilesByDataIdentify(ref files, dataIdentify);

                //添加对生成专题图文件类型的判断,排除生成的专题图和统计结果文件,add by wangyu,20120923
                foreach (string fname in files)
                {
                    CanCreatThemegraph(fname);
                }
                msp.ArgumentProvider.SetArg("SelectedPrimaryFiles", files);

                if (isCustom && !SetAOIArugment(files, msp, multiSelect, out customEnv))//用户自定义区域
                {
                    return(null);
                }
                else if (!isCustom)
                {
                    msp.ArgumentProvider.SetArg("AOI", null);
                }
            }
            IThemeGraphGenerator tgg = new GeoDo.RSS.MIF.Prds.Comm.CmaThemeGraphGenerator(session);

            msp.ArgumentProvider.SetArg("ThemeGraphyGenerator", tgg);
            msp.ArgumentProvider.SetArg("OutFileIdentify", outFileIdentify);
            msp.ArgumentProvider.SetArg("ThemeGraphTemplateName", templateName);
            if (customEnv != null)
            {
                RasterProject.PrjEnvelope prjEnvelope = new RasterProject.PrjEnvelope(customEnv.MinX, customEnv.MaxX, customEnv.MinY, customEnv.MaxY);
                msp.ArgumentProvider.SetArg("UseRegion", prjEnvelope);
            }
            else 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);
                    if (envItem != null)
                    {
                        RasterProject.PrjEnvelope prjEnvelope = RasterProject.PrjEnvelope.CreateByCenter(envItem.PrjEnvelope.CenterX, envItem.PrjEnvelope.CenterY, 10, 10);
                        msp.ArgumentProvider.SetArg("UseRegion", prjEnvelope);
                    }
                }
            }
            if (!string.IsNullOrEmpty(colorTableName))
            {
                msp.ArgumentProvider.SetArg("colortablename", "colortablename=" + colorTableName);
            }

            IProgressMonitor     tracker  = null;
            Action <int, string> progress = null;

            try
            {
                tracker = session.ProgressMonitorManager.DefaultProgressMonitor;
                if (tracker != null)
                {
                    tracker.Start(false);
                    tracker.Reset("正在生成...", 100);
                    progress = (p, txt) =>
                    {
                        tracker.Boost(p, txt);
                    };
                }
                IExtractResult result = msp.Make(progress);
                DisplayResultClass.DisplayResult(session, msp, result, false);
                return(result);
            }
            finally
            {
                if (tracker != null)
                {
                    tracker.Finish();
                }
            }
        }
Esempio n. 15
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, bool isOriginal)
        {
            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, isOriginal, out outFileIdentify, out templateName);
            if (string.IsNullOrEmpty(outFileIdentify) || string.IsNullOrEmpty(templateName))
            {
                return(null);
            }
            CoordEnvelope customEnv = null;

            if (isCustom && !SetAOIArugment(files, msp, multiSelect, out customEnv))
            {
                return(null);
            }
            else if (!isCustom)
            {
                msp.ArgumentProvider.SetArg("AOI", null);
            }
            IThemeGraphGenerator tgg = new GeoDo.RSS.MIF.Prds.Comm.CmaThemeGraphGenerator(session);

            if (customEnv != null)
            {
                RasterProject.PrjEnvelope prjEnvelope = new RasterProject.PrjEnvelope(customEnv.MinX, customEnv.MaxX, customEnv.MinY, customEnv.MaxY);
                msp.ArgumentProvider.SetArg("UseRegion", prjEnvelope);
            }
            msp.ArgumentProvider.SetArg("ThemeGraphyGenerator", tgg);
            msp.ArgumentProvider.SetArg("OutFileIdentify", outFileIdentify);
            msp.ArgumentProvider.SetArg("ThemeGraphTemplateName", templateName);
            SetThemeEnvelope(tgg, customEnv);
            IExtractResult result = msp.Make(null);

            DisplayResultClass.DisplayResult(session, msp, result, false);
            return(result);
        }
Esempio n. 16
0
 public override void ComputeDstEnvelope(RSS.Core.DF.IRasterDataProvider srcRaster, Project.ISpatialReference dstSpatialRef, out RasterProject.PrjEnvelope maxPrjEnvelope, Action <int, string> progressCallback)
 {
     throw new NotImplementedException();
 }
Esempio n. 17
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);
        }