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;
Přihlášení členové mohou přispívat, sledovat aktualizace a další. Jste tu noví? Zaregistrujte si bezplatný účet.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.