예제 #1
0
        public Task <UtilityNetwork> GetUNByLayer(Layer layer)
        {
            return(QueuedTask.Run(() =>
            {
                if (layer is FeatureLayer)
                {
                    FeatureLayer featureLayer = layer as FeatureLayer;
                    using (FeatureClass featureClass = featureLayer.GetFeatureClass())
                    {
                        if (featureClass.IsControllerDatasetSupported())
                        {
                            IReadOnlyList <Dataset> datasets = featureClass.GetControllerDatasets();
                            foreach (var dataset in datasets)
                            {
                                if (dataset is UtilityNetwork)
                                {
                                    return dataset as UtilityNetwork;
                                }
                                else
                                {
                                    dataset.Dispose();
                                }
                            }
                        }
                    }
                }
                else if (layer is UtilityNetworkLayer)
                {
                    UtilityNetworkLayer utilityNetworkLayer = layer as UtilityNetworkLayer;
                    return utilityNetworkLayer.GetUtilityNetwork();
                }

                return null;
            }));
        }
        /// <summary>
        /// GetUtilityNetworkFromFeatureClass - gets a utility network from a layer
        /// </summary>
        /// <param name="layer"></param>
        /// <returns>a UtilityNetwork object, or null if the layer does not reference a utility network</returns>
        public static UtilityNetwork GetUtilityNetworkFromLayer(Layer layer)
        {
            if (layer is UtilityNetworkLayer)
            {
                UtilityNetworkLayer utilityNetworkLayer = layer as UtilityNetworkLayer;
                return(utilityNetworkLayer.GetUtilityNetwork());
            }

            else if (layer is SubtypeGroupLayer)
            {
                CompositeLayer compositeLayer = layer as CompositeLayer;
                return(GetUtilityNetworkFromLayer(compositeLayer.Layers.First()));
            }

            else if (layer is FeatureLayer)
            {
                FeatureLayer featureLayer = layer as FeatureLayer;
                using (FeatureClass featureClass = featureLayer.GetFeatureClass())
                {
                    if (featureClass.IsControllerDatasetSupported())
                    {
                        IReadOnlyList <Dataset> controllerDatasets = featureClass.GetControllerDatasets();
                        foreach (Dataset controllerDataset in controllerDatasets)
                        {
                            if (controllerDataset is UtilityNetwork)
                            {
                                return(controllerDataset as UtilityNetwork);
                            }
                        }
                    }
                }
            }
            return(null);
        }
예제 #3
0
        /// <summary>
        /// GetUtilityNetworkFromFeatureClass - gets a utility network from a layer
        /// </summary>
        /// <param name="layer"></param>
        /// <returns>a UtilityNetwork object, or null if the layer does not reference a utility network</returns>
        public static UtilityNetwork GetUtilityNetworkFromLayer(Layer layer)
        {
            UtilityNetwork utilityNetwork = null;

            if (layer is UtilityNetworkLayer)
            {
                UtilityNetworkLayer utilityNetworkLayer = layer as UtilityNetworkLayer;
                utilityNetwork = utilityNetworkLayer.GetUtilityNetwork();
            }

            else if (layer is SubtypeGroupLayer)
            {
                CompositeLayer compositeLayer = layer as CompositeLayer;
                utilityNetwork = GetUtilityNetworkFromLayer(compositeLayer.Layers.First());
            }

            else if (layer is FeatureLayer)
            {
                FeatureLayer featureLayer = layer as FeatureLayer;
                using (FeatureClass featureClass = featureLayer.GetFeatureClass())
                {
                    if (featureClass.IsControllerDatasetSupported())
                    {
                        IReadOnlyList <Dataset> controllerDatasets = new List <Dataset>();
                        controllerDatasets = featureClass.GetControllerDatasets();
                        foreach (Dataset controllerDataset in controllerDatasets)
                        {
                            if (controllerDataset is UtilityNetwork)
                            {
                                utilityNetwork = controllerDataset as UtilityNetwork;
                            }
                            else
                            {
                                controllerDataset.Dispose();
                            }
                        }
                    }
                }
            }

            else if (layer is GroupLayer)
            {
                CompositeLayer compositeLayer = layer as CompositeLayer;
                foreach (Layer childLayer in compositeLayer.Layers)
                {
                    utilityNetwork = GetUtilityNetworkFromLayer(childLayer);
                    // Break at the first layer inside a group layer that belongs to a utility network
                    if (utilityNetwork != null)
                    {
                        break;
                    }
                }
            }

            return(utilityNetwork);
        }
        /// <summary>
        /// Get the UtilityNetwork from the layer
        /// </summary>
        /// <param name="layer">Layer</param>
        /// <returns>UtilityNetwork</returns>
        private static UtilityNetwork GetUtilityNetworkFromLayer(Layer layer)
        {
            if (layer == null)
            {
                return(null);
            }

            if (layer is UtilityNetworkLayer)
            {
                UtilityNetworkLayer utilityNetworkLayer = layer as UtilityNetworkLayer;
                return(utilityNetworkLayer.GetUtilityNetwork());
            }

            else if (layer is SubtypeGroupLayer)
            {
                CompositeLayer compositeLayer = layer as CompositeLayer;
                UtilityNetwork un;

                foreach (var v in compositeLayer.Layers)
                {
                    un = GetUtilityNetworkFromLayer(v);
                    if (un != null)
                    {
                        return(un);
                    }
                }
            }

            else if (layer is FeatureLayer)
            {
                FeatureLayer featureLayer = layer as FeatureLayer;
                using FeatureClass featureClass = featureLayer.GetFeatureClass();
                if (featureClass.IsControllerDatasetSupported())
                {
                    IReadOnlyList <Dataset> controllerDatasets = featureClass.GetControllerDatasets();
                    foreach (Dataset controllerDataset in controllerDatasets)
                    {
                        if (controllerDataset is UtilityNetwork)
                        {
                            return(controllerDataset as UtilityNetwork);
                        }
                    }
                }
            }

            else if (layer is DiagramLayer dl)
            {
                NetworkDiagram diagram        = dl.GetNetworkDiagram();
                DiagramManager diagramManager = diagram.DiagramManager;

                return(diagramManager.GetNetwork <UtilityNetwork>());
            }
            return(null);
        }