Exemplo n.º 1
0
        public override void Execute(string argument)
        {
            ISmartViewer viewer = _smartSession.SmartWindowManager.ActiveViewer;

            if (viewer != null)
            {
                ICanvasViewer canViewer = viewer as ICanvasViewer;
                if (canViewer == null)
                {
                    return;
                }
                IRasterDrawing rd     = canViewer.ActiveObject as IRasterDrawing;
                IGeoPanAdjust  adjust = rd as IGeoPanAdjust;
                if (adjust != null && adjust.IsHasUnsavedGeoAdjusted)
                {
                    DialogResult ret = MsgBox.ShowQuestionYesNoCancel("对当前影像的平移校正结果未保存,请确认是否保存?\n按【是】保存。\n按【否】不保存。\n按【取消】返回。");
                    if (ret == DialogResult.Cancel)
                    {
                        return;
                    }
                    else if (ret == DialogResult.Yes)
                    {
                        adjust.Save();
                    }
                    else
                    {
                        adjust.Cancel();
                    }
                }
            }
            _smartSession.UIFrameworkHelper.SetVisible(argument, false);
            _smartSession.UIFrameworkHelper.SetLockBesideX(argument, false);
        }
Exemplo n.º 2
0
        public override void Execute()
        {
            ISmartViewer     v   = _smartSession.SmartWindowManager.ActiveViewer;
            ISmartToolWindow wnd = _smartSession.SmartWindowManager.SmartToolWindowFactory.GetSmartToolWindow(_id);

            if (wnd != null)
            {
                UCLayerManagerPanel layerManeger = new UCLayerManagerPanel(_smartSession);
                if (v == null)
                {
                    layerManeger.Apply(null);
                }
                if (v is ICanvasViewer)
                {
                    layerManeger.Apply((v as ICanvasViewer).LayerProvider as ILayersProvider);
                }
                else if (v is ILayoutViewer)
                {
                    layerManeger.Apply((v as ILayoutViewer).LayerProvider as ILayersProvider);
                }
                (wnd as ToolWindow).Controls.Add(layerManeger);
                layerManeger.Dock = DockStyle.Fill;
                _smartSession.SmartWindowManager.DisplayWindow(wnd, new WindowPosition(DockStyle.Left, false));
                (wnd as DockWindow).TabStrip.SizeInfo.AbsoluteSize = new System.Drawing.Size(WND_DEFAULT_WIDTH, 0);
            }
        }
Exemplo n.º 3
0
        private string TryGetFileFromActiveView()
        {
            ISmartViewer viewer = _smartSession.SmartWindowManager.ActiveViewer;

            if (viewer == null)
            {
                throw new Exception("未获得激活的数据窗口");
            }
            ICanvasViewer canViewer = viewer as ICanvasViewer;

            if (canViewer == null)
            {
                throw new Exception("未获得激活的数据窗口");
            }
            IRasterDrawing rd = canViewer.ActiveObject as IRasterDrawing;

            if (rd == null)
            {
                throw new Exception("未从激活的数据窗口中获取数据提供者");
            }
            IRasterDataProvider rdp = rd.DataProvider;

            if (rdp == null)
            {
                throw new Exception("未从激活的数据窗口中获取数据提供者");
            }
            return(rdp.fileName);
        }
Exemplo n.º 4
0
        void _radDock_DockWindowClosed(object sender, DockWindowEventArgs e)
        {
            //触发注册在视窗上的关闭事件
            ISmartWindow smartWindow = e.DockWindow as ISmartWindow;

            if (smartWindow != null)
            {
                if (smartWindow.OnWindowClosed != null)
                {
                    smartWindow.OnWindowClosed(smartWindow, e);
                }
            }
            //
            if (e.DockWindow.Equals(_activeViewer))
            {
                _activeViewer = null;
            }
            //
            if (e.DockWindow.Equals(_newestCreatedCanvasViewer))
            {
                _newestCreatedCanvasViewer = null;
            }
            //
            _linkableViewerManager.Unlink(e.DockWindow as ILinkableViewer);
            e.DockWindow.Dispose();

            /*
             * 以下1行释放Telerik不能释放的资源
             */
            if (e.DockWindow is Telerik.WinControls.IGeoDoFree)
            {
                (e.DockWindow as Telerik.WinControls.IGeoDoFree).Free();
            }
            if (e.DockWindow is ISmartWindow)
            {
                (e.DockWindow as ISmartWindow).Free();
            }

            /*
             * 以下三行释放视图资源(CanvasViewer,LayoutViewer)
             */
            ISmartViewer smartViewer = e.DockWindow as ISmartViewer;

            if (smartViewer != null)
            {
                smartViewer.DisposeViewer();
                //
                SetActiveViewer(null, smartViewer is ICanvasViewer);
            }

            /*
             * 以下一句解决LayoutEventArgs引用DocumentTabStrip对象导致对象不释放的问题
             */
            _radDock.MainDocumentContainer.PerformLayout();
            //
            GC.Collect();
        }
Exemplo n.º 5
0
        void _radDock_SelectedTabChanged(object sender, SelectedTabChangedEventArgs e)
        {
            ISmartViewer viewer = e.NewWindow as ISmartViewer;

            if (viewer != null)
            {
                SetActiveViewer(viewer, viewer is ICanvasViewer);
            }
        }
Exemplo n.º 6
0
        void _radDock_ActiveWindowChanged(object sender, DockWindowEventArgs e)
        {
            ISmartViewer viewer = e.DockWindow as ISmartViewer;

            if (viewer != null)
            {
                SetActiveViewer(viewer, viewer is ICanvasViewer);
            }
        }
Exemplo n.º 7
0
        void _radDock_DockWindowAdded(object sender, DockWindowEventArgs e)
        {
            ISmartViewer viewer = e.DockWindow as ISmartViewer;

            if (viewer != null)
            {
                SetActiveViewer(viewer, viewer is ICanvasViewer);       //radDock的DockWindowAdded事件执行完毕,会调用ActiveWindowChanged
            }
            if (viewer is ICanvasViewer)
            {
                _newestCreatedCanvasViewer = viewer as ICanvasViewer;
            }
        }
Exemplo n.º 8
0
        private void AdjustFinished(object sender, EventArgs e)
        {
            ISmartViewer viewer = _smartSession.SmartWindowManager.ActiveViewer;

            if (viewer == null)
            {
                return;
            }
            ICanvasViewer canViewer = viewer as ICanvasViewer;

            (canViewer.Canvas.CurrentViewControl as PanAdjustControlLayer).AdjustFinishedHandler -= _finishedHandler;
            canViewer.Canvas.CurrentViewControl = new DefaultControlLayer();
            canViewer.Canvas.Refresh(enumRefreshType.All);
        }
Exemplo n.º 9
0
        public override void Execute()
        {
            ISmartViewer viewer = _smartSession.SmartWindowManager.ActiveViewer;

            if (viewer == null)
            {
                return;
            }
            ICanvasViewer  canViewer = viewer as ICanvasViewer;
            IRasterDrawing rd        = canViewer.ActiveObject as IRasterDrawing;
            IGeoPanAdjust  adjust    = rd as IGeoPanAdjust;

            adjust.Cancel();
            canViewer.Canvas.Refresh(Core.DrawEngine.enumRefreshType.All);
        }
Exemplo n.º 10
0
        private static bool IsOrbitData(ISmartSession session)
        {
            ISmartViewer activeViewer = session.SmartWindowManager.ActiveViewer;

            if (activeViewer is ICanvasViewer)
            {
                ICanvasViewer  cv     = activeViewer as ICanvasViewer;
                IRasterDrawing draing = cv.ActiveObject as IRasterDrawing;
                if (draing == null || draing.DataProvider.DataIdentify == null)
                {
                    return(false);
                }
                return(draing.DataProvider.DataIdentify.IsOrbit);
            }
            return(false);
        }
Exemplo n.º 11
0
        public override bool Open(string fname, out bool memoryIsNotEnough)
        {
            memoryIsNotEnough = false;
            if (!MemoryIsEnoughChecker.MemoryIsEnouggWithMsgBoxForRaster(fname))
            {
                memoryIsNotEnough = true;
                return(false);
            }
            ISmartViewer viewer = _session.SmartWindowManager.ActiveViewer;

            //if (viewer == null)
            CreateCanvasViewer(fname);
            //else if (viewer is ICanvasViewer)
            //    AddLayer2CanvasViewer(viewer as ICanvasViewer, fname);
            //else if (viewer is ILayoutViewer)
            //    AddDataToLayoutViewer(viewer as ILayoutViewer, fname);
            return(true);
        }
Exemplo n.º 12
0
        public override void Execute()
        {
            ISmartViewer viewer = _smartSession.SmartWindowManager.ActiveViewer;

            if (viewer == null)
            {
                return;
            }
            ICanvasViewer  canViewer = viewer as ICanvasViewer;
            IRasterDrawing rd        = canViewer.ActiveObject as IRasterDrawing;

            (rd as IGeoPanAdjust).Start();
            IRasterDataProvider rdp = rd.DataProvider;

            canViewer.Canvas.CurrentViewControl = new PanAdjustControlLayer();
            (canViewer.Canvas.CurrentViewControl as PanAdjustControlLayer).AdjustFinishedHandler += _finishedHandler;
            canViewer.Canvas.Refresh(enumRefreshType.All);
        }
Exemplo n.º 13
0
        public override void  Execute()
        {
            ISmartViewer viewer = _smartSession.SmartWindowManager.ActiveViewer;

            if (viewer == null)
            {
                return;
            }
            ICanvasViewer  canViewer = viewer as ICanvasViewer;
            IRasterDrawing rd        = canViewer.ActiveObject as IRasterDrawing;
            IGeoPanAdjust  adjust    = rd as IGeoPanAdjust;

            if (rd == null)
            {
                return;
            }
            PanAdjustTool adjustTool = new PanAdjustTool();
            string        fileName   = null;

            try
            {
                fileName = adjustTool.SaveGeoAdjust(rd.EnvelopeBeforeAdjusting, rd.DataProviderCopy);
                adjust.Cancel();
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message);
            }
            if (fileName != null && File.Exists(fileName))
            {
                string adjustTxtDir = AppDomain.CurrentDomain.BaseDirectory + "MonitoringProductArgs\\COMM\\";
                if (!Directory.Exists(adjustTxtDir))
                {
                    Directory.CreateDirectory(adjustTxtDir);
                }
                string txtFileName = Path.Combine(adjustTxtDir, "AdjustSaveFile.txt");
                using (StreamWriter sw = new StreamWriter(txtFileName, true, Encoding.Default))
                {
                    sw.WriteLine(fileName);
                }
            }
        }
Exemplo n.º 14
0
        public override void Execute()
        {
            ISmartViewer viewer = _smartSession.SmartWindowManager.ActiveViewer;

            if (viewer == null)
            {
                return;
            }
            ICanvasViewer         canViewer = viewer as ICanvasViewer;
            IRasterDrawing        rd        = canViewer.ActiveObject as IRasterDrawing;
            PanAdjustControlLayer layer     = canViewer.Canvas.CurrentViewControl as PanAdjustControlLayer;

            if (layer == null)
            {
                return;
            }
            IGeoPanAdjust adjust = rd as IGeoPanAdjust;

            adjust.Save();
            canViewer.Canvas.CurrentViewControl = new DefaultControlLayer();
            canViewer.Canvas.Refresh(Core.DrawEngine.enumRefreshType.All);
        }
Exemplo n.º 15
0
        private void SetActiveViewer(ISmartViewer viewer, bool isCanvasViewer)
        {
            if (viewer == null && isCanvasViewer)
            {
                _activeCanvasViewer = null;
            }
            if (viewer != null && viewer.Equals(_activeViewer) && !viewer.Equals(_newestCreatedCanvasViewer))
            {
                return;
            }
            ISmartViewer oldViewer = _activeViewer;

            _activeViewer = viewer;
            if (viewer is ICanvasViewer)
            {
                _activeCanvasViewer = viewer as ICanvasViewer;
            }
            if (_activeWindowChangedHandler != null)
            {
                _activeWindowChangedHandler(this, oldViewer, viewer);
            }
            UpdatePrimaryLinkWindow();
        }
Exemplo n.º 16
0
        private static ISpatialReference GetSpatialRef(ISmartSession session)
        {
            ISmartViewer activeViewer = session.SmartWindowManager.ActiveViewer;

            if (activeViewer is ICanvasViewer)
            {
                return((activeViewer as ICanvasViewer).Canvas.CoordTransform.SpatialRefOfViewer as ISpatialReference);
            }
            else if (activeViewer is ILayoutViewer)
            {
                IDataFrame df = (activeViewer as ILayoutViewer).LayoutHost.ActiveDataFrame;
                if (df == null)
                {
                    return(null);
                }
                IDataFrameDataProvider prd = df.Provider as IDataFrameDataProvider;
                if (prd == null)
                {
                    return(null);
                }
                return(prd.Canvas.CoordTransform.SpatialRefOfViewer as ISpatialReference);
            }
            return(null);
        }
Exemplo n.º 17
0
        public override void Execute(string argument)
        {
            ISmartViewer viewer = _smartSession.SmartWindowManager.ActiveViewer;

            if (viewer != null)
            {
                ICanvasViewer canViewer = viewer as ICanvasViewer;
                if (canViewer == null)
                {
                    return;
                }
                IRasterDrawing rd = canViewer.ActiveObject as IRasterDrawing;
                if (rd == null || rd.RgbProcessorStack == null)
                {
                    return;
                }
                List <IRgbProcessor> rgbProcessors = new List <IRgbProcessor>();
                foreach (IRgbProcessor processor in rd.RgbProcessorStack.Processors)
                {
                    rgbProcessors.Add(processor);
                }
                rgbProcessors.Reverse();
                int[]         selectBands = rd.SelectedBandNos;
                IGeoPanAdjust adjust      = rd as IGeoPanAdjust;
                if (adjust != null)
                {
                    if (adjust.IsHasUnsavedGeoAdjusted)
                    {
                        DialogResult ret = MsgBox.ShowQuestionYesNoCancel("对当前影像的平移校正结果未保存,请确认是否保存?\n按【是】保存。\n按【否】不保存。\n按【取消】返回。");
                        if (ret == DialogResult.Cancel)
                        {
                            return;
                        }
                        else if (ret == DialogResult.Yes)
                        {
                            PanAdjustTool adjustTool = new PanAdjustTool();
                            string        fileName   = null;
                            try
                            {
                                fileName = adjustTool.SaveGeoAdjust(rd.EnvelopeBeforeAdjusting, rd.DataProviderCopy);
                            }
                            catch (Exception e)
                            {
                                MessageBox.Show(e.Message);
                            }
                            adjust.Cancel();
                            if (File.Exists(fileName))
                            {
                                OpenFileFactory.Open(fileName);
                                IRasterDrawing draw = _smartSession.SmartWindowManager.ActiveViewer.ActiveObject as IRasterDrawing;
                                draw.SelectedBandNos = selectBands;
                                if (rgbProcessors != null && rgbProcessors.Count > 0)
                                {
                                    draw.RgbProcessorStack.Clear();
                                    foreach (IRgbProcessor processor in rgbProcessors)
                                    {
                                        draw.RgbProcessorStack.Process(processor);
                                    }
                                }
                            }
                        }
                        else
                        {
                            adjust.Cancel();
                        }
                    }
                    else
                    {
                        string dirTXTFname = AppDomain.CurrentDomain.BaseDirectory + "MonitoringProductArgs\\COMM\\AdjustSaveFile.txt";
                        if (File.Exists(dirTXTFname))
                        {
                            string[]     fileNames    = File.ReadAllLines(dirTXTFname, Encoding.Default);
                            int          length       = fileNames.Length;
                            string       lastFile     = fileNames[length - 1];
                            AdjustConfig config       = new AdjustConfig();
                            bool         IsOpenResult = true;
                            bool.TryParse(config.GetConfigValue("IsOpenResult"), out IsOpenResult);
                            if (IsOpenResult && File.Exists(lastFile))
                            {
                                try
                                {
                                    OpenFileFactory.Open(lastFile);
                                    IRasterDrawing draw = _smartSession.SmartWindowManager.ActiveViewer.ActiveObject as IRasterDrawing;
                                    draw.SelectedBandNos = selectBands;
                                    if (rgbProcessors != null && rgbProcessors.Count > 0)
                                    {
                                        draw.RgbProcessorStack.Clear();
                                        foreach (IRgbProcessor processor in rgbProcessors)
                                        {
                                            draw.RgbProcessorStack.Process(processor);
                                        }
                                    }
                                }
                                catch (Exception e)
                                {
                                    MessageBox.Show(e.Message);
                                }
                            }
                            File.Delete(dirTXTFname);
                        }
                    }
                }
            }
            _smartSession.UIFrameworkHelper.SetVisible(argument, false);
            _smartSession.UIFrameworkHelper.SetLockBesideX(argument, false);
        }
Exemplo n.º 18
0
        public override void Execute(string argument)
        {
            ISmartViewer viewer = _smartSession.SmartWindowManager.ActiveViewer;

            if (viewer != null)
            {
                ICanvasViewer canViewer = viewer as ICanvasViewer;
                if (canViewer == null)
                {
                    return;
                }
                IRasterDrawing rd = canViewer.ActiveObject as IRasterDrawing;
                if (rd == null || rd.RgbProcessorStack == null)
                {
                    return;
                }
                List <IRgbProcessor> rgbProcessors = new List <IRgbProcessor>();
                foreach (IRgbProcessor processor in rd.RgbProcessorStack.Processors)
                {
                    rgbProcessors.Add(processor);
                }
                rgbProcessors.Reverse();
                int[]         selectBands = rd.SelectedBandNos;
                IGeoPanAdjust adjust      = rd as IGeoPanAdjust;
                if (adjust != null)
                {
                    if (adjust.IsHasUnsavedGeoAdjusted)
                    {
                        DialogResult ret = MsgBox.ShowQuestionYesNoCancel("对当前影像的平移校正结果未保存,请确认是否保存?\n按【是】保存。\n按【否】不保存。\n按【取消】返回。");
                        if (ret == DialogResult.Cancel)
                        {
                            return;
                        }
                        else if (ret == DialogResult.Yes)
                        {
                            GeoAdjustHelper adjustTool   = new GeoAdjustHelper();
                            string          fileName     = null;
                            string          dblvFileName = null;
                            try
                            {
                                fileName     = adjustTool.SaveGeoAdjustByChangeCoordEnvelope(rd.DataProvider.CoordEnvelope, rd.DataProviderCopy);
                                dblvFileName = AdjustDBLVFile(rd.DataProvider.CoordEnvelope, rd.DataProviderCopy);
                            }
                            catch (Exception e)
                            {
                                MessageBox.Show(e.Message);
                            }
                            adjust.Cancel();
                            if (File.Exists(fileName))
                            {
                                OpenFileFactory.Open(fileName);
                                IRasterDrawing draw = _smartSession.SmartWindowManager.ActiveViewer.ActiveObject as IRasterDrawing;
                                draw.SelectedBandNos = selectBands;
                                if (rgbProcessors != null && rgbProcessors.Count > 0)
                                {
                                    draw.RgbProcessorStack.Clear();
                                    foreach (IRgbProcessor processor in rgbProcessors)
                                    {
                                        draw.RgbProcessorStack.Process(processor);
                                    }
                                }
                                //生成多通道合成图
                                LayoutCreater layoutCreater = new LayoutCreater();
                                string        mcsiFileName  = layoutCreater.CreateMCSI(_smartSession);
                                if (!string.IsNullOrEmpty(mcsiFileName) && File.Exists(mcsiFileName))
                                {
                                    OpenFileFactory.Open(mcsiFileName);
                                }
                                //生成二值图
                                if (!string.IsNullOrEmpty(dblvFileName))
                                {
                                    string imgFileName = layoutCreater.CreateDBLVLayout(dblvFileName, draw.FileName);
                                    if (!string.IsNullOrEmpty(imgFileName) && File.Exists(imgFileName))
                                    {
                                        OpenFileFactory.Open(imgFileName);
                                    }
                                }
                            }
                        }
                        else
                        {
                            adjust.Cancel();
                        }
                    }
                    else
                    {
                        string dirTXTFname = AppDomain.CurrentDomain.BaseDirectory + "MonitoringProductArgs\\COMM\\AdjustSaveFile.txt";
                        if (File.Exists(dirTXTFname))
                        {
                            string[] fileNames = File.ReadAllLines(dirTXTFname, Encoding.Default);
                            int      length    = fileNames.Length;
                            string   lastFile  = fileNames[length - 1];
                            if (File.Exists(lastFile))
                            {
                                try
                                {
                                    OpenFileFactory.Open(lastFile);
                                    IRasterDrawing draw = _smartSession.SmartWindowManager.ActiveViewer.ActiveObject as IRasterDrawing;
                                    draw.SelectedBandNos = selectBands;
                                    if (rgbProcessors != null && rgbProcessors.Count > 0)
                                    {
                                        draw.RgbProcessorStack.Clear();
                                        foreach (IRgbProcessor processor in rgbProcessors)
                                        {
                                            draw.RgbProcessorStack.Process(processor);
                                        }
                                    }
                                }
                                catch (Exception e)
                                {
                                    MessageBox.Show(e.Message);
                                }
                            }
                            File.Delete(dirTXTFname);
                        }
                    }
                }
            }
            //_smartSession.UIFrameworkHelper.SetVisible(argument, false);
            //_smartSession.UIFrameworkHelper.SetLockBesideX(argument, false);
        }
Exemplo n.º 19
0
 public void NewVerticalGroup(ISmartViewer viewer)
 {
     _radDock.AddDocument(viewer as DockWindow, (viewer as DockWindow).TabStrip as DocumentTabStrip, DockPosition.Bottom);
 }
Exemplo n.º 20
0
 public void NewHorizontalGroup(ISmartViewer viewer)
 {
     _radDock.AddDocument(viewer as DockWindow, (viewer as DockWindow).TabStrip as DocumentTabStrip, DockPosition.Right);
 }
Exemplo n.º 21
0
        public override void Execute()
        {
            try
            {
                List <string> _cutfiles = new List <string>();
                base.Execute();
                RasterClip             s = new RasterClip();
                BlockDefWithAOI[]      envelopes;
                string                 inputFilename = TryGetInfoFromActiveView(out envelopes);
                string                 outdir        = Path.GetDirectoryName(inputFilename);
                int[]                  aoiIndex      = null;
                List <BlockDefWithAOI> blockList     = new List <BlockDefWithAOI>();
                frmImageClip           frm           = new frmImageClip(_smartSession);
                if (frm.ShowDialog() == DialogResult.OK)
                {
                    _cutfiles.AddRange(frm.InputFiles);
                    _cutfiles.AddRange(frm.CustomSelectFiles);
                    BlockDefWithAOI outEnvelope;
                    Size            size;
                    frm.GetArgs(out outEnvelope, out size, out outdir, out inputFilename);
                    envelopes = new BlockDefWithAOI[] { outEnvelope };
                    aoiIndex  = frm.GetFeatureAOIIndex();
                    blockList.AddRange(envelopes);
                    if (aoiIndex != null && aoiIndex.Length != 0)
                    {
                        blockList[0].AOIIndexes = aoiIndex;
                    }
                }
                else
                {
                    return;
                }
                if (blockList[0].AOIIndexes == null)
                {
                    blockList[0].AOIIndexes = _smartSession.SmartWindowManager.ActiveCanvasViewer.AOIProvider.GetIndexes();
                }
                string[] put = s.RasterClipT(inputFilename, blockList.ToArray(), outdir, _smartSession.ProgressMonitorManager.DefaultProgressMonitor, "Cut");
                _cutfiles = _cutfiles.Distinct().ToList();
                foreach (string file in _cutfiles)
                {
                    s.RasterClipT(file, blockList.ToArray(), outdir, _smartSession.ProgressMonitorManager.DefaultProgressMonitor, "Cut");
                }
                ISmartViewer         viewer        = _smartSession.SmartWindowManager.ActiveViewer;
                int[]                selectBands   = null;
                List <IRgbProcessor> rgbProcessors = null;
                if (viewer != null)
                {
                    ICanvasViewer canViewer = viewer as ICanvasViewer;
                    if (canViewer == null)
                    {
                        return;
                    }
                    IRasterDrawing rd = canViewer.ActiveObject as IRasterDrawing;
                    if (rd == null || rd.RgbProcessorStack == null)
                    {
                        return;
                    }

                    rgbProcessors = new List <IRgbProcessor>();
                    foreach (IRgbProcessor processor in rd.RgbProcessorStack.Processors)
                    {
                        rgbProcessors.Add(processor);
                    }
                    rgbProcessors.Reverse();
                    selectBands = rd.SelectedBandNos;
                }
                for (int i = 0; i < put.Length; i++)
                {
                    OpenFileToWindows(put[i]);
                    if (selectBands == null)
                    {
                        continue;
                    }
                    IRasterDrawing draw = _smartSession.SmartWindowManager.ActiveViewer.ActiveObject as IRasterDrawing;
                    draw.SelectedBandNos = selectBands;
                    if (rgbProcessors != null && rgbProcessors.Count > 0)
                    {
                        draw.RgbProcessorStack.Clear();
                        foreach (IRgbProcessor processor in rgbProcessors)
                        {
                            draw.RgbProcessorStack.Process(processor);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }
Exemplo n.º 22
0
        public override void  Execute()
        {
            ISmartViewer viewer = _smartSession.SmartWindowManager.ActiveViewer;

            if (viewer == null)
            {
                return;
            }
            ICanvasViewer  canViewer = viewer as ICanvasViewer;
            IRasterDrawing rd        = canViewer.ActiveObject as IRasterDrawing;

            if (rd == null || rd.RgbProcessorStack == null)
            {
                return;
            }
            List <IRgbProcessor> rgbProcessors = new List <IRgbProcessor>();

            foreach (IRgbProcessor processor in rd.RgbProcessorStack.Processors)
            {
                rgbProcessors.Add(processor);
            }
            rgbProcessors.Reverse();
            int[]         selectBands = rd.SelectedBandNos;
            IGeoPanAdjust adjust      = rd as IGeoPanAdjust;

            if (rd == null)
            {
                return;
            }
            GeoAdjustHelper helper       = new GeoAdjustHelper();
            string          fileName     = null;
            string          dblvFileName = null;

            try
            {
                CoordEnvelope envelopeAfter = new CoordEnvelope(rd.Envelope.MinX, rd.Envelope.MinY, rd.Envelope.Width, rd.Envelope.Height);
                fileName = helper.SaveGeoAdjustByChangeCoordEnvelope(envelopeAfter, rd.DataProviderCopy);
                //调整对应的判识结果文件
                dblvFileName = AdjustDBLVFile(envelopeAfter, rd.DataProviderCopy);
                adjust.Cancel();
                if (File.Exists(fileName))
                {
                    OpenFileFactory.Open(fileName);
                    IRasterDrawing draw = _smartSession.SmartWindowManager.ActiveViewer.ActiveObject as IRasterDrawing;
                    draw.SelectedBandNos = selectBands;
                    if (rgbProcessors != null && rgbProcessors.Count > 0)
                    {
                        draw.RgbProcessorStack.Clear();
                        foreach (IRgbProcessor processor in rgbProcessors)
                        {
                            draw.RgbProcessorStack.Process(processor);
                        }
                    }
                    //生成多通道合成图
                    LayoutCreater layoutCreater = new LayoutCreater();
                    string        mcsiFileName  = layoutCreater.CreateMCSI(_smartSession);
                    if (!string.IsNullOrEmpty(mcsiFileName) && File.Exists(mcsiFileName))
                    {
                        OpenFileFactory.Open(mcsiFileName);
                    }
                    //生成二值图
                    if (!string.IsNullOrEmpty(dblvFileName))
                    {
                        string imgFileName = layoutCreater.CreateDBLVLayout(dblvFileName, draw.FileName);
                        if (!string.IsNullOrEmpty(imgFileName) && File.Exists(imgFileName))
                        {
                            OpenFileFactory.Open(imgFileName);
                        }
                    }
                }
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message);
            }
            if (fileName != null && File.Exists(fileName))
            {
                string adjustTxtDir = AppDomain.CurrentDomain.BaseDirectory + "MonitoringProductArgs\\COMM\\";
                if (!Directory.Exists(adjustTxtDir))
                {
                    Directory.CreateDirectory(adjustTxtDir);
                }
                string txtFileName = Path.Combine(adjustTxtDir, "AdjustSaveFile.txt");
                using (StreamWriter sw = new StreamWriter(txtFileName, true, Encoding.Default))
                {
                    sw.WriteLine(fileName);
                    if (dblvFileName != null && File.Exists(dblvFileName))
                    {
                        sw.WriteLine(dblvFileName);
                    }
                }
            }
        }