/// <summary>Assigns a class connectivity group for each edge / junction source in the xml defined groups</summary> private void AssignConnectivity() { int groupCount = 1; foreach (IList <string> group in _xml.ConnectivityGroups()) { foreach (string source in group) { string className = GetFullClassName(source); IEdgeFeatureSource efs = _edgeSources.FirstOrDefault(src => ((INetworkSource)src).Name.Equals(className)); if (efs != null) { efs.ClassConnectivityGroup = groupCount; } else { IJunctionFeatureSource jfs = _junctionSources.FirstOrDefault(src => ((INetworkSource)src).Name.Equals(className)); if (jfs != null) { jfs.AddClassConnectivityGroup(groupCount); } } } ++groupCount; } }
/// <summary>Adds edge feature classes to the network dataset</summary> /// <remarks> /// - For each 'edge' element in the config file, adds a new EdgeFeatureSource to the NDS /// - A new feature class is extracted from *_OSM_LN using a filter specified in the config file /// </remarks> private void ExtractEdgeFeatureClasses() { IList <SourceFeatureClassInfo> edges = _xml.EdgeFeatureClasses().ToList(); if ((edges == null) || (edges.Count == 0)) { return; } ConvertRequiredTagsToAttributes(true); // Create the new feature class using the query filter from the config XML foreach (SourceFeatureClassInfo edge in edges) { string edgeClassName = GetFullClassName(edge.Name); SelectFeaturesToNewFeatureClass(_osmLinePath, _dsPath + "\\" + edgeClassName, edge.Query); INetworkSource edgeNetworkSource = new EdgeFeatureSourceClass(); edgeNetworkSource.Name = edgeClassName; edgeNetworkSource.ElementType = esriNetworkElementType.esriNETEdge; IEdgeFeatureSource edgeFeatureSource = (IEdgeFeatureSource)edgeNetworkSource; edgeFeatureSource.UsesSubtypes = false; edgeFeatureSource.ClassConnectivityPolicy = (esriNetworkEdgeConnectivityPolicy)edge.ConnectPolicy; if (edge.StreetNameFields != null) { // Create a StreetNameFields object and populate its settings for the Streets source. IStreetNameFields streetNameFields = new StreetNameFieldsClass(); streetNameFields.Priority = 1; streetNameFields.StreetNameFieldName = edge.StreetNameFields.StreetName; streetNameFields.PrefixDirectionFieldName = edge.StreetNameFields.DirectionPrefix; streetNameFields.SuffixDirectionFieldName = edge.StreetNameFields.DirectionSuffix; streetNameFields.PrefixTypeFieldName = edge.StreetNameFields.TypePrefix; streetNameFields.SuffixTypeFieldName = edge.StreetNameFields.TypeSuffix; INetworkSourceDirections sourceDirections = new NetworkSourceDirectionsClass(); IArray streetNameFieldsArray = new ArrayClass(); streetNameFieldsArray.Add(streetNameFields); sourceDirections.StreetNameFields = streetNameFieldsArray; ((INetworkSource)edgeFeatureSource).NetworkSourceDirections = sourceDirections; } _edgeSources.Add(edgeFeatureSource); } }
private INetworkDataset method_1(IFeatureDataset ifeatureDataset_1, string string_1) { int num; IGeoDataset dataset = (IGeoDataset)ifeatureDataset_1; ISpatialReference spatialReference = dataset.SpatialReference; IDENetworkDataset dataset2 = new DENetworkDatasetClass(); IDataElement element = (IDataElement)dataset2; IDEGeoDataset dataset3 = (IDEGeoDataset)dataset2; element.Name = string_1; dataset2.Buildable = true; dataset3.SpatialReference = spatialReference; IArray array = new ArrayClass(); for (num = 0; num < this.FeatureClassWraps.Count; num++) { if (this.FeatureClassWraps[num].IsUse) { INetworkSource source; IFeatureClass featureClass = this.FeatureClassWraps[num].FeatureClass; if (featureClass.ShapeType == esriGeometryType.esriGeometryPoint) { source = new JunctionFeatureSourceClass { Name = this.FeatureClassWraps[num].ToString() }; IJunctionFeatureSource source2 = (IJunctionFeatureSource)source; source2.ClassConnectivityPolicy = (esriNetworkJunctionConnectivityPolicy) this.FeatureClassWraps[num].NetworkConnectivityPolicy; if (this.ModifyConnectivity) { source2.ElevationFieldName = this.FeatureClassWraps[num].ElevationFieldName; } array.Add(source); } else if (featureClass.ShapeType == esriGeometryType.esriGeometryPolyline) { source = new EdgeFeatureSourceClass(); IEdgeFeatureSource source3 = (IEdgeFeatureSource)source; source.Name = this.FeatureClassWraps[num].ToString(); source3.ClassConnectivityGroup = 1; source3.ClassConnectivityPolicy = (esriNetworkEdgeConnectivityPolicy)this.FeatureClassWraps[num].NetworkConnectivityPolicy; if (this.ModifyConnectivity) { source3.FromElevationFieldName = this.FeatureClassWraps[num].FromElevationFieldName; source3.ToElevationFieldName = this.FeatureClassWraps[num].ToElevationFieldName; } array.Add(source); } } } dataset2.Sources = array; for (num = 0; num < this.iarray_0.Count; num++) { dataset2.Attributes.Add(this.iarray_0.get_Element(num)); } dataset2.SupportsTurns = this.bool_2; IFeatureDatasetExtensionContainer container = (IFeatureDatasetExtensionContainer)ifeatureDataset_1; IDatasetContainer2 container2 = (IDatasetContainer2)container.FindExtension(esriDatasetType.esriDTNetworkDataset); return((INetworkDataset)container2.CreateDataset((IDEDataset)dataset2)); }