Exemplo n.º 1
0
            public static OverViewObject CreateOverViewObject(ProjectionInfo pInfo)
            {
                OverViewObject ov = new monitoringPage.OverViewObject();

                ov.ProjectionInfo = pInfo;
                string          pngfilename = Path.ChangeExtension(Path.Combine(DataPathHelper.ProjectionRootPath + pInfo.datapath), ".overview.png");
                PrjEnvelopeItem prjEnv      = new PrjEnvelopeItem("", new PrjEnvelope(pInfo.minx, pInfo.maxx, pInfo.miny, pInfo.maxy));

                if (!File.Exists(pngfilename))
                {
                    return(null);
                }
                Core.DrawEngine.CoordEnvelope env = CoordEnvelopeFromPrj(prjEnv);
                Bitmap bmp = LoadImage(pngfilename);

                if (bmp == null || bmp.Height * bmp.Width > 1000000)
                {
                    return(null);
                }
                if (env.Height <= 0 || env.Width <= 0 || env.Height * env.Width > 1600)
                {
                    return(null);
                }
                ov.OverviewName   = Path.GetFileNameWithoutExtension(pngfilename);
                ov.ProjectionInfo = pInfo;
                ov.Envelope       = env;
                ov.Overview       = bmp;
                return(ov);
            }
Exemplo n.º 2
0
        private static void AddRegionToNode(RadTreeNode node, PrjEnvelopeItem env)
        {
            RadTreeNode item = new RadTreeNode(env.ToString());

            item.Tag = env;
            node.Nodes.Add(item);
        }
Exemplo n.º 3
0
        private void AddAoiToVectorHost(ISimpleVectorObjectHost host, PrjEnvelopeItem prjItem)
        {
            PrjEnvelope prjEnv = prjItem.PrjEnvelope;

            Core.DrawEngine.CoordEnvelope env = new Core.DrawEngine.CoordEnvelope(prjEnv.MinX, prjEnv.MaxX, prjEnv.MinY, prjEnv.MaxY);
            host.Add(new SimpleVectorObject(prjItem.Name, env));
        }
Exemplo n.º 4
0
 public static InputArg ParseStatRegions(string regionxml)
 {
     if (string.IsNullOrWhiteSpace(regionxml))
     {
         throw new ArgumentNullException("argXml", "参数文件为空");
     }
     if (!File.Exists(regionxml))
     {
         throw new FileNotFoundException("参数文件不存在" + regionxml);
     }
     try
     {
         XElement          xml            = XElement.Load(regionxml);
         InputArg          arg            = new InputArg();
         PrjEnvelopeItem[] validEnvelopes = ParseEnvelopes(xml.Element("ValidEnvelopes"));
         if (validEnvelopes.Length != 0)
         {
             arg.ValidEnvelopes = validEnvelopes;
         }
         PrjEnvelopeItem selectedRegion = ParseEnvelope(xml.Element("SelectedRegion").Element("Envelope"));
         if (selectedRegion != null)
         {
             arg.SelectedRegionEnvelope = selectedRegion;
         }
         return(arg);
     }
     catch (Exception ex)
     {
         throw new Exception("解析投影输入参数文件失败" + ex.Message, ex);
     }
 }
Exemplo n.º 5
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);
        }
Exemplo n.º 6
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);
                    }
                }
            }
        }
Exemplo n.º 7
0
        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);
        }
Exemplo n.º 8
0
        private void AddDefinedRegion(PrjEnvelopeItem item)
        {
            RadTreeNode node = new RadTreeNode(item.Name);

            node.Tag = item;
            _tree.Nodes.Add(node);
            _items.Add(item);
        }
Exemplo n.º 9
0
        private void AddDataOverView(ProjectionInfo pInfo)
        {
            string          thumbnailFile = Path.ChangeExtension(Path.Combine(DataPathHelper.ProjectionRootPath + pInfo.datapath), ".overview.png");
            PrjEnvelopeItem prjEnv        = new PrjEnvelopeItem("", new PrjEnvelope(pInfo.minx, pInfo.maxx, pInfo.miny, pInfo.maxy));
            OverViewObject  ov            = OverViewObject.CreateOverViewObject(pInfo);

            if (ov == null)
            {
                return;
            }
            _lstOverviews.Add(ov);
        }
Exemplo n.º 10
0
        private void btnAddRegion_Click(object sender, EventArgs e)
        {
            errorProvider1.Clear();
            string      name     = textBox1.Text;
            string      identify = txtIdentify.Text;
            PrjEnvelope env      = GetEnvelopeFromUI();

            if (string.IsNullOrWhiteSpace(name))
            {
                errorProvider1.SetError(textBox1, "名字不能为空");
                return;
            }
            if (env.IsEmpty || env.Width <= 0 || env.Height <= 0)
            {
                errorProvider1.SetError(radCenter, "范围不合法,不能为空或零");
                return;
            }
            if (env.MinX < -180d)
            {
                errorProvider1.SetError(radCenter, "范围不合法,最小经度不能小于-180");
                return;
            }
            if (env.MaxX > 180d)
            {
                errorProvider1.SetError(radCenter, "范围不合法,最大经度不能大于180");
                return;
            }
            if (env.MinY < -90d)
            {
                errorProvider1.SetError(radCenter, "范围不合法,最小纬度不能小于-90");
                return;
            }
            if (env.MaxY > 90d)
            {
                errorProvider1.SetError(radCenter, "范围不合法,最大纬度不能大于90");
                return;
            }
            BlockItemGroup group = GetSelectedGroup();

            if (group == null)
            {
                errorProvider1.SetError(panel1, "请选择或者添加一个分组");
                return;
            }
            if (group.GetPrjEnvelopeItem(identify) != null)
            {
                errorProvider1.SetError(textBox1, "标识不能重复");
                return;
            }
            PrjEnvelopeItem item = new PrjEnvelopeItem(name, env, identify);

            AddDefinedRegion(item);
        }
Exemplo n.º 11
0
 private void GetMapInfo(out PrjEnvelopeItem[] prjEnvelopeItem, out float resolutionX, out float resolutionY)
 {
     prjEnvelopeItem = null;
     resolutionX     = 0;
     resolutionY     = 0;
     if (rbAllFile.Checked)
     {
         resolutionX     = ucPrjEnvelopes1.ResolutionX;
         resolutionY     = ucPrjEnvelopes1.ResolutionY;
         prjEnvelopeItem = null;
     }
     else if (rbCenter.Checked)
     {
         resolutionX = ucPrjEnvelopes1.ResolutionX;
         resolutionY = ucPrjEnvelopes1.ResolutionY;
         if (_dstSpatialRef == null || _dstSpatialRef.ProjectionCoordSystem == null)
         {
             prjEnvelopeItem = ucPrjEnvelopes1.PrjEnvelopes;
         }
         else
         {
             PrjEnvelope env = GetPrjEnvelopeFromCenter(resolutionX, resolutionY);
             prjEnvelopeItem = new PrjEnvelopeItem[] { new PrjEnvelopeItem("AOI", env) };
         }
     }
     else if (rbBlocks.Checked)//自定义分幅
     {
         resolutionX = ucPrjEnvelopes1.ResolutionX;
         resolutionY = ucPrjEnvelopes1.ResolutionY;
         if (_dstSpatialRef == null || _dstSpatialRef.ProjectionCoordSystem == null)
         {
             prjEnvelopeItem = ucPrjEnvelopes1.PrjEnvelopes;
         }
         else
         {
             PrjEnvelopeItem[] geoItems = ucPrjEnvelopes1.PrjEnvelopes;
             prjEnvelopeItem = new PrjEnvelopeItem[geoItems.Length];
             IProjectionTransform tran = ProjectionTransformFactory.GetProjectionTransform(SpatialReference.GetDefault(), _dstSpatialRef);
             for (int i = 0; i < geoItems.Length; i++)
             {
                 double[] xs = new double[] { geoItems[i].PrjEnvelope.LeftTop.X, geoItems[i].PrjEnvelope.RightBottom.X };
                 double[] ys = new double[] { geoItems[i].PrjEnvelope.LeftTop.Y, geoItems[i].PrjEnvelope.RightBottom.Y };
                 tran.Transform(xs, ys);
                 double      minx = Math.Min(xs[0], xs[1]);
                 double      maxx = Math.Max(xs[0], xs[1]);
                 double      miny = Math.Min(ys[0], ys[1]);
                 double      maxy = Math.Max(ys[0], ys[1]);
                 PrjEnvelope env  = new PrjEnvelope(minx, maxx, miny, maxy);
                 prjEnvelopeItem[i] = new PrjEnvelopeItem(geoItems[i].Name, env);
             }
         }
     }
 }
Exemplo n.º 12
0
 private XElement EnvelopeToXmlValue(PrjEnvelopeItem item)
 {
     if (item == null)
     {
         return(null);
     }
     return(new XElement("Envelope",
                         new XAttribute("name", item.Name),
                         new XAttribute("minx", item.PrjEnvelope.MinX),
                         new XAttribute("maxx", item.PrjEnvelope.MaxX),
                         new XAttribute("miny", item.PrjEnvelope.MinY),
                         new XAttribute("maxy", item.PrjEnvelope.MaxY)));
 }
Exemplo n.º 13
0
        private void btnDelete_Click(object sender, EventArgs e)
        {
            RadTreeNode node = _tree.SelectedNode;

            if (node == null)
            {
                return;
            }
            PrjEnvelopeItem item = node.Tag as PrjEnvelopeItem;

            _items.Remove(item);
            _tree.Nodes.Remove(node);
        }
Exemplo n.º 14
0
        private void Editfile(string file, string outputPath)
        {
            Match  match      = _regex.Match(file);
            string fileRegion = match.Groups["region"].Value;
            string region     = fileRegion.Replace("0S", "0D");

            if (string.IsNullOrWhiteSpace(region))
            {
                WriteLog("[失败]无法识别文件区域");
                return;
            }
            PrjEnvelopeItem item = _group.GetPrjEnvelopeItem(region);

            if (item == null || item.PrjEnvelope == null)
            {
                WriteLog("[失败]区域" + region + "无法匹配");
                return;
            }
            using (IRasterDataProvider raster = GeoDataDriver.Open(file) as IRasterDataProvider)
            {
                if (!(raster is ILdfDataProvider))
                {
                    WriteLog("[失败]源文件无法读取");
                    return;
                }
            }
            string destFile = Path.Combine(outputPath, Path.GetFileNameWithoutExtension(file) + "_XDT.LDF").Replace(fileRegion, region);

            if (File.Exists(destFile))
            {
                WriteLog("[失败]目标文件已经存在" + destFile);
                return;
            }
            File.Copy(file, destFile, true);
            try
            {
                CoordEnvelope newEnv = new CoordEnvelope(item.PrjEnvelope.MinX + 0.005d, item.PrjEnvelope.MaxX - 0.005d, item.PrjEnvelope.MinY + 0.005d, item.PrjEnvelope.MaxY - 0.005d);
                using (IRasterDataProvider raster = GeoDataDriver.Open(destFile, RSS.Core.DF.enumDataProviderAccess.Update, null) as IRasterDataProvider)
                {
                    (raster as ILdfDataProvider).Update(newEnv);
                    (raster as ILdfDataProvider).IsStoreHeaderChanged = true;
                    (raster as ILdfDataProvider).UpdateHeader();
                }
                WriteLog("[成功],目标文件" + destFile);
            }
            catch (Exception ex)
            {
                WriteLog(ex.Message);
                File.Delete(destFile);
            }
        }
Exemplo n.º 15
0
        private static MosaicInputArg ParseMosaic(XElement mosaic)
        {
            if (mosaic == null)
            {
                return(null);
            }
            string          outputdir = mosaic.Element("OutputDir").Value;
            PrjEnvelopeItem env       = ParseEnvelope(mosaic.Element("Envelope"));
            MosaicInputArg  mosaicArg = new MosaicInputArg();

            mosaicArg.OutputDir = outputdir;
            mosaicArg.Envelope  = env;
            return(mosaicArg);
        }
Exemplo n.º 16
0
        private void lstRegions_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (lstRegions.SelectedItem == null)
            {
                return;
            }
            string          name = lstRegions.SelectedItem.ToString();
            PrjEnvelopeItem p    = GetEnvelopeItemByName(name);

            if (p == null)
            {
                return;
            }
            txtRegionName.Text = p.Name;
            SetEnvelopeToUI(p.PrjEnvelope);
        }
Exemplo n.º 17
0
        /// <summary>
        /// FY3A_MERSI_GBAL_L1_20120808_0000_1000M_MS.HDF->
        /// FY3A_MERSI_GBAL_GLL_L1_20120808_0000_1000M_MS_D.ldf
        /// </summary>
        /// <param name="inArg"></param>
        /// <param name="dataIdentify"></param>
        /// <returns></returns>
        private string CreateMosaicFilename(InputArg inArg, DataIdentify dataIdentify, string projectionIdentify, float resolution, string station, string dayOrNight)
        {
            PrjEnvelopeItem item = inArg.MosaicInputArg.Envelope;

            return(string.Format("{0}_{1}_{2}_{3}_{4}_{5}_{6}_{7}_{8}_{9}.ldf",
                                 dataIdentify.Satellite,
                                 dataIdentify.Sensor,
                                 item.Name,
                                 projectionIdentify,
                                 "L1",
                                 dataIdentify.OrbitDateTime.ToString("yyyyMMdd"),
                                 string.IsNullOrWhiteSpace(inArg.OrbitIdentify) ? "0000" : inArg.OrbitIdentify,
                                 projectionIdentify == "GLL" ? GLLResolutionIdentify(resolution) : ResolutionIdentify(resolution),
                                 station,
                                 dayOrNight
                                 ));
        }
Exemplo n.º 18
0
        private static PrjEnvelopeItem[] ParseEnvelopes(XElement xml)
        {
            List <PrjEnvelopeItem> items = new List <PrjEnvelopeItem>();
            IEnumerable <XElement> els   = xml.Elements("EnvelopeItem");

            foreach (XElement item in els)
            {
                string      name = item.Attribute("name").Value;
                PrjEnvelope env  = ParseEnvelope(item);
                if (env != null)
                {
                    PrjEnvelopeItem envItem = new PrjEnvelopeItem(name, env);
                    items.Add(envItem);
                }
            }
            return(items.ToArray());
        }
Exemplo n.º 19
0
        static void Main(string[] args)
        {
            string prjItemName = args[0];
            double minX        = double.Parse(args[1]);
            double maxX        = double.Parse(args[2]);
            double minY        = double.Parse(args[3]);
            double maxY        = double.Parse(args[4]);

            PrjEnvelopeItem prjItem       = new PrjEnvelopeItem(prjItemName, new GeoDo.RasterProject.PrjEnvelope(minX, maxX, minY, maxY));
            string          dataSet       = args[5];
            string          locationFile  = args[6];
            string          dataFile      = args[7];
            string          outfname      = args[8];
            float           outResolution = float.Parse(args[9]);

            MOD06DataProject.Project(prjItem, dataSet, locationFile, dataFile, outfname, outResolution);
        }
Exemplo n.º 20
0
        void _tree_SelectedNodeChanged(object sender, RadTreeViewEventArgs e)
        {
            RadTreeNode node = e.Node;

            if (node == null)
            {
                return;
            }
            if (node.Level == 1)
            {
                PrjEnvelopeItem item = node.Tag as PrjEnvelopeItem;
                if (item != null)
                {
                    textBox1.Text    = item.Name;
                    txtIdentify.Text = item.Identify;
                    SetEnvelopeToUI(item.PrjEnvelope);
                }
            }
        }
Exemplo n.º 21
0
        private PrjEnvelopeItem[] ParseEnvelopes(XElement xml)
        {
            List <PrjEnvelopeItem> items = new List <PrjEnvelopeItem>();
            IEnumerable <XElement> els   = xml.Elements("EnvelopeItem");
            XAttribute             attr  = null;

            foreach (XElement item in els)
            {
                string      name     = item.Attribute("name").Value;
                string      identify = (attr = item.Attribute("identify")) == null ? null : attr.Value;
                PrjEnvelope env      = ParseEnvelope(item);
                if (env != null)
                {
                    PrjEnvelopeItem envItem = new PrjEnvelopeItem(name, env, identify);
                    items.Add(envItem);
                }
            }
            return(items.ToArray());
        }
Exemplo n.º 22
0
        private void AddDataOverViewItem(ProjectionInfo pInfo)
        {
            string          thumbnailFile = Path.ChangeExtension(Path.Combine(DataPathHelper.ProjectionRootPath + pInfo.datapath), ".overview.png");
            PrjEnvelopeItem prjEnv        = new PrjEnvelopeItem("",
                                                                new PrjEnvelope(pInfo.minx.GetValueOrDefault(), pInfo.maxx.GetValueOrDefault(), pInfo.miny.GetValueOrDefault(), pInfo.maxy.GetValueOrDefault()));
            OverViewObject item = OverViewObject.CreateOverViewObject(pInfo);

            if (item == null)
            {
                return;
            }
            foreach (OverViewObject match in _lstOverviews)
            {
                if (match.ProjectionInfo.datapath == item.ProjectionInfo.datapath)
                {
                    return;
                }
            }
            _lstOverviews.Add(item);
        }
Exemplo n.º 23
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;
        }
Exemplo n.º 24
0
        private void LoadThemeGraphRegion()
        {
            _btnSetThemeGraphRegion.Items.Clear();
            ThemeGraphRegion region = ThemeGraphRegionSetting.GetThemeGraphRegion(_productIdentify);

            _btnSetThemeGraphRegion.Tag = region;
            if (region != null)
            {
                bool enable             = region.Enable;
                int  selectedIndex      = region.SelectedIndex;
                PrjEnvelopeItem[] items = region.PrjEnvelopeItems;
                if (items != null)
                {
                    for (int i = 0; i < items.Length; i++)
                    {
                        PrjEnvelopeItem item = items[i];
                        RadMenuItem     menu = new RadMenuItem();
                        menu.Text   = item.Name;
                        menu.Tag    = i;
                        menu.Click += new EventHandler(menu_Click);
                        if (enable && selectedIndex == i)
                        {
                            _btnSetThemeGraphRegion.Text = item.Name;
                            menu.IsChecked = true;
                        }
                        _btnSetThemeGraphRegion.Items.Add(menu);
                    }
                    _btnSetThemeGraphRegion.Items.Add(new RadMenuSeparatorItem());
                    RadMenuItem cancelRegion = new RadMenuItem("取消范围应用");
                    cancelRegion.Tag    = region;
                    cancelRegion.Click += new EventHandler(cancelRegion_Click);
                    _btnSetThemeGraphRegion.Items.Add(cancelRegion);
                }
            }
            _btnSetThemeGraphRegion.Items.Add(new RadMenuSeparatorItem());
            RadMenuItem editRegion = new RadMenuItem("编辑范围");

            editRegion.Click += new EventHandler(editRegion_Click);
            editRegion.Tag    = region;
            _btnSetThemeGraphRegion.Items.Add(editRegion);
        }
Exemplo n.º 25
0
        private void AddDefinedRegion(PrjEnvelopeItem item)
        {
            RadTreeNode node = _tree.SelectedNode;

            if (node == null)
            {
                return;
            }
            if (node.Level == 0)
            {
                BlockItemGroup group = node.Tag as BlockItemGroup;
                group.Add(item);
                AddRegionToNode(node, item);
            }
            else if (node.Level == 1)
            {
                BlockItemGroup group = node.Parent.Tag as BlockItemGroup;
                group.Add(item);
                AddRegionToNode(node.Parent, item);
            }
        }
Exemplo n.º 26
0
        private void btnDelete_Click(object sender, EventArgs e)
        {
            RadTreeNode node = _tree.SelectedNode;

            if (node == null)
            {
                return;
            }
            if (node.Level == 0)
            {
                _groups.Remove(node.Tag as BlockItemGroup);
                _tree.Nodes.Remove(node);
            }
            else if (node.Level == 1)
            {
                PrjEnvelopeItem item  = node.Tag as PrjEnvelopeItem;
                BlockItemGroup  group = node.Parent.Tag as BlockItemGroup;
                group.Remove(item);
                node.Parent.Nodes.Remove(node);
            }
        }
Exemplo n.º 27
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;
     }
 }
Exemplo n.º 28
0
        public void Add(PrjEnvelopeItem item)
        {
            int findIndex = -1;

            for (int i = 0; i < _prjEnvelopeItems.Count; i++)
            {
                if (_prjEnvelopeItems[i].Name == item.Name)
                {
                    findIndex = i;
                }
            }
            if (findIndex == -1)
            {
                _prjEnvelopeItems.Add(item);
                _selectedIndex = _prjEnvelopeItems.Count - 1;
            }
            else
            {
                _prjEnvelopeItems[findIndex] = item;
                _selectedIndex = findIndex;
            }
            Enable = true;
        }
Exemplo n.º 29
0
        public static void Project(PrjEnvelopeItem prjItem, string dataSet, string locationFile, string dataFile, string outFilename, float outResolution)
        {
            IRasterDataProvider mainRaster     = null;
            IRasterDataProvider locationRaster = null;

            try
            {
                string[] openArgs = new string[] { "datasets=" + dataSet };
                mainRaster = RasterDataDriver.Open(dataFile, openArgs) as IRasterDataProvider;
                string[] locationArgs = new string[] { "datasets=" + "Latitude,Longitude", "geodatasets=" + "Latitude,Longitude" };
                locationRaster = RasterDataDriver.Open(locationFile, locationArgs) as IRasterDataProvider;
                if (locationRaster == null || locationRaster.BandCount == 0)
                {
                    return;
                }
                HDF4FilePrjSettings setting = new HDF4FilePrjSettings();
                setting.LocationFile   = locationRaster;
                setting.OutFormat      = "LDF";
                setting.OutResolutionX = setting.OutResolutionY = outResolution;
                Dictionary <string, double> exargs = new Dictionary <string, double>();
                double invalidValue;
                if (double.TryParse(GetDefaultNullValue(mainRaster.DataType), out invalidValue))
                {
                    exargs.Add("FillValue", invalidValue);
                    setting.ExtArgs = new object[] { exargs };
                }
                HDF4FileProjector projector = new HDF4FileProjector();
                GeoDo.RasterProject.PrjEnvelope mainPrj;
                projector.ComputeDstEnvelope(mainRaster, SpatialReference.GetDefault(), out mainPrj, null);
                GeoDo.RasterProject.PrjEnvelope dstmainPrj = GeoDo.RasterProject.PrjEnvelope.Intersect(prjItem.PrjEnvelope, mainPrj);
                if (dstmainPrj != null)
                {
                    setting.OutEnvelope        = dstmainPrj;
                    setting.OutPathAndFileName = outFilename;
                    projector.Project(mainRaster, setting, SpatialReference.GetDefault(), null);
                }
                else
                {
                    return;
                }
            }
            catch (System.Exception ex)
            {
                string fname = Path.GetFileName(dataFile);
                string label = null;
                if (fname.Contains("MOD"))
                {
                    label = "MOD06ProjectError";
                }
                else if (fname.Contains("MYD"))
                {
                    label = "MYD06ProjectError";
                }
                else
                {
                    label = "AIRSProjectError";
                }
                LogFactory.WriteLine(label, "投影失败!" + ";" + dataFile + ";" + dataSet + ";" + outResolution.ToString("f2") + ";" + outFilename + ";" + ex.Message);
            }
            finally
            {
                if (mainRaster != null)
                {
                    mainRaster.Dispose();
                    mainRaster = null;
                }
                if (locationRaster != null)
                {
                    locationRaster.Dispose();
                    locationRaster = null;
                }
            }
        }
Exemplo n.º 30
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));
        }