How to create a geodatabase network dataset
2010-12-02 13:45
375 查看
// Create a new empty data element for a buildable network dataset. IDENetworkDataset deNetworkDataset = new DENetworkDatasetClass(); deNetworkDataset.Buildable = true; // Open the feature dataset and cast to the IGeoDataset interface. IWorkspaceFactory workspaceFactory = new FileGDBWorkspaceFactory(); IWorkspace workspace = workspaceFactory.OpenFromFile(@ "C:\Program Files\ArcGIS\DeveloperKit\SamplesNET\data\CreateNetworkDataset\Paris.gdb", 0); IFeatureWorkspace featureWorkspace = (IFeatureWorkspace)workspace; IFeatureDataset featureDataset = featureWorkspace.OpenFeatureDataset("RoadNetwork"); IGeoDataset geoDataset = (IGeoDataset)featureDataset; // Copy the feature dataset's extent and spatial reference to the network dataset data element. IDEGeoDataset deGeoDataset = (IDEGeoDataset)deNetworkDataset; deGeoDataset.Extent = geoDataset.Extent; deGeoDataset.SpatialReference = geoDataset.SpatialReference; // Specify the name of the network dataset. IDataElement dataElement = (IDataElement)deNetworkDataset; dataElement.Name = "ParisNet";
// Create a new EdgeFeatureSource object and point it to the Streets feature class. INetworkSource edgeNetworkSource = new EdgeFeatureSourceClass(); edgeNetworkSource.Name = "Streets"; edgeNetworkSource.ElementType = esriNetworkElementType.esriNETEdge; // Set the edge feature source's connectivity settings. IEdgeFeatureSource edgeFeatureSource = (IEdgeFeatureSource)edgeNetworkSource; edgeFeatureSource.UsesSubtypes = true; edgeFeatureSource.set_SubtypeConnectivityGroup(1, 1); edgeFeatureSource.set_SubtypeConnectivityPolicy(1, esriNetworkEdgeConnectivityPolicy.esriNECPEndVertex); edgeFeatureSource.set_SubtypeConnectivityGroup(2, 1); edgeFeatureSource.set_SubtypeConnectivityPolicy(2, esriNetworkEdgeConnectivityPolicy.esriNECPEndVertex); edgeFeatureSource.set_SubtypeConnectivityGroup(3, 1); edgeFeatureSource.set_SubtypeConnectivityPolicy(3, esriNetworkEdgeConnectivityPolicy.esriNECPAnyVertex);
// Create a StreetNameFields object and populate its settings. IStreetNameFields streetNameFields = new StreetNameFieldsClass(); streetNameFields.Priority = 1; // Indicates the primary street name. streetNameFields.StreetNameFieldName = "FULL_NAME"; // Add the StreetNameFields object to a new NetworkSourceDirections object, // then add it to the EdgeFeatureSource created earlier. INetworkSourceDirections nsDirections = new NetworkSourceDirectionsClass(); IArray nsdArray = new ArrayClass(); nsdArray.Add(streetNameFields); nsDirections.StreetNameFields = nsdArray; edgeNetworkSource.NetworkSourceDirections = nsDirections;
// Create a new EvaluatedNetworkAttribute object and populate its settings. IEvaluatedNetworkAttribute minutesAttribute = new EvaluatedNetworkAttributeClass(); INetworkAttribute2 minutesNetworkAttribute2 = (INetworkAttribute2)minutesAttribute; minutesNetworkAttribute2.Name = "Minutes"; minutesNetworkAttribute2.UsageType = esriNetworkAttributeUsageType.esriNAUTCost; minutesNetworkAttribute2.DataType = esriNetworkAttributeDataType.esriNADTDouble; minutesNetworkAttribute2.Units = esriNetworkAttributeUnits.esriNAUMinutes; minutesNetworkAttribute2.UseByDefault = true; // Create evaluator objects and set them on the EvaluatedNetworkAttribute object. INetworkFieldEvaluator ftMinutesNetworkFieldEvaluator = new NetworkFieldEvaluatorClass(); INetworkEvaluator ftMinutesNetworkEvaluator = (INetworkEvaluator) ftMinutesNetworkFieldEvaluator; ftMinutesNetworkFieldEvaluator.SetExpression("[FT_Minutes]", ""); minutesAttribute.set_Evaluator(edgeNetworkSource, esriNetworkEdgeDirection.esriNEDAlongDigitized, ftMinutesNetworkEvaluator); INetworkFieldEvaluator tfMinutesNetworkFieldEvaluator = new NetworkFieldEvaluatorClass(); INetworkEvaluator tfMinutesNetworkEvaluator = (INetworkEvaluator) tfMinutesNetworkFieldEvaluator; tfMinutesNetworkFieldEvaluator.SetExpression("[TF_Minutes]", ""); minutesAttribute.set_Evaluator(edgeNetworkSource, esriNetworkEdgeDirection.esriNEDAgainstDigitized, tfMinutesNetworkEvaluator); INetworkConstantEvaluator minutesNetworkConstantEvaluator = new NetworkConstantEvaluatorClass(); INetworkEvaluator minutesConstantNetworkEvaluator = (INetworkEvaluator) minutesNetworkConstantEvaluator; minutesNetworkConstantEvaluator.ConstantValue = 0; minutesAttribute.set_DefaultEvaluator(esriNetworkElementType.esriNETEdge, minutesConstantNetworkEvaluator); minutesAttribute.set_DefaultEvaluator(esriNetworkElementType.esriNETJunction, minutesConstantNetworkEvaluator); minutesAttribute.set_DefaultEvaluator(esriNetworkElementType.esriNETTurn, minutesConstantNetworkEvaluator); // Add the attribute to the array. attributeArray.Add(minutesAttribute);
相关文章推荐
- ArcMap (ArcInfo) - How to Perform a Network Trace over a Geometric Network in a Geodatabase
- How to create geometric networks within a geodatabase
- How to create physical standby database with 11g RMAN DUPLICATE FROM ACTIVE DATABASE [ID 747250.1]
- How to Create/Drop Database, Table
- How to Create a site at the specified URL and new database (Command-Line Operation)
- How-To create a MySQL database and set privileges to a user
- How to create svn database on the ubuntu
- How to create new geodatabases
- Docker - How to create a custom database from docker mysql image
- How to create a logical standby database based on a physical standby database
- GP学习(八)—How to access a raster dataset and to create a raster dataset
- How to Create/Drop Database, Table
- How to create a Oracle 11g RAC Database manually without DBCA ?
- How to create new geodatabases
- How to create physical standby database with 11g RMAN DUPLICATE FROM ACTIVE DATABASE [ID 747250.1]
- [转]How to create an anonymous IDA PRO database (.IDB)
- Oracle 11g Active Data Guard step by step: How to create a Physical Standby Database using RMAN
- Create intelligent Web spiders -How to use Java network objects and HTML objects
- [置顶] How to create Oracle 11g R2 database manually in ASM?
- How to create physical standby database with 11g RMAN DUPLICATE FROM ACTIVE DATABASE [ID 747250.1]