protected virtual void ApplyOffset(ICanvas canvas, double offsetX, double offsetY) { IRasterDrawing drawing = _canvas.PrimaryDrawObject as IRasterDrawing; if (drawing == null) { return; } IGeoPanAdjust adjust = drawing as IGeoPanAdjust; if (adjust == null) { return; } adjust.ApplyAdjust(offsetX, offsetY); _canvas.Refresh(enumRefreshType.All); }
void RasterPropertyWindow_OnApplyClicked(object sender, EventArgs e) { ICanvasViewer viewer = _session.SmartWindowManager.ActiveViewer as ICanvasViewer; if (viewer == null) { return; } IRasterDrawing drawing = viewer.ActiveObject as IRasterDrawing; if (drawing == null) { return; } drawing.SelectedBandNos = (_content as RasterPropertyWndContent).SelectedBandNos; viewer.Canvas.Refresh(Core.DrawEngine.enumRefreshType.All); }
private static int[] GetDefaultBands(IRasterDrawing drawing) { IRasterDataProvider prd = drawing.DataProvider; if (prd == null) { return(null); } int[] defaultBands = prd.GetDefaultBands(); //if (defaultBands == null || IsImage(prd.fileName)) if (defaultBands == null) { defaultBands = new int[] { 1, 2, 3 } } ; return(defaultBands); }
private string CheckActiverFile() { ICanvasViewer canViewer = _session.SmartWindowManager.ActiveCanvasViewer; if (canViewer == null) { throw new Exception("未获得激活的数据窗口"); } IAOIProvider aoiProvider = canViewer.AOIProvider; if (aoiProvider == null) { throw new Exception("未从激活的数据窗口中获取感兴趣区域"); } GeoDo.RSS.Core.DrawEngine.CoordEnvelope geoEnvelope = aoiProvider.GetGeoRect(); if (geoEnvelope == null) { _hasAOI = false; } else { _hasAOI = true; } AOIItem[] aoiItems = aoiProvider.GetAOIItems(); if (aoiItems == null || aoiItems.Length == 0) { _hasBlock = false; } else { _hasBlock = true; } 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); }
/// <summary> /// 生成视窗图片 /// </summary> /// <param name="rd"></param> /// <param name="filename"></param> /// <returns></returns> private string CreateViewBitmap(IRasterDrawing drawing, ISmartSession session, out int width, out int height) { string bmpFilename = GetTempBmpFilename(drawing.FileName, session); string ext = Path.GetExtension(bmpFilename); ImageFormat imageFormat = GetImageFormat(ext); Size imgSize; using (Bitmap img = CreateRasterBitmap(drawing)) { img.Save(bmpFilename, imageFormat); imgSize = img.Size; } width = imgSize.Width; height = imgSize.Height; WriteWorldFile(drawing.DataProvider.CoordEnvelope, imgSize, drawing.DataProvider.SpatialRef, bmpFilename); return(bmpFilename); }
public override void Execute() { ICanvasViewer viewer = _smartSession.SmartWindowManager.ActiveViewer as ICanvasViewer; if (viewer == null) { return; } IRasterDrawing drawing = viewer.ActiveObject as IRasterDrawing; if (drawing == null) { return; } drawing.RgbProcessorStack.UnProcess(); viewer.Canvas.Refresh(Core.DrawEngine.enumRefreshType.RasterLayer); }
public override void Execute(string argument) { ICanvasViewer canViewer = _smartSession.SmartWindowManager.ActiveCanvasViewer; if (canViewer == null) { return; } IRasterDrawing rd = canViewer.ActiveObject as IRasterDrawing; if (rd == null) { return; } string filename = rd.FileName; try { string theme = SelectLayoutTheme(); if (string.IsNullOrWhiteSpace(theme)) { return; } string bmpFilename = CreateViewBitmap(rd.DataProvider.CoordEnvelope, rd.DataProvider.SpatialRef, filename); string gxdFilename = SaveGxdFilename(rd); if (string.IsNullOrWhiteSpace(gxdFilename)) { return; } ThematicGraphHelper thematic = new ThematicGraphHelper(_smartSession, Path.GetFileNameWithoutExtension(theme)); //thematic.AOI = MasicAOI(aoi, ref extInfos); //thematic.SetOrbitTimes(obtTimes); //thematic.DateString = dateString; string resultFilename = thematic.CreateThematicGraphic(bmpFilename, theme, gxdFilename, null, null); //return new FileExtractResult(outFileIdentify, resultFilename); if (!string.IsNullOrWhiteSpace(resultFilename)) { OpenFileFactory.Open(resultFilename); } } catch (Exception ex) { MsgBox.ShowInfo(ex.Message); } }
private IRasterDataProvider GetCurrentDataProvider(out int bandNo) { bandNo = 0; ICanvasViewer viewer = _smartSession.SmartWindowManager.ActiveCanvasViewer; if (viewer == null) { return(null); } IRasterDrawing drawing = viewer.ActiveObject as IRasterDrawing; if (drawing != null) { bandNo = drawing.SelectedBandNos[0]; return(drawing.DataProviderCopy); } return(null); }
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); }
void OverviewContent_Paint(object sender, PaintEventArgs e) { ICanvasViewer viewer = _session.SmartWindowManager.ActiveCanvasViewer; if (viewer == null || viewer.ActiveObject == null) { return; } IRasterDrawing drawing = viewer.ActiveObject as IRasterDrawing; if (drawing == null || drawing.DataProvider == null) { return; } HandleBoxMoving(drawing, viewer); DrawOverview(e); DrawViewportBox(viewer, drawing, e); }
private unsafe double GetPixelTemperature(ICanvas canvas, float x, float y) { IRasterDrawing drawing = canvas.PrimaryDrawObject as IRasterDrawing; if (drawing == null || x < 0 || x > drawing.Size.Width || y < 0 || y > drawing.Size.Height) { return(0); } double[] buffer = new double[drawing.BandCount]; fixed(double *ptr0 = buffer) { double *ptr = ptr0; drawing.ReadPixelValues((int)x, (int)y, ptr); } return(buffer[_selectedBand] / 10 - 273); }
private GeoDo.RSS.Core.DF.CoordEnvelope TryGetActiveViewerEnv() { ICanvasViewer v = _smartSession.SmartWindowManager.ActiveCanvasViewer; if (v == null) { return(null); } IRasterDrawing drawing = v.ActiveObject as IRasterDrawing; if (drawing == null) { return(null); } IRasterDataProvider raster = drawing.DataProvider; return(raster.CoordEnvelope); }
/// <summary> /// 矢量数据取AOI, /// 矢量与栅格坐标不一致时候,转矢量。 /// </summary> /// <param name="feature"></param> /// <returns></returns> private int[] GetIndexes(Feature feature) { GeoDo.RSS.Core.DrawEngine.ICoordinateTransform tran = _canvas.CoordTransform; IRasterDrawing rasterDrawing = _canvas.PrimaryDrawObject as IRasterDrawing; GeoDo.RSS.Core.DF.CoordEnvelope coordEvp = rasterDrawing.DataProvider.CoordEnvelope.Clone(); Size rasterSize = rasterDrawing.Size; Envelope rasterEnv = new Envelope(coordEvp.MinX, coordEvp.MinY, coordEvp.MaxX, coordEvp.MaxY); if (feature.Projected && rasterDrawing.DataProvider.CoordType == enumCoordType.GeoCoord) { using (ShapePolygon spPrj = ShapePolygonPrjToGeo(feature.Geometry as ShapePolygon)) { if (spPrj != null) { using (IVectorAOIGenerator gen = new VectorAOIGenerator()) { return(gen.GetAOI(new ShapePolygon[] { spPrj }, rasterEnv, rasterSize)); } } } } else if (!feature.Projected && rasterDrawing.DataProvider.CoordType == enumCoordType.PrjCoord) { using (ShapePolygon spPrj = ShapePolygonGeoToPrj(feature.Geometry as ShapePolygon)) { if (spPrj != null) { using (IVectorAOIGenerator gen = new VectorAOIGenerator()) { return(gen.GetAOI(new ShapePolygon[] { spPrj }, rasterEnv, rasterSize)); } } } } else { using (IVectorAOIGenerator gen = new VectorAOIGenerator()) { return(gen.GetAOI(new ShapePolygon[] { feature.Geometry as ShapePolygon }, rasterEnv, rasterSize)); } } return(null); }
static void FileOpened(object sender, string fname) { ICanvasViewer viewer = Session.SmartWindowManager.ActiveCanvasViewer; if (viewer == null) { return; } IRasterDrawing drawing = viewer.ActiveObject as IRasterDrawing; if (drawing == null) { return; } if (drawing.FileName == fname) { ApplyImageEnhancor(); } }
private Bitmap CreateRasterBitmap(IRasterDrawing drawing) { if (drawing == null) { return(null); } Bitmap img = drawing.GetBitmapUseOriginResolution(); if (IsPixelFormatIndexed(img.PixelFormat)) { Bitmap newimg = img.Clone(new System.Drawing.Rectangle(0, 0, img.Width, img.Height), PixelFormat.Format24bppRgb); img.Dispose(); return(newimg); } else { return(img); } }
void _radDock_DockWindowClosing(object sender, DockWindowCancelEventArgs e) { _linkableViewerManager.Unlink(e.NewWindow as ILinkableViewer); if (e.NewWindow is IStatResultDisplayWindow) { (e.NewWindow as Telerik.WinControls.IGeoDoFree).Free(); } else if (e.NewWindow is ICanvasViewer) { ICanvasViewer canViewer = e.NewWindow as ICanvasViewer; 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) { e.Cancel = true; return; } else if (ret == DialogResult.Yes) { adjust.Save(); } else { adjust.Cancel(); } } //退出平移校正状态 ICommand cmd = _session.CommandEnvironment.Get(30006); if (cmd != null) { cmd.Execute(); } //退出平移校正2状态 ICommand cmd2 = _session.CommandEnvironment.Get(30106); if (cmd2 != null) { cmd2.Execute(); } } }
private double StatArea(int[] aoi) { IRasterDrawing drawing = _activeViewer.Canvas.PrimaryDrawObject as IRasterDrawing; if (drawing == null) { return(0); } IRasterDataProvider prd = drawing.DataProvider; if (prd == null) { return(0); } double retArea = 0; if (prd.CoordType == enumCoordType.GeoCoord) { Size size = new Size(prd.Width, prd.Height); int row = 0; double resX = prd.ResolutionX; double maxLat = prd.CoordEnvelope.MaxY; for (int i = 0; i < aoi.Length; i++) { row = aoi[i] / size.Width; retArea += RasterOperator <int> .ComputePixelArea(row, maxLat, resX); } } else if (prd.CoordType == enumCoordType.PrjCoord) { double pixelArea = prd.ResolutionX * prd.ResolutionY / 1000000;//平方公里 for (int i = 0; i < aoi.Length; i++) { retArea += pixelArea; } } else//raster pixelcount { retArea = aoi.Length; } return(retArea); }
private void GetCurrentBandNos(out int[] bandNos, out int bandCount) { bandNos = null; bandCount = 0; ICanvasViewer viewer = _smartSession.SmartWindowManager.ActiveCanvasViewer; if (viewer == null) { return; } IRasterDrawing drawing = viewer.ActiveObject as IRasterDrawing; bandNos = new int[drawing.BandCount]; bandCount = drawing.BandCount; for (int i = 1; i <= bandCount; i++) { bandNos[i - 1] = i; } }
private void btnAddVector_Click(object sender, EventArgs e) { if (_vectorHostLayer != null) { return; } string spaRef = null; if (_rasterLayer != null) { IRasterDrawing drawing = _rasterLayer.Drawing as IRasterDrawing; //GeoDo.Project.ISpatialReference spatialRef = drawing.DataProvider.SpatialRef; //spaRef = spatialRef.ToWKTString(); spaRef = drawing.SpatialRef; } _vectorHostLayer = new VectorHostLayer(spaRef); _canvas.LayerContainer.Layers.Add(_vectorHostLayer); _canvas.Refresh(enumRefreshType.All); }
public override void Execute() { ICanvasViewer viewer = _smartSession.SmartWindowManager.ActiveCanvasViewer as ICanvasViewer; if (viewer == null) { return; } IRasterDrawing drawing = viewer.ActiveObject as IRasterDrawing; if (drawing == null) { return; } IRgbProcessor pro = GetRgbProcessor(); drawing.RgbProcessorStack.Process(pro); DisplayArgEditor(pro, drawing, viewer); }
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); } } }
private void SetCurrentRasterArgument(IMonitoringSubProduct subProduct) { if (subProduct.Definition.IsNeedCurrentRaster) { ICanvasViewer cv = _session.SmartWindowManager.ActiveCanvasViewer; if (cv != null) { IRasterDrawing drawing = cv.ActiveObject as IRasterDrawing; subProduct.ArgumentProvider.DataProvider = drawing != null ? drawing.DataProvider : null; } else { if (subProduct.ArgumentProvider.DataProvider != null) { subProduct.ArgumentProvider.DataProvider.Dispose(); subProduct.ArgumentProvider.DataProvider = null; } } } }
private string GetWarpImgName() { ICanvasViewer canViewer = _smartSession.SmartWindowManager.ActiveCanvasViewer; if (canViewer == null) { return(""); } IRasterDrawing drawing = _smartSession.SmartWindowManager.ActiveCanvasViewer.Canvas.PrimaryDrawObject as IRasterDrawing; GeoDo.RSS.Core.DF.IRasterDataProvider rdp = drawing.DataProvider; if (rdp == null) { return(""); } else { return(rdp.fileName); } }
private IRasterDataProvider GetRasterDataProvider() { if (_smartSession.SmartWindowManager == null) { return(null); } ICanvasViewer viewer = _smartSession.SmartWindowManager.ActiveCanvasViewer; if (viewer == null) { return(null); } IRasterDrawing drawing = viewer.ActiveObject as IRasterDrawing; if (drawing == null || drawing.DataProvider == null) { return(null); } return(drawing.DataProvider); }
public DensitySliceForm(IRasterDrawing rd) { InitializeComponent(); _drawing = rd; if (_drawing.SelectedBandNos.Length == 1) { _selectBand = _drawing.SelectedBandNos[0]; } _oSelectBands = _drawing.SelectedBandNos; if (rd.RgbProcessorStack != null && rd.RgbProcessorStack.Processors != null) { _oRgbProcessors = new List <IRgbProcessor>(); foreach (IRgbProcessor processor in rd.RgbProcessorStack.Processors) { _oRgbProcessors.Add(processor); } _oRgbProcessors.Reverse(); } InitForm(); }
public static Bitmap GetBitmapUseOriginResolution(this IRasterDrawing drawing) { IOverviewGenerator gen = drawing.DataProviderCopy as IOverviewGenerator; if (drawing.SelectedBandNos == null) { return(null); } Bitmap bm = null; if (drawing.SelectedBandNos.Length == 1) { bm = new Bitmap(drawing.DataProviderCopy.Width, drawing.DataProviderCopy.Height, PixelFormat.Format8bppIndexed); bm.Palette = BitmapBuilderFactory.GetDefaultGrayColorPalette(); } else { try { bm = new Bitmap(drawing.DataProviderCopy.Width, drawing.DataProviderCopy.Height, PixelFormat.Format24bppRgb); } catch (Exception ex) { throw new Exception(string.Format("无法创建过大的Bitmap[{0}*{1}]", drawing.DataProviderCopy.Width, drawing.DataProviderCopy.Height), ex.InnerException); } } string ext = Path.GetExtension(drawing.FileName).ToLower(); if (ext == ".bmp" || ext == ".png" || ext == ".jpg" || ext == ".jpeg") { bm = (Bitmap)Bitmap.FromFile(drawing.FileName); } else { gen.Generate(drawing.SelectedBandNos, ref bm); } IRgbProcessorStack stack = drawing.RgbProcessorStack; stack.Apply(null, bm); return(bm); }
public string CreateMCSI(ISmartSession session) { IRasterDrawing drawing = GetRasterDrawingArugment(session); if (drawing == null) { return(null); } string theme = GetLayoutTheme("MCSI"); if (string.IsNullOrWhiteSpace(theme)) { return(null); } int width, height; string bmpFilename = CreateViewBitmap(drawing, session, out width, out height); string gxdFilename = GetGxdFilename(drawing.FileName, "MCSI"); if (string.IsNullOrWhiteSpace(gxdFilename)) { return(null); } //加载模版 ILayoutTemplate temp = GetTemplateByArg(theme); if (temp == null) { return(null); } ILayout layout = temp.Layout; FitSizeToTemplateWidth(layout, width, height); //生成文档,并应用变量 IGxdDocument gxdDoc = GetDocument(bmpFilename, temp); TryApplyVars(gxdDoc.GxdTemplateHost.LayoutTemplate, drawing); TrySetAttributesOfElements(gxdDoc); gxdDoc.SaveAs(gxdFilename); //IExtractResult er = new FileExtractResult("MCSI", gxdFilename) as IExtractResult; return(gxdFilename); }
private void UpdateCanvasEnvelope(int offsetX, int offsetY) { ICanvasViewer viewer = _session.SmartWindowManager.ActiveCanvasViewer; if (viewer == null || viewer.ActiveObject == null) { return; } IRasterDrawing drawing = viewer.ActiveObject as IRasterDrawing; if (drawing == null || drawing.DataProvider == null) { return; } GeoDo.RSS.Core.DrawEngine.CoordEnvelope evp = viewer.Canvas.CurrentEnvelope; Core.DrawEngine.CoordEnvelope newevp = new Core.DrawEngine.CoordEnvelope( new Core.DrawEngine.CoordPoint(evp.MinX + _offsetX * _resX, evp.MinY - _offsetY * _resY), evp.Width, evp.Height); viewer.Canvas.CurrentEnvelope = newevp; viewer.Canvas.Refresh(Core.DrawEngine.enumRefreshType.All); }
private void SaveSelectedBands(IRasterDrawing drawing, string enhanceFileName) { if (string.IsNullOrEmpty(enhanceFileName)) { return; } int[] bands = drawing.SelectedBandNos; if (bands == null || bands.Length == 0) { return; } string bandString = bands[0].ToString(); for (int i = 1; i < bands.Length; i++) { bandString += "," + bands[i].ToString(); } string bandsFname = Path.GetDirectoryName(enhanceFileName) + "\\" + Path.GetFileNameWithoutExtension(enhanceFileName) + ".bands"; File.WriteAllText(bandsFname, bandString); }
private int[] GetBitmapIndexes(GeometryOfDrawed geometryOfDrawed) { PointF[] pts = geometryOfDrawed.RasterPoints.Clone() as PointF[]; double prjX, prjY; GeoDo.RSS.Core.DrawEngine.ICoordinateTransform tran = _canvas.CoordTransform; for (int i = 0; i < pts.Length; i++) { tran.Raster2Prj((int)pts[i].Y, (int)pts[i].X, out prjX, out prjY); pts[i].X = (float)prjX; pts[i].Y = (float)prjY; } IRasterDrawing rst = _canvas.PrimaryDrawObject as IRasterDrawing; Size size = rst.Bitmap.Size; using (IVectorAOIGenerator gen = new VectorAOIGenerator()) { Envelope evp = new Envelope(rst.Envelope.MinX, rst.Envelope.MinY, rst.Envelope.MaxX, rst.Envelope.MaxY); return(gen.GetAOI(pts, geometryOfDrawed.Types, evp, size)); } }