public void AddDataToLayoutViewer(ILayoutViewer viewer, string fname, params object[] options) { if (viewer == null) { return; } IDataFrame df = viewer.LayoutHost.ActiveDataFrame; if (df == null) { return; } IDataFrameDataProvider provider = df.Provider as IDataFrameDataProvider; if (provider == null) { return; } ICanvas canvas = provider.Canvas; if (canvas == null) { return; } RasterLayerBuilder.CreateAndLoadRasterLayer(_session, canvas, fname, options); viewer.LayoutHost.Render(); }
public DataFrame(ILayoutHost host, IDataFrameDataProvider provider) { _name = Guid.NewGuid().ToString(); _host = host; _size = new System.Drawing.SizeF(300, 300); _isInsideProvider = false; _provider = provider; TrySetAsyncDataArrivedNotify(); ReCreateBorderPen(); }
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 List <ILayerObjectBase> GetLayerObjects() { if (_dataFrame == null || _dataFrame.Provider == null) { return(null); } IDataFrameDataProvider prd = _dataFrame.Provider as IDataFrameDataProvider; if (prd == null) { return(null); } ILayerObjectBase[] layers = GetLayerFromCanvas(prd.Canvas); if (layers != null && layers.Length > 0) { return(new List <ILayerObjectBase>(layers)); } return(null); }
public void Update(ILayoutHost host) { _host = host; ReCreateBorderPen(); if (_isInsideProvider) { if (_provider != null) { _provider.Canvas.Dispose(); } _provider = new DataFrameDataProvider(this, _host.LayoutRuntime, _isUseDefaultBackgroudLayer, _landColor, _seaColor, _interestRegions); _isInsideProvider = true; float w = _size.Width, h = _size.Height; _host.LayoutRuntime.Layout2Pixel(ref w, ref h); (_provider as UserControl).Size = new Size((int)w, (int)h); TrySetAsyncDataArrivedNotify(); } }
public override void Execute() { ILayoutViewer view = _smartSession.SmartWindowManager.ActiveViewer as ILayoutViewer; if (view == null) { return; } if (view.LayoutHost == null || view.LayoutHost.ActiveDataFrame == null) { return; } IDataFrameDataProvider df = view.LayoutHost.ActiveDataFrame.Provider as IDataFrameDataProvider; if (df != null) { df.Canvas.SetToFullEnvelope(); (view.LayoutHost).Render(true); } }
private void GetLayerItemLayouts(ILayerItemGroup g, ILayerObjectContainer layerObjContainer) { ILayerObjectBase[] layers = layerObjContainer.LayerObjects.ToArray(); foreach (ILayerObjectBase obj in layers) { if (obj is ILayerObject) { ILayerObject layerObj = obj as ILayerObject; ILayerItem it = new LayerObjectItem(layerObj); g.Items.Add(it); } else { LayerItemGroup group = new LayerItemGroup(obj.Text ?? string.Empty, obj.Text ?? string.Empty); IDataFrame df = layerObjContainer as IDataFrame; if (df != null) { IDataFrameDataProvider prd = df.Provider as IDataFrameDataProvider; if (prd != null) { ICanvas canvas = prd.Canvas; if (canvas != null) { GeoDo.RSS.Core.DrawEngine.ILayerContainer lc = canvas.LayerContainer as GeoDo.RSS.Core.DrawEngine.ILayerContainer; if (lc != null) { IVectorHostLayer hostLayer = canvas.LayerContainer.VectorHost; if (hostLayer != null) { group.Tag = hostLayer.Map; } } } } } g.Items.Add(group); GetLayerItemLayouts(group, (obj as ILayerObjecGroup).Children.ToArray()); } } }
public void AddVectorDataToLayoutViewer(string fname, bool isNeedCheckNormalImage, params object[] options) { ILayoutViewer v = _session.SmartWindowManager.ActiveViewer as ILayoutViewer; if (v == null) { return; } IDataFrame df = v.LayoutHost.ActiveDataFrame; if (df == null) { return; } IDataFrameDataProvider provider = df.Provider as IDataFrameDataProvider; if (provider == null) { return; } ICanvas c = provider.Canvas; if (c == null) { return; } IVectorHostLayer host = c.LayerContainer.VectorHost as IVectorHostLayer; if (host == null) { return; } AddToCanvas(c, isNeedCheckNormalImage, host, fname); // c.Refresh(enumRefreshType.All); // (v.LayoutHost).SetActiveDataFrame2CurrentTool(); (v.LayoutHost).Render(true); }
private ILayer InitDataFrame(string gxfile, IElement ele, bool isLoadGeoGridLayer) { IDataFrame df = ele as IDataFrame; df.BorderColor = (ele as IDataFrame).BorderColor; df.BorderWidth = (ele as IDataFrame).BorderWidth; df.Location = (ele as IDataFrame).Location; df.Size = (ele as IDataFrame).Size; df.Angle = (ele as IDataFrame).Angle; df.Update(this); IDataFrameDataProvider provider = df.Provider as IDataFrameDataProvider; ILayer gridLayer = null; if (df.GeoGridXml != null) { gridLayer = LoadGeoGridLayerExecutor(df.GeoGridXml); } if (provider != null) { ICanvas c = provider.Canvas; if (c != null) { if (c.CanvasSetting != null) { if (c.CanvasSetting.RenderSetting != null) { c.CanvasSetting.RenderSetting.BackColor = Color.White; } } if (df.Data != null && LoadDataFrameExecutor != null) { LoadDataFrameExecutor(gxfile, this, df, df.Data as XElement); } } } return(gridLayer); }
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(); } }
protected override CodeCell.AgileMap.Core.ISymbol GetSymbol() { if (string.IsNullOrEmpty(_layerName) || _dataFrame == null || _dataFrame.Provider == null) { return(null); } IDataFrameDataProvider provider = _dataFrame.Provider as IDataFrameDataProvider; if (provider == null || provider.Canvas == null) { return(null); } IVectorHostLayer hostLayer = provider.Canvas.LayerContainer.VectorHost as IVectorHostLayer; if (hostLayer == null) { return(null); } IMap map = hostLayer.Map as IMap; if (map == null) { return(null); } CodeCell.AgileMap.Core.ILayer layer = map.LayerContainer.GetLayerByName(_layerName); if (layer == null) { return(null); } CodeCell.AgileMap.Core.IFeatureLayer fetLayer = layer as CodeCell.AgileMap.Core.IFeatureLayer; if (fetLayer == null || fetLayer.Renderer == null) { return(null); } return(fetLayer.Renderer.CurrentSymbol); }
public ICanvas GetCanvas(string fname, params object[] options) { ILayoutViewer v = _session.SmartWindowManager.ActiveViewer as ILayoutViewer; if (v == null) { return(null); } IDataFrame df = v.LayoutHost.ActiveDataFrame; if (df == null) { return(null); } IDataFrameDataProvider provider = df.Provider as IDataFrameDataProvider; if (provider == null) { return(null); } ICanvas c = provider.Canvas; return(c); }
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); }
public override void Dispose() { if (_borderPen != null) { _borderPen.Dispose(); _borderPen = null; } if (_provider != null) { if (_isInsideProvider) { (_provider as IDisposable).Dispose(); } _provider = null; } if (_lockImage != null) { _lockImage.Dispose(); _lockImage = null; } _runtime = null; _host = null; base.Dispose(); }
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; } } }; }