static public void SaveConfig(IMap map) { try { if (MapDocument == null) { return; } ServerMapDocument doc = new ServerMapDocument(); if (!doc.AddMap(map)) { return; } XmlStream stream = new XmlStream("MapServer"); stream.Save("MapDocument", doc); stream.WriteStream(ServicesPath + @"\" + map.Name + ".mxl"); } catch (Exception ex) { Logger.Log(loggingMethod.error, "LoadConfig: " + ex.Message); } }
internal static IMap LoadMap(string name, IServiceRequestContext context) { try { DirectoryInfo di = new DirectoryInfo(ServicesPath); if (!di.Exists) { di.Create(); } FileInfo fi = new FileInfo(ServicesPath + @"\" + name + ".mxl"); if (fi.Exists) { ServerMapDocument doc = new ServerMapDocument(); doc.LoadMapDocument(fi.FullName); if (doc.Maps.Count == 1) { ApplyMetadata(doc.Maps[0] as Map); if (!MapDocument.AddMap(doc.Maps[0])) { return(null); } return(doc.Maps[0]); } return(null); } fi = new FileInfo(ServicesPath + @"\" + name + ".svc"); if (fi.Exists) { XmlStream stream = new XmlStream(""); stream.ReadStream(fi.FullName); IServiceableDataset sds = stream.Load("IServiceableDataset", null) as IServiceableDataset; if (sds != null && sds.Datasets != null) { Map map = new Map(); map.Name = name; foreach (IDataset dataset in sds.Datasets) { if (dataset is IRequestDependentDataset) { if (!((IRequestDependentDataset)dataset).Open(context)) { return(null); } } else { if (!dataset.Open()) { return(null); } } //map.AddDataset(dataset, 0); foreach (IDatasetElement element in dataset.Elements) { if (element == null) { continue; } ILayer layer = LayerFactory.Create(element.Class, element as ILayer); if (layer == null) { continue; } map.AddLayer(layer); if (element.Class is IWebServiceClass) { if (map.SpatialReference == null) { map.SpatialReference = ((IWebServiceClass)element.Class).SpatialReference; } foreach (IWebServiceTheme theme in ((IWebServiceClass)element.Class).Themes) { map.SetNewLayerID(theme); } } else if (element.Class is IFeatureClass && map.SpatialReference == null) { map.SpatialReference = ((IFeatureClass)element.Class).SpatialReference; } else if (element.Class is IRasterClass && map.SpatialReference == null) { map.SpatialReference = ((IRasterClass)element.Class).SpatialReference; } } } ApplyMetadata(map); if (!MapDocument.AddMap(map)) { return(null); } return(map); } return(null); } } catch (Exception ex) { Logger.Log(loggingMethod.error, "LoadConfig: " + ex.Message); } return(null); }