Ejemplo n.º 1
0
        /// <summary>Adds turn restriction feature class to network dataset</summary>
        private void ExtractTurnRestrictions()
        {
            string turnFeatureClass = GetFullClassName(_xml.TurnFeatureClassName());

            if (string.IsNullOrEmpty(turnFeatureClass))
            {
                return;
            }

            INetworkDataset nds = null;

            try
            {
                nds = CreateTempNDS();
                ((INetworkBuild)nds).BuildNetwork(_extent);

                NetworkTurns nt = new NetworkTurns(turnFeatureClass, _osmDataset, nds);
                nt.TaskManager           = _taskManager;
                nt.OsmPointFeatureClass  = ((IFeatureWorkspace)_osmDataset.Workspace).OpenFeatureClass(_osmPointName);
                nt.OsmEdgeFeatureClasses = _edgeSources
                                           .OfType <INetworkSource>()
                                           .Select(ns => ((IFeatureWorkspace)_osmDataset.Workspace).OpenFeatureClass(ns.Name))
                                           .ToList();

                IFeatureClass fc = ((IFeatureWorkspace)_osmDataset.Workspace).OpenFeatureClass(_osmLineName);
                nt.OsmExtVersion = fc.OSMExtensionVersion();

                _turnSource = nt.ExtractTurnRestrictions();
            }
            finally
            {
                if (nds != null)
                {
                    ((IDataset)nds).Delete();
                    ComReleaser.ReleaseCOMObject(nds);
                }
            }
        }
        /// <summary>Adds turn restriction feature class to network dataset</summary>
        private void ExtractTurnRestrictions()
        {
            string turnFeatureClass = GetFullClassName(_xml.TurnFeatureClassName());
            if (string.IsNullOrEmpty(turnFeatureClass))
                return;

            INetworkDataset nds = null;

            try
            {
                nds = CreateTempNDS();
                ((INetworkBuild)nds).BuildNetwork(_extent);

                NetworkTurns nt = new NetworkTurns(turnFeatureClass, _osmDataset, nds);
                nt.TaskManager = _taskManager;
                nt.OsmPointFeatureClass = ((IFeatureWorkspace)_osmDataset.Workspace).OpenFeatureClass(_osmPointName);
                nt.OsmEdgeFeatureClasses = _edgeSources
                    .OfType<INetworkSource>()
                    .Select(ns => ((IFeatureWorkspace)_osmDataset.Workspace).OpenFeatureClass(ns.Name))
                    .ToList();

                IFeatureClass fc = ((IFeatureWorkspace)_osmDataset.Workspace).OpenFeatureClass(_osmLineName);
                nt.OsmExtVersion = fc.OSMExtensionVersion();

                _turnSource = nt.ExtractTurnRestrictions();
            }
            finally
            {
                if (nds != null)
                {
                    ((IDataset)nds).Delete();
                    ComReleaser.ReleaseCOMObject(nds);
                }
            }
        }