/// <summary> /// Feature Class from id of layer /// </summary> /// <param name="routelayerID">id route layer</param> /// <returns>feature class</returns> private IFeatureClass GetRouteFeatureClass(int routelayerID) { IMapServer3 mapServer = this.GetMapServer(); IMapServerDataAccess dataAccess = (IMapServerDataAccess)mapServer; return((IFeatureClass)dataAccess.GetDataSource(mapServer.DefaultMapName, routelayerID)); }
/// <summary> /// Geodataset from id of layer /// </summary> /// <param name="layerID">unique id layer</param> /// <returns>object Geodataset</returns> private IGeoDataset GetGeodataset(int layerID) { IMapServer3 mapServer = this.GetMapServer(); IMapServerDataAccess dataAccess = (IMapServerDataAccess)mapServer; return((IGeoDataset)dataAccess.GetDataSource(mapServer.DefaultMapName, layerID)); }
public void Init(IServerObjectHelper pSOH) { serverObjectHelper = pSOH; mapService = (MapServer)serverObjectHelper.ServerObject; mapServerDataAccess = (IMapServerDataAccess)serverObjectHelper.ServerObject; // Check if this service contains a Utility Network layer unLayerInfo = soeUtil.GetUNLayerInfo(mapService); if (unLayerInfo != null) { // Get the Utility Network dataset IFeatureClass fc = (IFeatureClass)mapServerDataAccess.GetDataSource(mapService.DefaultMapName, unLayerInfo.SubLayers.Element[0]); // Get UN dataset IFeatureDataset fd = fc.FeatureDataset; IDataset ds = (IDataset)fd; IEnumDataset enumSubDS = ds.Subsets; IDataset subDS = enumSubDS.Next(); while (subDS != null) { if (subDS.Type == esriDatasetType.esriDTUtilityNetwork) { unDataset = subDS; break; } subDS = enumSubDS.Next(); } logger.LogMessage(ServerLogger.msgType.infoStandard, soe_name + ".init()", 200, "UN dataset found: " + unDataset.Name); } }
/// <summary> /// Metodo che restituisce una Feature Class dato un Server Object e il Url del Service Layer /// </summary> /// <param name="serverObjectHelper">Server Object</param> /// <param name="URLServiceLayer">URL Service Layer</param> /// <returns></returns> internal static IFeatureClass RicavaFCDaURLServiceLayer(IServerObjectHelper serverObjectHelper, string URLServiceLayer) { IFeatureClass fc; try { // Ricavo il numero posizionale del Service Layer int numPosizionale = Convert.ToInt32(System.IO.Path.GetFileName(URLServiceLayer)); IMapServer4 mapServer = (IMapServer4)serverObjectHelper.ServerObject; string nomeMapService = mapServer.DefaultMapName; // Use IMapServerDataAccess to get the data IMapServerDataAccess dataAccess = (IMapServerDataAccess)mapServer; // Accedo alla Feature Class sorgente fc = (IFeatureClass)dataAccess.GetDataSource(nomeMapService, numPosizionale); } catch (System.Exception) { throw; } return(fc); }
public void Shutdown() { serverLog.LogMessage(ServerLogger.msgType.infoStandard, this.soeName + ".init()", 200, "Shutting down " + this.soeName + " SOE."); this.soHelper = null; this.serverLog = null; this.mapServerDataAccess = null; this.layerInfos = null; }
/** * This method returns the utility network dataset. */ public IDataset GetUNDataset(IServerObject serverObject, string versionName = null) { IMapServer mapService = (MapServer)serverObject; IMapServerDataAccess mapServerDataAccess = (IMapServerDataAccess)serverObject; // Get feature class from any layer IFeatureClass fc = (IFeatureClass)mapServerDataAccess.GetDataSource(mapService.DefaultMapName, 0); // Get the container feature dataset IFeatureDataset fd = fc.FeatureDataset; // Open feature dataset in specified version if (!String.IsNullOrEmpty(versionName)) { IWorkspace workspace = fd.Workspace; IVersionedWorkspace4 versionedWorkspace = (IVersionedWorkspace4)workspace; IVersion4 childVersion = (IVersion4)versionedWorkspace.FindVersion(versionName); IFeatureWorkspace childFWS = (IFeatureWorkspace)childVersion; fd = childFWS.OpenFeatureDataset(fd.Name); } // Loop through contained datasets to find the UN one IDataset ds = (IDataset)fd; IEnumDataset enumSubDS = ds.Subsets; IDataset subDS = enumSubDS.Next(); while (subDS != null) { if (subDS.Type == esriDatasetType.esriDTUtilityNetwork) { return(subDS); } subDS = enumSubDS.Next(); } return(null); // Alternative approach is to use the dataset extension /* * // Get extension container * IFeatureDatasetExtensionContainer fdce = (IFeatureDatasetExtensionContainer)fd; * * // Find UN dataset by type * IFeatureDatasetExtension unFDSExt = fdce.FindExtension(esriDatasetType.esriDTUtilityNetwork); * IDatasetContainer2 unDSContainer = (IDatasetContainer2)unFDSExt; * * IEnumDatasetName dsNames = unDSContainer.DatasetNames[esriDatasetType.esriDTUtilityNetwork]; * * IDatasetName dsName = dsNames.Next(); * if (dsName != null) * { * unDataset = unDSContainer.DatasetByName[esriDatasetType.esriDTUtilityNetwork, dsName.Name]; * } */ }
public void Init(IServerObjectHelper pSOH) { this.soHelper = pSOH; this.serverLog = new ServerLogger(); this.mapServerDataAccess = (IMapServerDataAccess)this.soHelper.ServerObject; IMapServer3 ms = (IMapServer3)this.mapServerDataAccess; IMapServerInfo mapServerInfo = ms.GetServerInfo(ms.DefaultMapName); this.layerInfos = mapServerInfo.MapLayerInfos; serverLog.LogMessage(ServerLogger.msgType.infoStandard, this.soeName + ".init()", 200, "Initialized " + this.soeName + " SOE."); }
public NetUNTracingRESTSOE() { soe_name = this.GetType().Name; logger = new ServerLogger(); reqHandler = new SoeRestImpl(soe_name, CreateRestSchema()) as IRESTRequestHandler; soeUtil = new SOEUtil(); mapService = null; unLayerInfo = null; mapServerDataAccess = null; unDataset = null; }
public void Init(IServerObjectHelper pSOH) { this.soHelper = pSOH; this.serverLog = new ServerLogger(); this.mapServerDataAccess = (IMapServerDataAccess)this.soHelper.ServerObject; IMapServer ms = (IMapServer)this.mapServerDataAccess; IMapServerInfo mapServerInfo = ms.GetServerInfo(ms.DefaultMapName); this.layerInfos = mapServerInfo.MapLayerInfos; serverLog.LogMessage(ServerLogger.msgType.infoStandard, this.soeName + ".init()", 200, "Initialized " + this.soeName + " SOE."); }
private bool loadGeometricNetworkFromServer(IServerObjectHelper serverObjectHelper, ServerLogger logger) { bool result = false; if (null != serverObjectHelper) { try { IMapServer3 mapServer = (IMapServer3)serverObjectHelper.ServerObject; IMapServerDataAccess da = (IMapServerDataAccess)mapServer; IMapLayerInfos layerInfos = mapServer.GetServerInfo(mapServer.DefaultMapName).MapLayerInfos; IFeatureDataset ftrDataset = null; for (int i = 0; i < layerInfos.Count; i++) { IMapLayerInfo lyrInfo = layerInfos.get_Element(i); if (lyrInfo.IsFeatureLayer) { IFeatureClass ftrClass = (IFeatureClass)da.GetDataSource(mapServer.DefaultMapName, lyrInfo.ID); if (null == ftrDataset && ftrClass.FeatureDataset.Name == this.networkName) { ftrDataset = ftrClass.FeatureDataset; } if (esriFeatureType.esriFTSimpleEdge == ftrClass.FeatureType) { this.addEdgeFeatureClass(ftrClass); } else if (esriFeatureType.esriFTSimpleJunction == ftrClass.FeatureType) { this.addJunctionFeatureClass(ftrClass); } } } if (this.edgeCount > 0 && this.junctionCount > 0 && null != ftrDataset) { INetworkCollection networkCollection = ftrDataset as INetworkCollection; if (networkCollection != null && networkCollection.GeometricNetworkCount > 0) { this.geometricNetwork = networkCollection.GeometricNetwork[0]; result = true; } } } catch (Exception e) { if (null != logger) { logger.LogMessage(ServerLogger.msgType.error, typeof(NetworkHelper).Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name, GLC.AO.AOUtilities.ErrorCode, e.Message); } } } return(result); }
/// <summary> /// code to execute when command is run. /// </summary> /// <exception cref="System.NullReferenceException">Map service was not found.</exception> public Collection <FeatureClassIndexMap> Execute() { var mapServer = _serverObjectHelper.ServerObject as IMapServer3; if (mapServer == null) { #if !DEBUG _logger.LogMessage(ServerLogger.msgType.error, "CreateLayerMapCommand.Execute", MessageCode, "Map service not found."); #endif throw new NullReferenceException("Map service was not found."); } _dataAccess = (IMapServerDataAccess)mapServer; if (_dataAccess == null) { #if !DEBUG _logger.LogMessage(ServerLogger.msgType.error, "CreateLayerMapCommand.Execute", MessageCode, "Problem accessing IMapServerDataAccess object."); #endif throw new NullReferenceException("Problem accessing IMapServerDataAccess object."); } var result = new Collection <FeatureClassIndexMap>(); _defaultMapName = mapServer.DefaultMapName; #if !DEBUG _logger.LogMessage(ServerLogger.msgType.infoStandard, "CreateLayerMapCommand.Execute", MessageCode, string.Format("default map name: {0}", _defaultMapName)); #endif var layerInfos = mapServer.GetServerInfo(_defaultMapName).MapLayerInfos; var count = layerInfos.Count; for (var i = 0; i < count; i++) { var layerInfo = layerInfos.Element[i]; #if !DEBUG _logger.LogMessage(ServerLogger.msgType.infoStandard, "CreateLayerMapCommand.Execute", MessageCode, string.Format("layerInfo name: {0}", layerInfo.Name)); #endif if (layerInfo.IsComposite) { continue; } result.Add(new FeatureClassIndexMap(i, layerInfo.Name, GetFeatureClassFromMap(i))); } new UpdateLayerMapWithFieldIndexMapCommand(result).Execute(); return(result); }
/// <summary> /// code to execute when command is run. /// </summary> /// <exception cref="System.NullReferenceException">Map service was not found.</exception> public Collection<FeatureClassIndexMap> Execute() { var mapServer = _serverObjectHelper.ServerObject as IMapServer3; if (mapServer == null) { #if !DEBUG _logger.LogMessage(ServerLogger.msgType.error, "CreateLayerMapCommand.Execute", MessageCode, "Map service not found."); #endif throw new NullReferenceException("Map service was not found."); } _dataAccess = (IMapServerDataAccess)mapServer; if (_dataAccess == null) { #if !DEBUG _logger.LogMessage(ServerLogger.msgType.error, "CreateLayerMapCommand.Execute", MessageCode, "Problem accessing IMapServerDataAccess object."); #endif throw new NullReferenceException("Problem accessing IMapServerDataAccess object."); } var result = new Collection<FeatureClassIndexMap>(); _defaultMapName = mapServer.DefaultMapName; #if !DEBUG _logger.LogMessage(ServerLogger.msgType.infoStandard, "CreateLayerMapCommand.Execute", MessageCode, string.Format("default map name: {0}", _defaultMapName)); #endif var layerInfos = mapServer.GetServerInfo(_defaultMapName).MapLayerInfos; var count = layerInfos.Count; for (var i = 0; i < count; i++) { var layerInfo = layerInfos.Element[i]; #if !DEBUG _logger.LogMessage(ServerLogger.msgType.infoStandard, "CreateLayerMapCommand.Execute", MessageCode, string.Format("layerInfo name: {0}", layerInfo.Name)); #endif if (layerInfo.IsComposite) { continue; } result.Add(new FeatureClassIndexMap(i, layerInfo.Name, GetFeatureClassFromMap(i))); } new UpdateLayerMapWithFieldIndexMapCommand(result).Execute(); return result; }
public void Init(IServerObjectHelper pSOH) { serverObjectHelper = pSOH; mapServerDataAccess = (IMapServerDataAccess)pSOH.ServerObject; IMapServer3 ms = (IMapServer3)pSOH.ServerObject; this.mapServerInfo = ms.GetServerInfo(ms.DefaultMapName); this.layerInfos = mapServerInfo.MapLayerInfos; if (layerId < 0) { layerId = 0; } }
public void Init(IServerObjectHelper pSOH) { IMapServer mapServer = pSOH.ServerObject as IMapServer; IMapServerDataAccess mapServerDataAccess = mapServer as IMapServerDataAccess; IMapServerInfo mapServerInfo = mapServer.GetServerInfo(mapServer.DefaultMapName); IMapLayerInfos layerInfos = mapServerInfo.MapLayerInfos; IMapLayerInfo ndLayerInfo = null; // Get the network dataset layer from current service for (var i = 0; i < layerInfos.Count; i++) { IMapLayerInfo layerInfo = layerInfos.Element[i]; if (layerInfo.Type.Equals("Network Dataset Layer", StringComparison.InvariantCultureIgnoreCase)) { ndLayerInfo = layerInfo; break; } } // Get the network dataset if (ndLayerInfo != null) { var dt = mapServerDataAccess.GetDataSource(mapServer.DefaultMapName, ndLayerInfo.ID); // Cast the dataset to required network dataset interface networkDataset = dt as INetworkDataset; } if (networkDataset != null) { // Open the streets feature class IDataset dataSet = networkDataset as IDataset; IFeatureWorkspace fWorkspace = dataSet.Workspace as IFeatureWorkspace; streetFC = fWorkspace.OpenFeatureClass(streetsName); // Get the Streets source ID INetworkSource streetNetworkSource = networkDataset.SourceByName[streetsName]; streetsSourceID = streetNetworkSource.ID; // Get the TraveTime attribute ID INetworkAttribute travelTimeAttribute = networkDataset.AttributeByName[costAttributeName]; travelTimeAttributeID = travelTimeAttribute.ID; } }
private void RicavaInfoFc() { try { IMapServer4 mapServer = (IMapServer4)serverObjectHelper.ServerObject; string nomeMapService = mapServer.DefaultMapName; // Use IMapServerDataAccess to get the data IMapServerDataAccess dataAccess = (IMapServerDataAccess)mapServer; // Get access to the source feature class. fcClienti = (IFeatureClass)dataAccess.GetDataSource(nomeMapService, 0); fcFiliari = (IFeatureClass)dataAccess.GetDataSource(nomeMapService, 1); logger.LogMessage(ServerLogger.msgType.infoDetailed, "Fc", 8000, "SOE Geomarketing GiancaGIS: FC ricavati"); } catch (Exception errore) { logger.LogMessage(ServerLogger.msgType.error, "Construct", 8000, $@"SOE GeoMarketing GiancaGIS: {errore.Message}"); } }
public IDataset GetUNDataset2(IServerObject serverObject, string versionName = null) { IDataset unDataset = null; IMapServer mapService = (MapServer)serverObject; IMapServerDataAccess mapServerDataAccess = (IMapServerDataAccess)serverObject; // Get feature class from any layer IFeatureClass fc = (IFeatureClass)mapServerDataAccess.GetDataSource(mapService.DefaultMapName, 0); // Get the container feature dataset IFeatureDataset fd = fc.FeatureDataset; // Open feature dataset in specified version if (!String.IsNullOrEmpty(versionName)) { IWorkspace workspace = fd.Workspace; IVersionedWorkspace4 versionedWorkspace = (IVersionedWorkspace4)workspace; IVersion4 childVersion = (IVersion4)versionedWorkspace.FindVersion(versionName); IFeatureWorkspace childFWS = (IFeatureWorkspace)childVersion; fd = childFWS.OpenFeatureDataset(fd.Name); } // Get extension container IFeatureDatasetExtensionContainer fdce = (IFeatureDatasetExtensionContainer)fd; // Find UN dataset by type IFeatureDatasetExtension unFDSExt = fdce.FindExtension(esriDatasetType.esriDTUtilityNetwork); IDatasetContainer2 unDSContainer = (IDatasetContainer2)unFDSExt; IEnumDatasetName dsNames = unDSContainer.DatasetNames[esriDatasetType.esriDTUtilityNetwork]; IDatasetName dsName = dsNames.Next(); if (dsName != null) { unDataset = unDSContainer.DatasetByName[esriDatasetType.esriDTUtilityNetwork, dsName.Name]; } return(unDataset); }
private IFeatureClass GetEditAreaFeatureClass(IServerObject serverObject) { try { // Get GDB workspace IMapServer mapService = (MapServer)serverObject; IMapServerDataAccess mapServerDataAccess = (IMapServerDataAccess)serverObject; IDataset ds = (IDataset)mapServerDataAccess.GetDataSource(mapService.DefaultMapName, 0); IWorkspace workspace = ds.Workspace; // Open edit areas feature class in default workspace IVersionedWorkspace4 versionedWorkspace = (IVersionedWorkspace4)workspace; IVersion4 defaultVersion = (IVersion4)versionedWorkspace.DefaultVersion; IFeatureWorkspace defaultFWS = (IFeatureWorkspace)defaultVersion; return(defaultFWS.OpenFeatureClass(_editAreasFCName)); } catch (Exception e) { _serverLog.LogMessage(ServerLogger.msgType.infoStandard, _soiName + ".GetEditAreaFeatureClass()", 200, "Error while retrieving edit areas feature class: " + e.ToString()); } return(null); }
private string UseAOToCreateUpdateFeatures(string sql) { string retString = "in get UseAOToCreateUpdateFeatures >"; try { //get map server IMapServer3 mapServer = (IMapServer3)serverObjectHelper.ServerObject; IMapServerDataAccess dataAccess = (IMapServerDataAccess)mapServer; IFeatureClass fc = dataAccess.GetDataSource(mapServer.DefaultMapName, 0) as IFeatureClass; retString += ">Attempting to get wse"; IWorkspace ws = (fc as IDataset).Workspace; //string sql = @"exec dbo.apLITSaveChanges @curGeoLocID = 5, @NewGeoLocId = 2, @address = '222W.Pine', @windowsLogin = '******', @city = 'wern', @zipCode = '12345', @Latitude = 1, @longitude = 2, @facilityname = 'asdf', @appID = 'asdf', @serverName = 'asdf', @status = 'r'"; ws.ExecuteSQL(sql); return("ok"); } catch (Exception ex) { return("ERROR " + ex.ToString()); } }
public void Init(IServerObjectHelper pSOH) { _soHelper = pSOH; _serverLog = new ServerLogger(); // set the name of the point layer in the mapservice string mapLayerToFind = "points"; //System.Diagnostics.Debugger.Launch(); //Access the map service and its layer infos ESRI.ArcGIS.Carto.IMapServer3 mapServer = (ESRI.ArcGIS.Carto.IMapServer3)_soHelper.ServerObject; string mapName = mapServer.DefaultMapName; IMapLayerInfos layerInfos = mapServer.GetServerInfo(mapName).MapLayerInfos; IMapLayerInfo layerInfo; // Find the index of the layer of interest int c = layerInfos.Count; int layerIndex = 0; for (int i = 0; i < c; i++) { layerInfo = layerInfos.get_Element(i); if (layerInfo.Name == mapLayerToFind) { layerIndex = i; break; } } // Access the source feature class of the layer data source (to request it on map export :-)) IMapServerDataAccess dataAccess = (IMapServerDataAccess)mapServer; myPointsClass = (IFeatureClass)dataAccess.GetDataSource(mapName, layerIndex); _serverLog.LogMessage(ServerLogger.msgType.infoStandard, _soiName + ".init()", 200, "Initialized " + _soiName + " SOI."); }
public void Construct(IPropertySet props) { configProps = props; // Read the properties. if (props.GetProperty("FieldName") != null) { m_mapFieldToQuery = props.GetProperty("FieldName") as string; } else { throw new ArgumentNullException(); } if (props.GetProperty("LayerName") != null) { m_mapLayerNameToQuery = props.GetProperty("LayerName") as string; } else { throw new ArgumentNullException(); } try { // Get the feature layer to be queried. // Since the layer is a property of the SOE, this only has to be done once. IMapServer3 mapServer = (IMapServer3)serverObjectHelper.ServerObject; string mapName = mapServer.DefaultMapName; IMapLayerInfo layerInfo; IMapLayerInfos layerInfos = mapServer.GetServerInfo(mapName).MapLayerInfos; // Find the index position of the map layer to query. int c = layerInfos.Count; int layerIndex = 0; for (int i = 0; i < c; i++) { layerInfo = layerInfos.get_Element(i); if (layerInfo.Name == m_mapLayerNameToQuery) { layerIndex = i; break; } } // Use IMapServerDataAccess to get the data IMapServerDataAccess dataAccess = (IMapServerDataAccess)mapServer; // Get access to the source feature class. m_fcToQuery = (IFeatureClass)dataAccess.GetDataSource(mapName, layerIndex); if (m_fcToQuery == null) { logger.LogMessage(ServerLogger.msgType.error, "Construct", 8000, "SOE custom error: Layer name not found."); return; } // Make sure the layer contains the field specified by the SOE's configuration. if (m_fcToQuery.FindField(m_mapFieldToQuery) == -1) { logger.LogMessage(ServerLogger.msgType.error, "Construct", 8000, "SOE custom error: Field not found in layer."); } } catch { logger.LogMessage(ServerLogger.msgType.error, "Construct", 8000, "SOE custom error: Could not get the feature layer."); } }
/// <summary> /// Retrieves a list of connection properties from the layers of a <see cref="IMapServer"/>. /// </summary> /// <param name="mapServer">A map server.</param> /// <param name="propertyNames">The names of the keys in each dictionary of the output object.</param> /// <returns> /// A list of <see cref="KeyValuePair<TKey,KValue>"/> objects. /// Each <see cref="KeyValuePair<TKey,KValue>.Key"/> corresponds to a data source name. /// Each value is a <see cref="Dictionary<TKey,TValue>"/> of connection properties. /// </returns> public static List <ConnectionProperties> GetConnectionProperties(this IMapServer mapServer /*, out List<string> propertyNames*/) { IMapLayerInfos mapLayerInfos = null; IMapLayerInfo mapLayerInfo = null; IMapServerDataAccess mapServerDA = null; IMapServerInfo mapServerInfo = null;; ////propertyNames = new List<string>(); IDataset dataset = null; IPropertySet connectionPropertySet = null; object namesObj, valuesObj; string[] names; object[] values; var output = new List <ConnectionProperties>(); try { mapServerDA = (IMapServerDataAccess)mapServer; // Get the server info for the default map. (This application will assume that there is only a single map: the default.) string mapName = mapServer.DefaultMapName; mapServerInfo = mapServer.GetServerInfo(mapName); // Loop through all of the layers in the map service... mapLayerInfos = mapServerInfo.MapLayerInfos; ConnectionProperties connectionProperties; for (int i = 0, l = mapLayerInfos.Count; i < l; i++) { mapLayerInfo = mapLayerInfos.get_Element(i); if (mapLayerInfo.IsComposite) { continue; } connectionProperties = new ConnectionProperties(mapLayerInfo.Name); try { dataset = mapServerDA.GetDataSource(mapName, i) as IDataset; } catch (NotImplementedException ex) { connectionProperties["error"] = ex.Message; output.Add(connectionProperties); continue; } if (dataset != null) { connectionPropertySet = dataset.Workspace.ConnectionProperties; connectionPropertySet.GetAllProperties(out namesObj, out valuesObj); names = namesObj as string[]; values = valuesObj as object[]; string name; for (int j = 0; j < names.Length; j++) { name = names[j]; connectionProperties[name] = values[j]; } output.Add(connectionProperties); } } } finally { foreach (var item in new object[] { mapLayerInfos, mapLayerInfo, mapServerDA, mapServerInfo, dataset, connectionPropertySet }) { if (item != null) { Marshal.ReleaseComObject(item); } } } return(output); }
public void Init(IServerObjectHelper pSOH) { serverObjectHelper = pSOH; mapServerDataAccess = (IMapServerDataAccess)pSOH.ServerObject; IMapServer3 ms = (IMapServer3)pSOH.ServerObject; this.mapServerInfo = ms.GetServerInfo(ms.DefaultMapName); this.layerInfos = mapServerInfo.MapLayerInfos; if (layerId < 0) layerId = 0; }