public static IGxdDocument GenerateFrom(ILayoutHost host) { if (host == null || host.LayoutRuntime == null || host.LayoutRuntime.Layout == null) { return(null); } // ILayoutTemplate template = new LayoutTemplate(host.LayoutRuntime.Layout); GxdTemplateHost gxdTemplate = new GxdTemplateHost(template); // IGxdDocument gxdoc = new GxdDocument(gxdTemplate); // IElement[] dfs = host.LayoutRuntime.QueryElements((ele) => { return(ele is IDataFrame); }, false); if (dfs != null) { gxdoc.DataFrames.Clear(); foreach (IDataFrame df in dfs) { GxdDataFrame gxdDf = new GxdDataFrame(df.Name, GetDfEnvelope(df), GetDfVectorHost(df), df.SpatialRef, df.GetGridXml(), df.GetDocumentableLayersHostXml()); if (GxDataFrameRasterItemsSetter != null) { GxDataFrameRasterItemsSetter(df, gxdDf); } gxdoc.DataFrames.Add(gxdDf); } } return(gxdoc); }
public void SaveAsDocument(string gxdfilename) { IGxdDocument doc = GxdDocument.GenerateFrom(this); if (doc != null) { doc.SaveAs(gxdfilename); } }
public IGxdDocument Parse(string fname) { XDocument doc = XDocument.Load(fname); GxdTemplateHost template = GetGxdTemplate(doc.Root.Element("GxdLaytouTemplate")); List <IGxdDataFrame> dataFrames = GetGxdDataFrames(doc.Root.Element("GxdDataFrames")); IGxdDocument gxdDoc = new GxdDocument(template, dataFrames); gxdDoc.FullPath = fname; return(gxdDoc); }
public void ApplyGxdDocument(IGxdDocument doc) { if (doc == null) { return; } // Dictionary <string, ILayer> gridLayers = null; IGxdTemplateHost tempHost = doc.GxdTemplateHost; if (tempHost != null) { gridLayers = ApplyTemplate(tempHost.LayoutTemplate, false); } // List <IGxdDataFrame> dfs = doc.DataFrames; if (dfs != null && dfs.Count > 0) { foreach (IGxdDataFrame df in dfs) { if (GxdDocument.GxdAddDataFrameExecutor != null) { GxdDocument.GxdAddDataFrameExecutor(doc.FullPath, df, this); } //将经纬网格添加到最上层 if (gridLayers != null && gridLayers.ContainsKey(df.Name)) { IElement[] eles = _layout.QueryElements((e) => { return(e is IDataFrame && (e as IDataFrame).Name == df.Name); }); if (eles != null && eles.Length > 0) { ((eles[0] as IDataFrame).Provider as IDataFrameDataProvider).Canvas.LayerContainer.Layers.Add(gridLayers[df.Name]); } } } } }