private void button38_Click(object sender, EventArgs e) { _canvas.LayerContainer.Layers.Remove(_vectorHostLayer); _vectorHostLayer.Dispose(); _vectorHostLayer = null; _canvas.Refresh(enumRefreshType.All); }
private void CreateVectorHost() { ICanvas c = canvasHost1.Canvas; if (c != null) { IVectorHostLayer host = new VectorHostLayer(null); c.LayerContainer.Layers.Add(host as GeoDo.RSS.Core.DrawEngine.ILayer); } }
private void btnAddVector_Click(object sender, EventArgs e) { if (_vectorHostLayer != null) { return; } _vectorHostLayer = new VectorHostLayer(null); _canvas.LayerContainer.Layers.Add(_vectorHostLayer); _canvas.Refresh(enumRefreshType.All); }
public override void Execute() { ILayoutViewer view = _smartSession.SmartWindowManager.ActiveViewer as ILayoutViewer; if (view == null) { return; } ILayoutHost host = view.LayoutHost; if (host == null) { return; } if (host.LayoutRuntime == null) { return; } if (host.LayoutRuntime.Layout == null) { return; } if (host.LayoutRuntime.Layout.Elements == null || host.LayoutRuntime.Layout.Elements.Count == 0) { return; } IDataFrame df = new DataFrame(host); IDataFrameDataProvider provider = df.Provider as IDataFrameDataProvider; if (provider == null) { return; } ICanvas c = provider.Canvas; if (c != null) { if (c.CanvasSetting != null) { if (c.CanvasSetting.RenderSetting != null) { c.CanvasSetting.RenderSetting.BackColor = Color.White; } } IVectorHostLayer vhost = new VectorHostLayer(null); c.LayerContainer.Layers.Add(vhost as GeoDo.RSS.Core.DrawEngine.ILayer); } host.LayoutRuntime.Layout.Elements.Insert(1, df); host.Render(); host.ActiveDataFrame = df; TryRefreshLayerManager(); }
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 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); }
private IDataFrame GetDataFrame(IDataFrame df) { if (df == null) { return(null); } if (df.Provider != null) { ICanvas canvas = (df.Provider as IDataFrameDataProvider).Canvas; if (canvas == null) { return(null); } if (canvas.LayerContainer.VectorHost == null) { IVectorHostLayer vectorH = new VectorHostLayer(null); canvas.LayerContainer.Layers.Add(vectorH as ILayer); } } return(df); }
private void AttachVectorHost(DataFrame df) { IDataFrameDataProvider provider = df.Provider as IDataFrameDataProvider; if (provider == null) { return; } ICanvas c = provider.Canvas; if (c != null) { if (c.CanvasSetting != null) { if (c.CanvasSetting.RenderSetting != null) { c.CanvasSetting.RenderSetting.BackColor = Color.White; } } IVectorHostLayer vhost = new VectorHostLayer(null); c.LayerContainer.Layers.Add(vhost as GeoDo.RSS.Core.DrawEngine.ILayer); c.SetToChinaEnvelope(); } }
static DataFrame() { LayoutHost.LoadGeoGridLayerExecutor = (xml) => { return(GeoDo.RSS.Core.Grid.GeoGridLayer.FromXml(xml)); }; LayoutHost.LoadDataFrameExecutor = (gxfile, host, df, dfEle) => { IDataFrameDataProvider prd = df.Provider as IDataFrameDataProvider; ICanvas canvas = prd.Canvas; string fname = Path.Combine(Path.GetDirectoryName(gxfile), "tempMcd.xml"); XElement mapElement = dfEle.Element("Map"); //旧模版没有Map节点 if (mapElement != null) { File.WriteAllText(fname, mapElement.ToString()); if (canvas == null) { return; } if (canvas.LayerContainer.VectorHost == null) { IVectorHostLayer vhost = new VectorHostLayer(null, fname); vhost.IsEnableDummyRender = false; vhost.SomeDataIsArrivedHandler += new EventHandler((sender, e) => { host.Render(true); }); canvas.LayerContainer.Layers.Add(vhost as GeoDo.RSS.Core.DrawEngine.ILayer); } } double minX = GetDoubleAtt(dfEle, "minx"); double maxX = GetDoubleAtt(dfEle, "maxx"); double minY = GetDoubleAtt(dfEle, "miny"); double maxY = GetDoubleAtt(dfEle, "maxy"); if (Math.Abs(minX) > double.Epsilon && Math.Abs(minY) > double.Epsilon && Math.Abs(maxX) > double.Epsilon && Math.Abs(maxY) > double.Epsilon) { canvas.CurrentEnvelope = new CoordEnvelope(minX, maxX, minY, maxY); } // df.IsLocked = true; }; //模版保存时调用 LayoutToFile.DataFrame2XmlNodeConverter = (dstFileName, df, doc) => { if (df == null || doc == null) { return(null); } IDataFrameDataProvider prd = df.Provider as IDataFrameDataProvider; if (prd == null) { return(null); } ICanvas canvas = prd.Canvas; if (canvas == null) { return(null); } XmlElement dfNode = doc.CreateElement("DataFrame"); dfNode.SetAttribute("name", df.Name); dfNode.SetAttribute("minx", canvas.CurrentEnvelope.MinX.ToString()); dfNode.SetAttribute("miny", canvas.CurrentEnvelope.MinY.ToString()); dfNode.SetAttribute("maxx", canvas.CurrentEnvelope.MaxX.ToString()); dfNode.SetAttribute("maxy", canvas.CurrentEnvelope.MaxY.ToString()); // IVectorHostLayer hostLayer = canvas.LayerContainer.VectorHost; if (hostLayer != null) { IMap map = hostLayer.Map as IMap; if (map == null) { return(null); } string fname = Path.Combine(Path.GetDirectoryName(dstFileName), "TempMcd.xml"); StringBuilder sb = new StringBuilder(); try { map.SaveTo(fname, true); string[] lines = File.ReadAllLines(fname); for (int i = 1; i < lines.Length; i++) { sb.AppendLine(lines[i]); } } finally { if (File.Exists(fname)) { File.Delete(fname); } } // dfNode.InnerXml = sb.ToString(); } // return(dfNode); }; GxdDocument.GxdVectorHostGettter = (df) => { IDataFrameDataProvider provider = df.Provider as IDataFrameDataProvider; if (provider == null) { return(null); } ICanvas c = provider.Canvas; if (c == null) { return(null); } IVectorHostLayer hostLayer = c.LayerContainer.VectorHost; if (hostLayer == null) { return(null); } IMap map = hostLayer.Map as IMap; if (map == null) { return(null); } string fname = AppDomain.CurrentDomain.BaseDirectory + "TempMcd.xml"; //这里相对路径不正确 map.SaveTo(fname, false); string[] lines = File.ReadAllLines(fname); StringBuilder sb = new StringBuilder(); for (int i = 1; i < lines.Length; i++) { sb.AppendLine(lines[i]); } return(new GxdVectorHost(sb.ToString())); }; // GxdDocument.GxdEnvelopeGetter = (df) => { IDataFrameDataProvider provider = df.Provider as IDataFrameDataProvider; if (provider == null) { return(null); } ICanvas c = provider.Canvas; if (c == null) { return(null); } return(new GxdEnvelope(c.CurrentEnvelope.MinX, c.CurrentEnvelope.MaxX, c.CurrentEnvelope.MinY, c.CurrentEnvelope.MaxY)); }; // GxdDocument.GxDataFrameRasterItemsSetter = (df, gxddf) => { IDataFrameDataProvider provider = df.Provider as IDataFrameDataProvider; if (provider == null) { return; } ICanvas c = provider.Canvas; if (c == null) { return; } IRasterDrawing drawing = c.PrimaryDrawObject as IRasterDrawing; if (drawing == null) { return; } IGxdRasterItem it = new GxdRasterItem(drawing.FileName, null); gxddf.GxdRasterItems.Add(it); }; // GxdDocument.GxdAddDataFrameExecutor = (fileName, gxdf, host) => { if (gxdf == null || host == null) { return; } IElement[] dfs = host.LayoutRuntime.QueryElements((e) => { return(e is IDataFrame); }, false); if (dfs == null || dfs.Length == 0) { return; } foreach (IElement e in dfs) { if (e.Name != null && gxdf.Name != null && e.Name == gxdf.Name) { IDataFrame crtDataFrame = e as IDataFrame; if (crtDataFrame.Provider == null) { continue; } crtDataFrame.IsLocked = true; ICanvas canvas = (crtDataFrame.Provider as IDataFrameDataProvider).Canvas; //set spatial ref SetSpatialRefForDataFrame(gxdf.SpatialRef, crtDataFrame); //raster if (gxdf.GxdRasterItems != null && gxdf.GxdRasterItems.Count > 0) { foreach (IGxdRasterItem rst in gxdf.GxdRasterItems) { if (rst == null || string.IsNullOrEmpty(rst.FileName)) { continue; } if (AddFileToCanvasViewerExecutor != null) { AddFileToCanvasViewerExecutor(rst.FileName, rst.Arguments, canvas, rst.FileOpenArgs, rst.ColorTableName); } } } //vector if (gxdf.GxdVectorHost != null && gxdf.GxdVectorHost.McdFileContent != null) { string fname = Path.Combine(Path.GetDirectoryName(fileName), "tempMcd.xml"); File.WriteAllText(fname, gxdf.GxdVectorHost.McdFileContent.ToString()); if (canvas.LayerContainer.VectorHost == null) { IVectorHostLayer vhost = new VectorHostLayer(null, fname); vhost.IsEnableDummyRender = false; vhost.SomeDataIsArrivedHandler += new EventHandler((sender, arge) => { host.Render(true); }); canvas.LayerContainer.Layers.Add(vhost as GeoDo.RSS.Core.DrawEngine.ILayer); } } //coord envelope if (gxdf.Envelope != null && !gxdf.Envelope.IsEmpty()) { GeoDo.RSS.Core.DrawEngine.CoordEnvelope evp = new CoordEnvelope(gxdf.Envelope.MinX, gxdf.Envelope.MaxX, gxdf.Envelope.MinY, gxdf.Envelope.MaxY); canvas.CurrentEnvelope = evp; } //vector host if (canvas.LayerContainer.VectorHost == null) { IVectorHostLayer vhost = new VectorHostLayer(null); vhost.IsEnableDummyRender = false; vhost.SomeDataIsArrivedHandler += new EventHandler((sender, arge) => { host.Render(true); }); canvas.LayerContainer.Layers.Add(vhost as GeoDo.RSS.Core.DrawEngine.ILayer); } //documentable layers XElement otherLayersHost = crtDataFrame.GetDocumentableLayersHostXml(); if (otherLayersHost != null) { Object2Xml obj2xml = new Object2Xml(); foreach (XElement otherLyr in otherLayersHost.Elements()) { //IDocumentableLayer lyr = obj2xml.FromXml(otherLyr) as IDocumentableLayer; //if (lyr != null) // lyr.Load(); } } break; } } }; }