static public void SaveServiceableDataset(IServiceableDataset sds, string name) { try { if (sds != null) { XmlStream stream = new XmlStream("MapServer"); stream.Save("IServiceableDataset", sds); stream.WriteStream(ServicesPath + @"\" + name + ".svc"); if (sds is IMetadata) { stream = new XmlStream("Metadata"); ((IMetadata)sds).WriteMetadata(stream); stream.WriteStream(ServicesPath + @"\" + name + ".svc.meta"); } } } catch (Exception ex) { if (Functions.log_errors) { Logger.Log(loggingMethod.error, "LoadConfig: " + ex.Message); } } }
public ServiceableDatasetItem(MapServerConnectionExplorerObject exObject, IServiceableDataset sds) { _exObject = exObject; _sds = sds; if (sds == null) { return; } base.Text = sds.Name; base.Click += new EventHandler(ServiceableDatasetItem_Click); }
public MapServerConnectionExplorerObject(IExplorerObject parent) : base(parent, null, 0) { List <ToolStripItem> contextItems = new List <ToolStripItem>(); ToolStripMenuItem importItem = new ToolStripMenuItem(LocalizedResources.GetResString("Menu.Import", "Import")); contextItems.Add(importItem); ToolStripMenuItem newService = new ToolStripMenuItem(LocalizedResources.GetResString("Menu.NewServiceFromMap", "New Service From gView Map...")); newService.Click += new EventHandler(newService_Click); newService.Image = (new MapServiceIcon()).Image; importItem.DropDownItems.Add(newService); //ToolStripMenuItem newServiceColl = new ToolStripMenuItem("New Map Service Collection ..."); //newServiceColl.Click += new EventHandler(newServiceColl_Click); //importItem.DropDownItems.Add(newServiceColl); PlugInManager compMan = new PlugInManager(); foreach (Type serviceableType in compMan .GetPlugins(Plugins.Type.IServiceableDataset)) { IServiceableDataset ds = compMan.CreateInstance(serviceableType) as IServiceableDataset; if (ds == null) { return; } if (importItem.DropDownItems.Count == 1) { importItem.DropDownItems.Add(new ToolStripSeparator()); } ToolStripItem item = new ServiceableDatasetItem(this, ds); item.Image = (new MapServiceIcon2()).Image; importItem.DropDownItems.Add(item); } _contextItems = contextItems.ToArray(); }
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) { if (Functions.log_errors) { Logger.Log(loggingMethod.error, "LoadConfig: " + ex.Message); } } return(null); }
public bool AddMap(string mapName, string MapXML, string usr, string pwd) { if (String.IsNullOrEmpty(MapXML)) { return(ReloadMap(mapName, usr, pwd)); } if (IMS.acl != null && !IMS.acl.HasAccess(Identity.FromFormattedString(usr), pwd, "admin_addmap")) { return(false); } if (IMS.mapServer.Maps.Count >= IMS.mapServer.MaxServices) { // Überprüfen, ob schon eine Service mit gleiche Namen gibt... // wenn ja, ist es nur einem Refresh eines bestehenden Services bool found = false; foreach (IMapService map in IMS.mapServer.Maps) { if (map.Name == mapName) { found = true; break; } } if (!found) { return(false); } } if (MapXML.IndexOf("<IServiceableDataset") == 0) { XmlStream xmlStream = new XmlStream(""); StringReader sr = new StringReader("<root>" + MapXML + "</root>"); if (!xmlStream.ReadStream(sr)) { return(false); } IServiceableDataset sds = xmlStream.Load("IServiceableDataset", null) as IServiceableDataset; if (sds != null && sds.Datasets != null) { IMS.SaveServiceableDataset(sds, mapName); AddMapService(mapName, MapServiceType.SVC); } } else if (MapXML.IndexOf("<ServiceCollection") == 0) { XmlStream stream = new XmlStream(""); StringReader sr = new StringReader(MapXML); if (!stream.ReadStream(sr)) { return(false); } IMS.SaveServiceCollection(mapName, stream); } else // Map { XmlStream xmlStream = new XmlStream("IMap"); StringReader sr = new StringReader(MapXML); if (!xmlStream.ReadStream(sr)) { return(false); } Map map = new Map(); map.Load(xmlStream); map.Name = mapName; foreach (IMap m in ListOperations <IMap> .Clone(_doc.Maps)) { if (m.Name == map.Name) { _doc.RemoveMap(m); } } if (!_doc.AddMap(map)) { return(false); } AddMapService(mapName, MapServiceType.MXL); IMS.SaveConfig(map); } /* * // Alle Layer sichtbar schalten... * IEnum layers = map.MapLayers; * IDatasetElement element; * while((element=(IDatasetElement)layers.Next)!=null) * { * ITOCElement tocElement = map.TOC.GetTOCElement(element); * if (tocElement != null) tocElement.LayerVisible = true; * } */ return(true); }
static public bool AddMap(string mapName, string MapXML, string usr, string pwd) { if (String.IsNullOrEmpty(MapXML)) { return(ReloadMap(mapName, usr, pwd)); } if (InternetMapServer.acl != null && !InternetMapServer.acl.HasAccess(Identity.FromFormattedString(usr), pwd, "admin_addmap")) { return(false); } if (InternetMapServer.Instance.Maps.Count >= InternetMapServer.Instance.MaxServices) { // Überprüfen, ob schon eine Service mit gleiche Namen gibt... // wenn ja, ist es nur einem Refresh eines bestehenden Services bool found = false; foreach (IMapService map in InternetMapServer.Instance.Maps) { if (map.Name == mapName) { found = true; break; } } if (!found) { return(false); } } if (MapXML.IndexOf("<IServiceableDataset") == 0) { XmlStream xmlStream = new XmlStream(""); StringReader sr = new StringReader("<root>" + MapXML + "</root>"); if (!xmlStream.ReadStream(sr)) { return(false); } IServiceableDataset sds = xmlStream.Load("IServiceableDataset", null) as IServiceableDataset; if (sds != null && sds.Datasets != null) { InternetMapServer.SaveServiceableDataset(sds, mapName); AddMapService(mapName, MapServiceType.SVC); } } else if (MapXML.IndexOf("<ServiceCollection") == 0) { XmlStream stream = new XmlStream(""); StringReader sr = new StringReader(MapXML); if (!stream.ReadStream(sr)) { return(false); } InternetMapServer.SaveServiceCollection(mapName, stream); } else // Map { XmlStream xmlStream = new XmlStream("IMap"); StringReader sr = new StringReader(MapXML); if (!xmlStream.ReadStream(sr)) { return(false); } Map map = new Map(); map.Load(xmlStream); map.Name = mapName; //foreach (IMap m in ListOperations<IMap>.Clone(_doc.Maps)) //{ // if (m.Name == map.Name) _doc.RemoveMap(m); //} //if (!_doc.AddMap(map)) return false; AddMapService(mapName, MapServiceType.MXL); InternetMapServer.SaveConfig(map); } return(true); }