Пример #1
0
        /// <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;
            }
        }
Пример #2
0
        /// <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);
            }
        }
Пример #3
0
        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));
        }