private void button19_Click(object sender, EventArgs e) { GxdDocumentParser p = new GxdDocumentParser(); string fname = "f:\\gxd.xml"; IGxdDocument doc = p.Parse(fname); GxdRasterItem it = new GxdRasterItem("f:\\1.bmp", new PointF()); XElement ele = it.ToXml(); ele = doc.GxdTemplateHost.ToXml(); doc.SaveAs("f:\\gxd2.xml"); }
private IGxdDocument GetDocument(string dataFileName, int[] aoi, ILayoutTemplate t, object options) { IGxdDocument doc = new GxdDocument(new GxdTemplateHost(t)); IGxdDataFrame gxdDf = doc.DataFrames.Count > 0 ? doc.DataFrames[0] : null; if (gxdDf != null) { IGxdRasterItem rst = new GxdRasterItem(dataFileName, options);//这里传具体的色标定义标识 gxdDf.GxdRasterItems.Add(rst); // TryGeneratreAOISecondaryFile(aoi, rst); // TryApplyVars(doc, dataFileName); } return(doc); }
private IGxdDocument GetDocument(ISmartSession session, string rasterFname, string outputFileName, ILayoutTemplate temp, string wndName, params object[] arguments) { IGxdDocument doc = new GxdDocument(new GxdTemplateHost(temp)); IGxdDataFrame gxdDf = doc.DataFrames.Count > 0 ? doc.DataFrames[0] : null; if (string.IsNullOrEmpty(outputFileName)) { return(null); } if (gxdDf != null) { IGxdRasterItem rst = new GxdRasterItem(outputFileName, null);//这里传具体的色标定义标识 gxdDf.GxdRasterItems.Add(rst); } return(doc); }
private string GenerateRasterThemeGraphy(string dstFile, string drawFName) { string templatName = GetLayoutTheme("0SDI"); string colorTabelName = "colortablename=" + "FLDDBLV"; ILayoutTemplate t = GetTemplateByArg(templatName); if (t == null) { return(null); } ILayout layout = t.Layout; int width, height; GeoDo.RSS.Core.DF.CoordEnvelope envelope = null; using (IRasterDataProvider dataPrd = GeoDataDriver.Open(dstFile) as IRasterDataProvider) { width = dataPrd.Width; height = dataPrd.Height; envelope = dataPrd.CoordEnvelope; } FitSizeToTemplateWidth(layout, width, height); //生成文档,并应用变量 TryApplyVars(t, drawFName); IGxdDocument gxdDoc = CreateDocument(t, string.IsNullOrEmpty(colorTabelName) ? null : colorTabelName); IGxdDataFrame gxdDf = gxdDoc.DataFrames.Count > 0 ? gxdDoc.DataFrames[0] : null; if (gxdDf != null) { string[] arguments = new string[] { string.IsNullOrEmpty(colorTabelName) ? null : colorTabelName }; IGxdRasterItem rst = new GxdRasterItem(dstFile, colorTabelName, arguments, colorTabelName);//这里传具体的色标定义标识 gxdDf.GxdRasterItems.Add(rst); } TrySetAttributesOfElements(gxdDoc); string docFname = GetGxdFilename(dstFile, "0SDI"); gxdDoc.SaveAs(docFname); return(docFname); }
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; } } }; }