/// <summary> /// /// </summary> /// <param name="session"></param> /// <param name="canvas"></param> /// <param name="fname"></param> /// <param name="args"> /// 支持各种类型的多个参数 /// 其中string[]类型的数据会作为RasterDrawing的options /// </param> /// <returns></returns> public static IRasterLayer CreateAndLoadRasterLayer(ISmartSession session, ICanvas canvas, string fname, params object[] args) { //bool isImage = IsImage(fname); //IRasterDrawing drawing = new RasterDrawing(fname, canvas, isImage ? null : GetStretcherProvider(args)); string[] options = GetOptions(args); IRasterDrawing drawing = new RasterDrawing(fname, canvas, GetStretcherProvider(args), options); //此处应走配置文件 drawing.SelectedBandNos = GetDefaultBands(drawing); if (args != null && args.Length == 1 && args[0] is int[]) { drawing.SelectedBandNos = (int[])args[0]; } IRasterLayer rstLayer = new RasterLayer(drawing); canvas.LayerContainer.Layers.Add(rstLayer); canvas.PrimaryDrawObject = drawing; canvas.CurrentEnvelope = drawing.OriginalEnvelope; int w = drawing.DataProvider.Width; int h = drawing.DataProvider.Height; //小图像不显示进度条 int times = drawing.GetOverviewLoadTimes(); if (times == -1) { drawing.StartLoading(null); return(rstLayer); } string tipstring = "正在读取文件\"" + Path.GetFileName(fname) + "\"..."; try { session.ProgressMonitorManager.DefaultProgressMonitor.Reset(tipstring, times); session.ProgressMonitorManager.DefaultProgressMonitor.Start(false); drawing.StartLoading((t, p) => { session.ProgressMonitorManager.DefaultProgressMonitor.Boost(p, tipstring); }); } finally { session.ProgressMonitorManager.DefaultProgressMonitor.Finish(); } return(rstLayer); }
private void AddRasterLayer(string strRasName) { if (_isOnlyOneImg) { bool memoryIsEnough = CheckMemory(strRasName); if (!memoryIsEnough) { MsgBox.ShowInfo("系统可用内存不足以对以下文件执行几何精校正操作。\n\n" + strRasName); return; } } IRasterDrawing drawing = new RasterDrawing(strRasName, canvasHost1.Canvas, GetRgbStretcherProvider(strRasName)); drawing.SelectedBandNos = GetDefaultBands(drawing); IRasterLayer rstLayer = new RasterLayer(drawing); canvasHost1.Canvas.LayerContainer.Layers.Add(rstLayer); canvasHost1.Canvas.PrimaryDrawObject = drawing; canvasHost1.Canvas.CurrentEnvelope = drawing.OriginalEnvelope; int times = drawing.GetOverviewLoadTimes(); if (times == -1) { drawing.StartLoading(null); return; } string tipstring = "正在读取文件\"" + Path.GetFileName(_strRasterName) + "\"..."; try { _smartSession.ProgressMonitorManager.DefaultProgressMonitor.Reset(tipstring, times); _smartSession.ProgressMonitorManager.DefaultProgressMonitor.Start(false); drawing.StartLoading((t, p) => { _smartSession.ProgressMonitorManager.DefaultProgressMonitor.Boost(p, tipstring); }); } finally { _smartSession.ProgressMonitorManager.DefaultProgressMonitor.Finish(); } }
public static void Init() { //为数据框注册添加栅格数据的委托 GeoDo.RSS.Layout.DataFrm.DataFrame.AddFileToCanvasViewerExecutor = (fname, argument, canvas, fileOpenargs, colorTableName) => { //IRgbStretcherProvider rgbStretcherpProvider = null; //if (fname.ToUpper().EndsWith(".DAT")) // rgbStretcherpProvider = new RgbStretcherProvider(); IRgbStretcherProvider rgbStretcherpProvider = new RgbStretcherProvider(); if (string.IsNullOrWhiteSpace(colorTableName)) { colorTableName = GetColorTableName(argument);//兼容最早colortablename放在argument中的模式 } else { colorTableName = "colortablename=" + colorTableName; } List <string> options = new List <string>(); if (!string.IsNullOrWhiteSpace(colorTableName)) { options.Add(colorTableName); } if (fileOpenargs != null) { options.AddRange(fileOpenargs); } IRasterDrawing drawing = new RasterDrawing(fname, canvas, rgbStretcherpProvider, options.ToArray()); drawing.SelectedBandNos = GetDefaultBands(drawing); IRasterLayer lyr = new RasterLayer(drawing); canvas.LayerContainer.Layers.Add(lyr); canvas.PrimaryDrawObject = drawing; canvas.CurrentEnvelope = drawing.OriginalEnvelope; drawing.StartLoading(null); TryLoadAOIMaskLayer(canvas, drawing, fname); }; //为栅格图例注册颜色表获取委托 GeoDo.RSS.Layout.RasterLegendElement.RasterLegendItemsGetter = (colorTableName) => { ProductColorTable colorTable = ProductColorTableFactory.GetColorTable(colorTableName); if (colorTable == null) { return(null); } List <LegendItem> items = new List <LegendItem>(); foreach (ProductColor c in colorTable.ProductColors) { if (!c.DisplayLengend) { continue; } string txt = c.LableText; items.Add(new LegendItem(txt, c.Color)); } return(items.Count > 0 ? items.ToArray() : null); }; }
private void AddRasterLayer(string strRasName, ICanvas canvas, double minValue, double maxValue) { IRasterDrawing drawing = new RasterDrawing(strRasName, canvas, GetRgbStretcherProvider(strRasName)); drawing.SelectedBandNos = GetDefaultBands(drawing); Color[] colors = GetDefColors(200); ColorMapTable <double> colorTable = GetColorTable(colors, maxValue, minValue); if (colorTable == null) { return; } drawing.ApplyColorMapTable(colorTable); IRasterLayer rstLayer = new RasterLayer(drawing); canvas.LayerContainer.Layers.Add(rstLayer); canvas.PrimaryDrawObject = drawing; canvas.CurrentEnvelope = drawing.OriginalEnvelope; int times = drawing.GetOverviewLoadTimes(); if (times == -1) { drawing.StartLoading(null); return; } string tipstring = "正在读取文件\"" + Path.GetFileName(strRasName) + "\"..."; try { _smartSession.ProgressMonitorManager.DefaultProgressMonitor.Reset(tipstring, times); _smartSession.ProgressMonitorManager.DefaultProgressMonitor.Start(false); drawing.StartLoading((t, p) => { _smartSession.ProgressMonitorManager.DefaultProgressMonitor.Boost(p, tipstring); }); } finally { _smartSession.ProgressMonitorManager.DefaultProgressMonitor.Finish(); } }
private void button15_Click(object sender, EventArgs e) { IDataFrame df = _host.ActiveDataFrame; if (df == null) { return; } string fname = null; using (OpenFileDialog dlg = new OpenFileDialog()) { if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK) { fname = dlg.FileName; } else { return; } } ICanvas canvas = (df.Provider as IDataFrameDataProvider).Canvas; IRasterDrawing drawing = new RasterDrawing(fname, canvas, null); drawing.SelectedBandNos = GetDefaultBands(drawing); IRasterLayer lyr = new RasterLayer(drawing); canvas.LayerContainer.Layers.Add(lyr); canvas.PrimaryDrawObject = drawing; canvas.CurrentEnvelope = drawing.OriginalEnvelope; // AddVectorHost(canvas); drawing.StartLoading(null); canvas.Refresh(enumRefreshType.All); // fname = @"F:\产品与项目\MAS-II\源代码0618-night\【控制】UI框架\SMART\bin\Release\数据引用\基础矢量\矢量地图\world.mcd"; IVectorHostLayer vHost = new VectorHostLayer(null); vHost.IsEnableDummyRender = false; canvas.LayerContainer.Layers.Add(vHost as ILayer); canvas.Refresh(enumRefreshType.All); // _host.Render(); }
private void btnCreateRasterDrawing_Click(object sender, EventArgs e) { string fname = null; using (OpenFileDialog dlg = new OpenFileDialog()) { dlg.Filter = "(*.ldf)|*.ldf"; if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK) { fname = dlg.FileName; } else { return; } } string ops = null; if (fname.EndsWith(".txt")) { ops = "ComponentID=0000000"; } IRasterDrawing drawing = new RasterDrawing(fname, _canvas, null, ops); drawing.LoadingSubscribers.Add(this); drawing.SelectedBandNos = new int[] { 1, 2, 3 }; IRasterLayer lyr = new RasterLayer(drawing); _canvas.LayerContainer.Layers.Add(lyr); _canvas.PrimaryDrawObject = drawing; _canvas.CurrentEnvelope = drawing.OriginalEnvelope; drawing.StartLoading((t, p) => { Text = p.ToString() + "/" + t.ToString(); }); _canvas.Refresh(enumRefreshType.All); _rasterLayer = lyr; //_canvas.OnEnvelopeChanged += new EventHandler(CanvasEnvelopeChanged); }