//根据存放网络数据集的工作空间和网络数据集名称以及要素数据集名称打开网络数据集 public static INetworkDataset OpenPathNetworkDataset(IWorkspace networkDatasetWorkspace, string networkDatasetName, string featureDatasetName) { if (networkDatasetWorkspace == null || networkDatasetName == "" || featureDatasetName == null) { return(null); } IDatasetContainer3 datasetContainer3 = null;//数据集容器。数据集的集合 IFeatureWorkspace featureWorkspace = networkDatasetWorkspace as IFeatureWorkspace; IFeatureDataset featureDataset; featureDataset = featureWorkspace.OpenFeatureDataset(featureDatasetName);//根据名字打开要素数据集 IFeatureDatasetExtensionContainer featureDataExtensionContainer = featureDataset as IFeatureDatasetExtensionContainer; IFeatureDatasetExtension featureDatasetExtension = featureDataExtensionContainer.FindExtension( esriDatasetType.esriDTNetworkDataset); datasetContainer3 = featureDatasetExtension as IDatasetContainer3; if (datasetContainer3 == null) { return(null); } IDataset dataSet = datasetContainer3.get_DatasetByName(esriDatasetType.esriDTNetworkDataset, networkDatasetName); return(dataSet as INetworkDataset); }
/// <summary>Creates an new (unbuilt) Network Dataset</summary> private void CreateBuildableNDS() { IDENetworkDataset2 deNetworkDataset = new DENetworkDatasetClass(); deNetworkDataset.Buildable = true; ((IDataElement)deNetworkDataset).Name = _ndsName; // Copy the feature dataset's extent and spatial reference to the network dataset IDEGeoDataset deGeoDataset = (IDEGeoDataset)deNetworkDataset; deGeoDataset.Extent = _extent; deGeoDataset.SpatialReference = _spatialReference; deNetworkDataset.ElevationModel = esriNetworkElevationModel.esriNEMNone; deNetworkDataset.SupportsTurns = true; // General Network Directions GeneralNetworkDirectionInfo dirInfo = _xml.GeneralNetworkDirections(); if (dirInfo != null) { INetworkDirections netdir = new NetworkDirectionsClass(); netdir.LengthAttributeName = dirInfo.LengthAttr; netdir.DefaultOutputLengthUnits = dirInfo.LengthUnits; netdir.RoadClassAttributeName = dirInfo.RoadClassAttr; netdir.TimeAttributeName = dirInfo.TimeAttr; deNetworkDataset.Directions = netdir; } IArray sources = new ArrayClass(); foreach (INetworkSource ns in EnumerateNetworkSources()) { sources.Add(ns); } IArray attrs = new ArrayClass(); foreach (var na in _networkAttrs) { attrs.Add(na); } deNetworkDataset.Sources = sources; deNetworkDataset.Attributes = attrs; // Get the feature dataset extension and create the network dataset from the data element. IFeatureDatasetExtension fdExtension = ((IFeatureDatasetExtensionContainer)_osmDataset).FindExtension(esriDatasetType.esriDTNetworkDataset); _networkDataset = (INetworkDataset)((IDatasetContainer2)fdExtension).CreateDataset((IDEDataset)deNetworkDataset); }
/// <summary> /// 打开网络数据集 /// </summary> public INetworkDataset OpenNetworkDataset(IWorkspace networkDatasetWorkspace, System.String networkDatasetName, System.String featureDatasetName) { if (networkDatasetWorkspace == null || networkDatasetName == "" || featureDatasetName == null) { return(null); } IFeatureWorkspace featureWorkspace = networkDatasetWorkspace as IFeatureWorkspace; featureDataset = featureWorkspace.OpenFeatureDataset(featureDatasetName); IFeatureDatasetExtensionContainer featureDatasetExtensionContainer = featureDataset as IFeatureDatasetExtensionContainer; IFeatureDatasetExtension featureDatasetExtension = featureDatasetExtensionContainer.FindExtension(esriDatasetType.esriDTNetworkDataset); IDatasetContainer3 datasetContainer3 = (IDatasetContainer3)featureDatasetExtension; if (datasetContainer3 == null) { return(null); } IDataset dataset = datasetContainer3.get_DatasetByName(esriDatasetType.esriDTNetworkDataset, networkDatasetName); return(dataset as INetworkDataset); }
public IDataset GetUNDataset2(IServerObject serverObject, string versionName = null) { IDataset unDataset = null; IMapServer mapService = (MapServer)serverObject; IMapServerDataAccess mapServerDataAccess = (IMapServerDataAccess)serverObject; // Get feature class from any layer IFeatureClass fc = (IFeatureClass)mapServerDataAccess.GetDataSource(mapService.DefaultMapName, 0); // Get the container feature dataset IFeatureDataset fd = fc.FeatureDataset; // Open feature dataset in specified version if (!String.IsNullOrEmpty(versionName)) { IWorkspace workspace = fd.Workspace; IVersionedWorkspace4 versionedWorkspace = (IVersionedWorkspace4)workspace; IVersion4 childVersion = (IVersion4)versionedWorkspace.FindVersion(versionName); IFeatureWorkspace childFWS = (IFeatureWorkspace)childVersion; fd = childFWS.OpenFeatureDataset(fd.Name); } // Get extension container IFeatureDatasetExtensionContainer fdce = (IFeatureDatasetExtensionContainer)fd; // Find UN dataset by type IFeatureDatasetExtension unFDSExt = fdce.FindExtension(esriDatasetType.esriDTUtilityNetwork); IDatasetContainer2 unDSContainer = (IDatasetContainer2)unFDSExt; IEnumDatasetName dsNames = unDSContainer.DatasetNames[esriDatasetType.esriDTUtilityNetwork]; IDatasetName dsName = dsNames.Next(); if (dsName != null) { unDataset = unDSContainer.DatasetByName[esriDatasetType.esriDTUtilityNetwork, dsName.Name]; } return(unDataset); }
/// <summary>Creates a temporary network dataset to use during turn feature creation</summary> private INetworkDataset CreateTempNDS() { const string TEMP_NDS_NAME = "TEMP_TURN_NDS"; IDENetworkDataset2 deNDS = new DENetworkDatasetClass(); deNDS.Buildable = true; ((IDataElement)deNDS).Name = TEMP_NDS_NAME; // Copy the feature dataset's extent and spatial reference to the network dataset IDEGeoDataset deGeoDataset = (IDEGeoDataset)deNDS; deGeoDataset.Extent = _extent; deGeoDataset.SpatialReference = _spatialReference; deNDS.ElevationModel = esriNetworkElevationModel.esriNEMNone; deNDS.SupportsTurns = true; IArray sources = new ArrayClass(); foreach (INetworkSource ns in EnumerateNetworkSources()) { sources.Add(ns); } deNDS.Sources = sources; // Get the feature dataset extension and create the network dataset from the data element. IFeatureDatasetExtension fdExtension = ((IFeatureDatasetExtensionContainer)_osmDataset).FindExtension(esriDatasetType.esriDTNetworkDataset); INetworkDataset nds = (INetworkDataset)((IDatasetContainer2)fdExtension).CreateDataset((IDEDataset)deNDS); if (nds == null) { throw new ArgumentNullException("NetworkDataset"); } return(nds); }
private INetworkDataset OpenNetworkDataset(IWorkspace networkDatasetWorkspace, string networkDatasetName, string featureDatasetName) { if (networkDatasetWorkspace == null || networkDatasetName == "" || featureDatasetName == null) { return(null); } IDatasetContainer2 datasetContainer2 = null; IFeatureWorkspace featureWorkspace = networkDatasetWorkspace as IFeatureWorkspace; featureDataset = featureWorkspace.OpenFeatureDataset(featureDatasetName); IFeatureDatasetExtensionContainer featureDatasetExtensionContainer = featureDataset as IFeatureDatasetExtensionContainer; IFeatureDatasetExtension featureDatasetExtension = featureDatasetExtensionContainer.FindExtension(esriDatasetType.esriDTNetworkDataset); datasetContainer2 = featureDatasetExtension as IDatasetContainer3; if (datasetContainer2 == null) { return(null); } IDataset dataset = datasetContainer2.get_DatasetByName(esriDatasetType.esriDTNetworkDataset, networkDatasetName); return(dataset as INetworkDataset); }