Beispiel #1
0
        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);
        }
Beispiel #2
0
        public void SaveAsDocument(string gxdfilename)
        {
            IGxdDocument doc = GxdDocument.GenerateFrom(this);

            if (doc != null)
            {
                doc.SaveAs(gxdfilename);
            }
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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]);
                        }
                    }
                }
            }
        }