INetworkDataset networkDataset = (INetworkDataset)datasetContainer2.CreateDataset(deDataset);
private static void CreateNetworkDataset(IFeatureDataset featureDataset, string pathAGSOutput, string pathLogEvaluator) { IDENetworkDataset2 deNetworkDataset = new DENetworkDatasetClass(); deNetworkDataset.Buildable = true; deNetworkDataset.NetworkType = esriNetworkDatasetType.esriNDTGeodatabase; IGeoDataset geoDataset = (IGeoDataset)featureDataset; IDEGeoDataset deGeoDataset = (IDEGeoDataset)deNetworkDataset; deGeoDataset.Extent = geoDataset.Extent; deGeoDataset.SpatialReference = geoDataset.SpatialReference; IDataElement dataElement = (IDataElement)deNetworkDataset; dataElement.Name = "NetworkBusStop_ND"; deNetworkDataset.ElevationModel = esriNetworkElevationModel.esriNEMNone; IArray sourceArray = new ArrayClass(); IEdgeFeatureSource edgeFeatureSourceStopToStop = new EdgeFeatureSourceClass(); INetworkSource networkSourceStopToStop = (INetworkSource)edgeFeatureSourceStopToStop; networkSourceStopToStop.Name = "StopToStop"; networkSourceStopToStop.ElementType = esriNetworkElementType.esriNETEdge; edgeFeatureSourceStopToStop.UsesSubtypes = false; edgeFeatureSourceStopToStop.ClassConnectivityPolicy = esriNetworkEdgeConnectivityPolicy.esriNECPEndVertex; edgeFeatureSourceStopToStop.ClassConnectivityGroup = 3; sourceArray.Add(networkSourceStopToStop); IEdgeFeatureSource edgeFeatureSourceConnectorsStopsStreets = new EdgeFeatureSourceClass(); INetworkSource networkSourceConnectorsStopsStreets = (INetworkSource)edgeFeatureSourceConnectorsStopsStreets; networkSourceConnectorsStopsStreets.Name = "ConnectorsStopsStreets"; networkSourceConnectorsStopsStreets.ElementType = esriNetworkElementType.esriNETEdge; edgeFeatureSourceConnectorsStopsStreets.UsesSubtypes = false; edgeFeatureSourceConnectorsStopsStreets.ClassConnectivityPolicy = esriNetworkEdgeConnectivityPolicy.esriNECPEndVertex; edgeFeatureSourceConnectorsStopsStreets.ClassConnectivityGroup = 2; sourceArray.Add(networkSourceConnectorsStopsStreets); IEdgeFeatureSource edgeFeatureSourceStreets = new EdgeFeatureSourceClass(); INetworkSource networkSourceStreets = (INetworkSource)edgeFeatureSourceStreets; networkSourceStreets.Name = "Streets"; networkSourceStreets.ElementType = esriNetworkElementType.esriNETEdge; edgeFeatureSourceStreets.UsesSubtypes = false; edgeFeatureSourceStreets.ClassConnectivityPolicy = esriNetworkEdgeConnectivityPolicy.esriNECPEndVertex; edgeFeatureSourceStreets.ClassConnectivityGroup = 1; sourceArray.Add(networkSourceStreets); IJunctionFeatureSource junctionFeatureSourceStopBus = new JunctionFeatureSourceClass(); INetworkSource networkSourceStopBus = (INetworkSource)junctionFeatureSourceStopBus; networkSourceStopBus.Name = "StopBus"; networkSourceStopBus.ElementType = esriNetworkElementType.esriNETJunction; junctionFeatureSourceStopBus.UsesSubtypes = false; junctionFeatureSourceStopBus.RemoveAllClassConnectivityGroups(); junctionFeatureSourceStopBus.AddClassConnectivityGroup(2); junctionFeatureSourceStopBus.AddClassConnectivityGroup(3); junctionFeatureSourceStopBus.ClassConnectivityPolicy = esriNetworkJunctionConnectivityPolicy.esriNJCPHonor; sourceArray.Add(networkSourceStopBus); IJunctionFeatureSource junctionFeatureSourceStopsSnappedStreets = new JunctionFeatureSourceClass(); INetworkSource networkSourceStopsSnappedStreets = (INetworkSource)junctionFeatureSourceStopsSnappedStreets; networkSourceStopsSnappedStreets.Name = "StopsSnappedStreets"; networkSourceStopsSnappedStreets.ElementType = esriNetworkElementType.esriNETJunction; junctionFeatureSourceStopsSnappedStreets.UsesSubtypes = false; junctionFeatureSourceStopsSnappedStreets.RemoveAllClassConnectivityGroups(); junctionFeatureSourceStopsSnappedStreets.AddClassConnectivityGroup(1); junctionFeatureSourceStopsSnappedStreets.AddClassConnectivityGroup(2); junctionFeatureSourceStopsSnappedStreets.ClassConnectivityPolicy = esriNetworkJunctionConnectivityPolicy.esriNJCPOverride; sourceArray.Add(networkSourceStopsSnappedStreets); deNetworkDataset.SupportsTurns = false; deNetworkDataset.Sources = sourceArray; //cost attribute IEvaluatedNetworkAttribute evaluatedNetworkAttributeSeconds = new EvaluatedNetworkAttributeClass(); INetworkAttribute2 networkAttributeSeconds = (INetworkAttribute2)evaluatedNetworkAttributeSeconds; networkAttributeSeconds.Name = "Seconds"; networkAttributeSeconds.UsageType = esriNetworkAttributeUsageType.esriNAUTCost; networkAttributeSeconds.DataType = esriNetworkAttributeDataType.esriNADTDouble; networkAttributeSeconds.Units = esriNetworkAttributeUnits.esriNAUSeconds; networkAttributeSeconds.UseByDefault = true; DepartureTimeEvaluator.DepartureTimeEvaluator departureTimeEvaluator = new DepartureTimeEvaluator.DepartureTimeEvaluator(); IPropertySet propertySet = new PropertySet(); propertySet.SetProperty(DepartureTimeEvaluator.DepartureTimeEvaluator.PathArcGisServerOutput, pathAGSOutput); propertySet.SetProperty(DepartureTimeEvaluator.DepartureTimeEvaluator.PathLog, pathLogEvaluator); departureTimeEvaluator.Data = propertySet; INetworkConstantEvaluator netConstantAgainstDigitizedEvaluator = new NetworkConstantEvaluatorClass(); netConstantAgainstDigitizedEvaluator.ConstantValue = -1; evaluatedNetworkAttributeSeconds.set_Evaluator(networkSourceStopToStop, esriNetworkEdgeDirection.esriNEDAlongDigitized, departureTimeEvaluator); evaluatedNetworkAttributeSeconds.set_Evaluator(networkSourceStopToStop, esriNetworkEdgeDirection.esriNEDAgainstDigitized, (INetworkEvaluator)netConstantAgainstDigitizedEvaluator); evaluatedNetworkAttributeSeconds.set_Evaluator(networkSourceConnectorsStopsStreets, esriNetworkEdgeDirection.esriNEDAlongDigitized, departureTimeEvaluator); evaluatedNetworkAttributeSeconds.set_Evaluator(networkSourceConnectorsStopsStreets, esriNetworkEdgeDirection.esriNEDAgainstDigitized, departureTimeEvaluator); evaluatedNetworkAttributeSeconds.set_Evaluator(networkSourceStreets, esriNetworkEdgeDirection.esriNEDAlongDigitized, departureTimeEvaluator); evaluatedNetworkAttributeSeconds.set_Evaluator(networkSourceStreets, esriNetworkEdgeDirection.esriNEDAgainstDigitized, departureTimeEvaluator); INetworkConstantEvaluator netConstantEvaluator = new NetworkConstantEvaluatorClass(); netConstantEvaluator.ConstantValue = 0; INetworkEvaluator netConstantEvaluatorZero = netConstantEvaluator as INetworkEvaluator; evaluatedNetworkAttributeSeconds.set_DefaultEvaluator(esriNetworkElementType.esriNETEdge, netConstantEvaluatorZero); evaluatedNetworkAttributeSeconds.set_DefaultEvaluator(esriNetworkElementType.esriNETJunction, netConstantEvaluatorZero); INetworkAttributeParameter2 networkAttributeParameterUseDates = new NetworkAttributeParameterClass(); networkAttributeParameterUseDates.Name = "Use Dates"; networkAttributeParameterUseDates.ParameterUsageType = esriNetworkAttributeParameterUsageType.esriNAPUTGeneral; networkAttributeParameterUseDates.DefaultValue = false; networkAttributeParameterUseDates.VarType = 11; // bool INetworkAttributeParameter2 networkAttributeParameterPedestrianSpeed = new NetworkAttributeParameterClass(); networkAttributeParameterPedestrianSpeed.Name = "Pedestrian speed"; networkAttributeParameterPedestrianSpeed.ParameterUsageType = esriNetworkAttributeParameterUsageType.esriNAPUTGeneral; networkAttributeParameterPedestrianSpeed.DefaultValue = 4.86; // Km/h networkAttributeParameterPedestrianSpeed.VarType = 5; //double IArray parameterArray = new ArrayClass(); parameterArray.Add(networkAttributeParameterUseDates); parameterArray.Add(networkAttributeParameterPedestrianSpeed); networkAttributeSeconds.Parameters = parameterArray; IArray attributeArray = new ArrayClass(); attributeArray.Add(evaluatedNetworkAttributeSeconds); deNetworkDataset.Attributes = attributeArray; IFeatureDatasetExtensionContainer featureDatasetExtensionContainer = (IFeatureDatasetExtensionContainer)featureDataset; IFeatureDatasetExtension featureDatasetExtension = featureDatasetExtensionContainer.FindExtension(esriDatasetType.esriDTNetworkDataset); IDatasetContainer3 datasetContainer2 = (IDatasetContainer3)featureDatasetExtension; IDEDataset deDataset = (IDEDataset)deNetworkDataset; INetworkDataset2 networkDataset = (INetworkDataset2)datasetContainer2.CreateDataset(deDataset); System.Console.WriteLine("Build network dataset"); INetworkBuild networkBuild = (INetworkBuild)networkDataset; networkBuild.BuildNetwork(geoDataset.Extent); }
// Create a new empty data element for a buildable network dataset. IDENetworkDataset2 dataElementNDS = new DENetworkDatasetClass(); dataElementNDS.Buildable = true; //Copy the feature dataset's extent and spatial reference to the network dataset data element. (dataElementNDS as IDEGeoDataset).Extent = (featureDataset as IGeoDataset).Extent; (dataElementNDS as IDEGeoDataset).SpatialReference = (featureDataset as IGeoDataset).SpatialReference; // Specify the name of the network dataset. (dataElementNDS as IDataElement).Name = ndsBaseName; dataElementNDS.ElevationModel = esriNetworkElevationModel.esriNEMElevationFields; // Specify Data contained into NDS and connection rules between them dataElementNDS.Sources = CreateSources(featureDataset as IFeatureClassContainer, timetableShpPattern, paramNDSType, inputDataFolderName, paramHasSubway, paramHasBus, paramHasSubwayTransfert); dataElementNDS.SupportsTurns = true; // Define NDS attribute values possibly based on FCs parameters (ex : travel time) dataElementNDS.Attributes = CreateNDSAttributes(dataElementNDS.Sources, paramNDSType, paramHasSubway, paramHasBus); dataElementNDS.Directions = CreateDirections(); //Create new DataSet within the Feature Dataset contained into the gdb INetworkDataset networkDataset = datasetContainer.CreateDataset(dataElementNDS as IDEDataset) as INetworkDataset;
Aangemelde leden kunnen berichten plaatsen, updates volgen en meer. Nieuw hier? Registreer een gratis account.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.