/// <summary>
        /// GetTraversalResultLayer will generate a layer out of the traversal result for the specified element type
        /// </summary>
        private IFeatureLayer GetTraversalResultLayer(esriNetworkElementType elementType, INATraversalResultQuery2 naTraversalResultQuery)
        {
            //Junctions Traversal Result Feature Layer
            IFeatureClass traversalResultFeatureClass = naTraversalResultQuery.get_FeatureClass(elementType);

            if (traversalResultFeatureClass != null)
            {
                // save the rows in this class out when the MXD is saved
                INAClass naClass = traversalResultFeatureClass as INAClass;
                naClass.SaveRowsOnPersist = true;

                // create the traversal result layer
                IFeatureLayer traversalResultLayer = new FeatureLayerClass();
                traversalResultLayer.FeatureClass = traversalResultFeatureClass;
                traversalResultLayer.Name         = traversalResultFeatureClass.AliasName;

                // Set up the layer with an appropriate symbology
                var geoFeatureLayer = traversalResultLayer as IGeoFeatureLayer;
                geoFeatureLayer.RendererPropertyPageClassID = (new SingleSymbolPropertyPageClass()).ClassID;
                geoFeatureLayer.Renderer = GetRenderer(elementType);

                return(traversalResultLayer);
            }
            return(null);
        }
Пример #2
0
        //
        // CONSTRUCTOR
        //
        public NetworkSource(IXPathNavigable path) : base(path)
        {
            // Get Navigator
            XPathNavigator navigator = path.CreateNavigator();

            // <ID></ID>
            XPathNavigator navigatorID = navigator.SelectSingleNode("ID");

            if (navigatorID != null)
            {
                this._id = navigatorID.ValueAsInt;
            }

            // <ClassID></ClassID>
            XPathNavigator navigatorClassID = navigator.SelectSingleNode("ClassID");

            if (navigatorClassID != null)
            {
                this._classId = navigatorClassID.ValueAsInt;
            }

            // <Name></Name>
            XPathNavigator navigatorName = navigator.SelectSingleNode("Name");

            if (navigatorName != null)
            {
                this._name = navigatorName.Value;
            }

            // <ElementType></ElementType>
            XPathNavigator navigatorElementType = navigator.SelectSingleNode("ElementType");

            if (navigatorElementType != null)
            {
                this._elementType = (esriNetworkElementType)Enum.Parse(typeof(esriNetworkElementType), navigatorElementType.Value, true);
            }

            // <Properties><Property><Property><Properties>
            this._properties = new List <Property>();
            XPathNodeIterator interatorProperty = navigator.Select("Properties/Property");

            while (interatorProperty.MoveNext())
            {
                // Get <Property>
                XPathNavigator navigatorProperty = interatorProperty.Current;

                // Add Property
                Property property = new Property(navigatorProperty);
                this._properties.Add(property);
            }

            // <NetworkSourceDirections>
            XPathNavigator navigatorNetworkSourceDirections = navigator.SelectSingleNode("NetworkSourceDirections");

            if (navigatorNetworkSourceDirections != null)
            {
                this._networkSourceDirections = new NetworkSourceDirections(navigatorNetworkSourceDirections);
            }
        }
        //
        // CONSTRUCTOR
        //
        public NetworkAssignment(IXPathNavigable path) : base(path) {
            // Get Navigator
            XPathNavigator navigator = path.CreateNavigator();

            // <IsDefault>
            XPathNavigator navigatorIsDefault = navigator.SelectSingleNode("IsDefault");
            if (navigatorIsDefault != null) {
                this._isDefault = navigatorIsDefault.ValueAsBoolean;
            }

            // <ID>
            XPathNavigator navigatorID = navigator.SelectSingleNode("ID");
            if (navigatorID != null) {
                this._id = navigatorID.ValueAsInt;
            }

            // <NetworkAttributeName>
            XPathNavigator navigatorNetworkAttributeName = navigator.SelectSingleNode("NetworkAttributeName");
            if (navigatorNetworkAttributeName != null) {
                this._networkAttributeName = navigatorNetworkAttributeName.Value;
            }

            // <NetworkElementType>
            XPathNavigator navigatorNetworkElementType = navigator.SelectSingleNode("NetworkElementType");
            if (navigatorNetworkElementType != null) {
                this._networkElementType = (esriNetworkElementType)Enum.Parse(typeof(esriNetworkElementType), navigatorNetworkElementType.Value, true);
            }

            // <NetworkSourceName>
            XPathNavigator navigatorNetworkSourceName = navigator.SelectSingleNode("NetworkSourceName");
            if (navigatorNetworkSourceName != null) {
                this._networkSourceName = navigatorNetworkSourceName.Value;
            }

            // <NetworkEvaluatorCLSID>
            XPathNavigator navigatorNetworkEvaluatorCLSID = navigator.SelectSingleNode("NetworkEvaluatorCLSID");
            if (navigatorNetworkEvaluatorCLSID != null) {
                this._networkEvaluatorCLSID = navigatorNetworkEvaluatorCLSID.Value;
            }

            // <NetworkEdgeDirection>
            XPathNavigator navigatorNetworkEdgeDirection = navigator.SelectSingleNode("NetworkEdgeDirection");
            if (navigatorNetworkEdgeDirection != null) {
                this._networkEdgeDirection = (esriNetworkEdgeDirection)Enum.Parse(typeof(esriNetworkEdgeDirection), navigatorNetworkEdgeDirection.Value, true);
            }

            // <NetworkEvaluatorData><PropertyArray><PropertySetProperty>
            this._networkEvaluatorData = new List<Property>();
            XPathNodeIterator interatorProperty = navigator.Select("NetworkEvaluatorData/PropertyArray/PropertySetProperty");
            while (interatorProperty.MoveNext()) {
                // Get <PropertySetProperty>
                XPathNavigator navigatorProperty = interatorProperty.Current;

                // Add PropertySetProperty
                Property property = new Property(navigatorProperty);
                this._networkEvaluatorData.Add(property);
            }
        }
Пример #4
0
 public NetworkSource(SerializationInfo info, StreamingContext context) : base(info, context)
 {
     this._id                      = info.GetInt32("id");
     this._classId                 = info.GetInt32("classId");
     this._name                    = info.GetString("name");
     this._elementType             = (esriNetworkElementType)Enum.Parse(typeof(esriNetworkElementType), info.GetString("elementType"), true);
     this._properties              = (List <Property>)info.GetValue("properties", typeof(List <Property>));
     this._networkSourceDirections = (NetworkSourceDirections)info.GetValue("networkSourceDirections", typeof(NetworkSourceDirections));
 }
 public NetworkAssignment(SerializationInfo info, StreamingContext context) : base(info, context)
 {
     this._isDefault             = info.GetBoolean("isDefault");
     this._id                    = info.GetInt32("id");
     this._networkAttributeName  = info.GetString("networkAttributeName");
     this._networkElementType    = (esriNetworkElementType)Enum.Parse(typeof(esriNetworkElementType), info.GetString("networkElementType"), true);
     this._networkSourceName     = info.GetString("networkSourceName");
     this._networkEvaluatorCLSID = info.GetString("networkEvaluatorCLSID");
     this._networkEdgeDirection  = (esriNetworkEdgeDirection)Enum.Parse(typeof(esriNetworkEdgeDirection), info.GetString("networkEdgeDirection"), true);
     this._networkEvaluatorData  = (List <Property>)info.GetValue("networkEvaluatorData", typeof(List <Property>));
 }
Пример #6
0
        private string method_2(esriNetworkElementType esriNetworkElementType_0)
        {
            switch (esriNetworkElementType_0)
            {
            case esriNetworkElementType.esriNETJunction:
                return("Junction");

            case esriNetworkElementType.esriNETEdge:
                return("Edge");
            }
            return("Turn");
        }
        public static void SetEvaluators(IEvaluatedNetworkAttribute netAttribute, INetworkSource netSource, Type t)
        {
            esriNetworkElementType eType = netSource.ElementType;

            if (eType == esriNetworkElementType.esriNETEdge)
            {
                SetEvaluator(netAttribute, netSource, t, esriNetworkEdgeDirection.esriNEDAlongDigitized);
                SetEvaluator(netAttribute, netSource, t, esriNetworkEdgeDirection.esriNEDAgainstDigitized);
            }
            else
            {
                SetEvaluator(netAttribute, netSource, t, esriNetworkEdgeDirection.esriNEDNone);
            }
        }
Пример #8
0
 public bool ValidateDefault(esriNetworkElementType elementType, IEvaluatedNetworkAttribute attribute, ref int errorCode, ref string errorDescription, ref string errorAppendInfo)
 {
     if (SupportsDefault(elementType, attribute))
     {
         errorCode        = 0;
         errorDescription = errorAppendInfo = string.Empty;
         return(true);
     }
     else
     {
         errorCode        = -1;
         errorDescription = errorAppendInfo = string.Empty;
         return(false);
     }
 }
 public NetworkAssignment(NetworkAssignment prototype) : base(prototype)
 {
     this._isDefault             = prototype.IsDefault;
     this._id                    = prototype.ID;
     this._networkAttributeName  = prototype.NetworkAttributeName;
     this._networkElementType    = prototype.NetworkElementType;
     this._networkSourceName     = prototype.NetworkSourceName;
     this._networkEvaluatorCLSID = prototype.NetworkEvaluatorCLSID;
     this._networkEdgeDirection  = prototype.NetworkEdgeDirection;
     this._networkEvaluatorData  = new List <Property>();
     foreach (Property property in prototype.NetworkEvaluatorDataCollection)
     {
         Property propertyClone = (Property)property.Clone();
         this._networkEvaluatorData.Add(propertyClone);
     }
 }
Пример #10
0
        //
        // CONSTRUCTOR
        //
        public NetworkSource(IXPathNavigable path) : base(path) {
            // Get Navigator
            XPathNavigator navigator = path.CreateNavigator();

            // <ID></ID>
            XPathNavigator navigatorID = navigator.SelectSingleNode("ID");
            if (navigatorID != null) {
                this._id = navigatorID.ValueAsInt;
            }

            // <ClassID></ClassID>
            XPathNavigator navigatorClassID = navigator.SelectSingleNode("ClassID");
            if (navigatorClassID != null) {
                this._classId = navigatorClassID.ValueAsInt;
            }

            // <Name></Name>
            XPathNavigator navigatorName = navigator.SelectSingleNode("Name");
            if (navigatorName != null) {
                this._name = navigatorName.Value;
            }

            // <ElementType></ElementType>
            XPathNavigator navigatorElementType = navigator.SelectSingleNode("ElementType");
            if (navigatorElementType != null) {
                this._elementType = (esriNetworkElementType)Enum.Parse(typeof(esriNetworkElementType), navigatorElementType.Value, true);
            }

            // <Properties><Property><Property><Properties>
            this._properties = new List<Property>();
            XPathNodeIterator interatorProperty = navigator.Select("Properties/Property");
            while (interatorProperty.MoveNext()) {
                // Get <Property>
                XPathNavigator navigatorProperty = interatorProperty.Current;

                // Add Property
                Property property = new Property(navigatorProperty);
                this._properties.Add(property);
            }

            // <NetworkSourceDirections>
            XPathNavigator navigatorNetworkSourceDirections = navigator.SelectSingleNode("NetworkSourceDirections");
            if (navigatorNetworkSourceDirections != null) {
                this._networkSourceDirections = new NetworkSourceDirections(navigatorNetworkSourceDirections);
            }
        }
Пример #11
0
 public NetworkSource(NetworkSource prototype) : base(prototype)
 {
     this._id          = prototype.ID;
     this._classId     = prototype.ClassId;
     this._name        = prototype.Name;
     this._elementType = prototype.ElementType;
     this._properties  = new List <Property>();
     foreach (Property property in prototype.PropertyCollection)
     {
         Property propertyClone = (Property)property.Clone();
         this._properties.Add(propertyClone);
     }
     if (prototype.NetworkSourceDirections != null)
     {
         this._networkSourceDirections = (NetworkSourceDirections)prototype.NetworkSourceDirections.Clone();
     }
 }
        /// <summary>
        /// Verify that the EID corresponds to a valid network element
        /// <param name="value">The EID passed as a string</param>
        /// <param name="elementType">The type of element to be verified</param>
        /// </summary>
        bool ValidateEID(string value, esriNetworkElementType elementType)
        {
            // validate that the EID is a valid integer
            int eid = -1;

            if (!Int32.TryParse(value, out eid) || eid < 1)
            {
                return(false);
            }

            // QueryEdge and QueryJunction will throw exceptions if the EID doesn't match any elements
            var netQuery = m_context.NetworkDataset as INetworkQuery;

            try
            {
                switch (elementType)
                {
                case esriNetworkElementType.esriNETJunction:
                    var junction = netQuery.CreateNetworkElement(esriNetworkElementType.esriNETJunction) as INetworkJunction;
                    netQuery.QueryJunction(eid, junction);
                    break;

                case esriNetworkElementType.esriNETEdge:
                    var edge = netQuery.CreateNetworkElement(esriNetworkElementType.esriNETEdge) as INetworkEdge;
                    netQuery.QueryEdge(eid, esriNetworkEdgeDirection.esriNEDAlongDigitized, edge);
                    break;

                default:
                    return(false);
                }
            }
            catch
            {
                return(false);
            }

            return(true);
        }
Пример #13
0
 public NetworkSource(SerializationInfo info, StreamingContext context) : base(info, context) {
     this._id = info.GetInt32("id");
     this._classId = info.GetInt32("classId");
     this._name = info.GetString("name");
     this._elementType = (esriNetworkElementType)Enum.Parse(typeof(esriNetworkElementType), info.GetString("elementType"), true);
     this._properties = (List<Property>)info.GetValue("properties", typeof(List<Property>));
     this._networkSourceDirections = (NetworkSourceDirections)info.GetValue("networkSourceDirections", typeof(NetworkSourceDirections));
 }
        public static List <INetworkSource> GetSourceList(List <INetworkSource> netSources, esriNetworkElementType eType)
        {
            List <esriNetworkElementType> eTypes = new List <esriNetworkElementType>();

            eTypes.Add(eType);
            return(GetSourceList(netSources, eTypes));
        }
Пример #15
0
 public NetworkSource(NetworkSource prototype) : base(prototype) {
     this._id = prototype.ID;
     this._classId = prototype.ClassId;
     this._name = prototype.Name;
     this._elementType = prototype.ElementType;
     this._properties = new List<Property>();
     foreach (Property property in prototype.PropertyCollection) {
         Property propertyClone = (Property)property.Clone();
         this._properties.Add(propertyClone);
     }
     if (prototype.NetworkSourceDirections != null) {
         this._networkSourceDirections = (NetworkSourceDirections)prototype.NetworkSourceDirections.Clone();
     }
 }
        private static Dictionary <string, List <int> > GetEIDListsBySourceName(INetworkAnalystExtension nax, object searchObject, string baseName)
        {
            if (nax == null)
            {
                return(null);
            }

            bool             naxEnabled = false;
            IExtensionConfig naxConfig  = nax as IExtensionConfig;

            naxEnabled = naxConfig.State == esriExtensionState.esriESEnabled;

            if (!naxEnabled)
            {
                return(null);
            }

            INAWindow       naWindow  = nax.NAWindow;
            INALayer        naLayer   = null;
            INAContext      naContext = null;
            INetworkDataset nds       = null;

            naLayer = naWindow.ActiveAnalysis;
            if (naLayer != null)
            {
                naContext = naLayer.Context;
            }

            if (naContext != null)
            {
                nds = naContext.NetworkDataset;
            }

            INetworkQuery netQuery = nds as INetworkQuery;

            if (netQuery == null)
            {
                return(null);
            }

            bool oidSearch      = false;
            bool geometrySearch = false;

            if (searchObject == null)
            {
                return(null);
            }
            else if (searchObject is Dictionary <string, ILongArray> )
            {
                oidSearch = true;
            }
            else if (searchObject is IGeometry)
            {
                geometrySearch = true;
            }
            else
            {
                return(null);
            }

            VarType       vt          = GetEIDArrayParameterType();
            List <string> sourceNames = FindParameterizedSourceNames(nds, baseName, vt);
            Dictionary <string, List <int> > eidsBySourceName = new Dictionary <string, List <int> >();

            foreach (string sourceName in sourceNames)
            {
                INetworkSource netSource = nds.get_SourceByName(sourceName);
                int            sourceID  = netSource.ID;
                List <int>     eids      = new List <int>();

                if (oidSearch)
                {
                    Dictionary <string, ILongArray> oidArraysBySourceName = (Dictionary <string, ILongArray>)searchObject;
                    ILongArray          oids = null;
                    IEnumNetworkElement enumNetElement;
                    INetworkElement     netElement;

                    if (oidArraysBySourceName.TryGetValue(sourceName, out oids))
                    {
                        enumNetElement = netQuery.get_ElementsByOIDs(sourceID, oids);
                        enumNetElement.Reset();
                        netElement = enumNetElement.Next();
                        while (netElement != null)
                        {
                            eids.Add(netElement.EID);
                            netElement = enumNetElement.Next();
                        }
                    }
                }
                else if (geometrySearch)
                {
                    IGeometry searchGeometry = (IGeometry)searchObject;
                    if (searchGeometry != null && !searchGeometry.IsEmpty)
                    {
                        IGeometry elementGeometry          = null;
                        esriNetworkElementType elementType = esriNetworkElementType.esriNETEdge;
                        int eid = -1;

                        // Search for the network dataset layer associated with the active analysis layer or create one using the
                        // network dataset if matching one not found.
                        // If, for example, multiple network dataset layers are added to the map, the active analysis layer
                        // might not reference the current network dataset layer (nax.CurrentNetworkLayer).

                        INetworkLayer ndsLayer = new NetworkLayerClass();
                        ndsLayer.NetworkDataset = nds;

                        int count = nax.NetworkLayerCount;
                        for (int i = 0; i < count; ++i)
                        {
                            ndsLayer = nax.get_NetworkLayer(i);
                            if (ndsLayer.NetworkDataset == nds)
                            {
                                break;
                            }
                            else
                            {
                                ndsLayer = null;
                            }
                        }

                        if (ndsLayer == null)
                        {
                            ndsLayer = new NetworkLayerClass();
                            ndsLayer.NetworkDataset = nds;
                        }

                        IEnumLocatedNetworkElement enumLocatedNetElement = null;
                        if (ndsLayer != null)
                        {
                            enumLocatedNetElement = ndsLayer.SearchLocatedNetworkElements(sourceName, searchGeometry);
                            enumLocatedNetElement.Reset();
                            eid = enumLocatedNetElement.Next(ref elementGeometry, ref elementType);
                            while (eid != -1)
                            {
                                eids.Add(eid);
                                eid = enumLocatedNetElement.Next(ref elementGeometry, ref elementType);
                            }
                        }
                    }
                }

                eidsBySourceName.Add(sourceName, eids);
            }

            return(eidsBySourceName);
        }
		/// <summary>
		/// Verify that the EID corresponds to a valid network element
		/// <param name="value">The EID passed as a string</param>
		/// <param name="elementType">The type of element to be verified</param>
		/// </summary>
		bool ValidateEID(string value, esriNetworkElementType elementType)
		{
			// validate that the EID is a valid integer
			int eid = -1;
			if (!Int32.TryParse(value, out eid) || eid < 1)
				return false;

			// QueryEdge and QueryJunction will throw exceptions if the EID doesn't match any elements
			var netQuery = m_context.NetworkDataset as INetworkQuery;
			try
			{
				switch (elementType)
				{
					case esriNetworkElementType.esriNETJunction:
						var junction = netQuery.CreateNetworkElement(esriNetworkElementType.esriNETJunction) as INetworkJunction;
						netQuery.QueryJunction(eid, junction);
						break;
					case esriNetworkElementType.esriNETEdge:
						var edge = netQuery.CreateNetworkElement(esriNetworkElementType.esriNETEdge) as INetworkEdge;
						netQuery.QueryEdge(eid, esriNetworkEdgeDirection.esriNEDAlongDigitized, edge);
						break;
					default:
						return false;
				}
			}
			catch
			{
				return false;
			}

			return true;
		}
        /// <summary>
        /// GetRenderer will return a feature renderer with symbology appropriate to the specified element type
        /// </summary>
        private IFeatureRenderer GetRenderer(esriNetworkElementType networkElementType)
        {
            ISimpleRenderer simpleRend = new SimpleRendererClass();
            IRgbColor       color      = new RgbColorClass();

            switch (networkElementType)
            {
            // The junction symbology will be a large yellow circle with a thick black outline
            case esriNetworkElementType.esriNETJunction:

                ISimpleMarkerSymbol junctionPointSymbol = new SimpleMarkerSymbolClass();
                junctionPointSymbol.Style = esriSimpleMarkerStyle.esriSMSCircle;
                junctionPointSymbol.Size  = 10;

                //yellow
                color.Red   = 255;
                color.Blue  = 0;
                color.Green = 255;
                junctionPointSymbol.Color = color;

                junctionPointSymbol.Outline     = true;
                junctionPointSymbol.OutlineSize = 2;

                //black
                color.Red   = 0;
                color.Blue  = 0;
                color.Green = 0;
                junctionPointSymbol.OutlineColor = color;

                simpleRend.Label  = "TRFC_Junctions";
                simpleRend.Symbol = junctionPointSymbol as ISymbol;
                return(simpleRend as IFeatureRenderer);

            // The turn symbology will be a thick purple line
            case esriNetworkElementType.esriNETTurn:

                ISimpleLineSymbol turnLineSymbol = new SimpleLineSymbolClass();
                turnLineSymbol.Style = esriSimpleLineStyle.esriSLSSolid;
                turnLineSymbol.Width = 4;

                //purple
                color.Red            = 125;
                color.Blue           = 125;
                color.Green          = 0;
                turnLineSymbol.Color = color;

                simpleRend.Label  = "TRFC_Turns";
                simpleRend.Symbol = turnLineSymbol as ISymbol;
                return(simpleRend as IFeatureRenderer);

            // The edge symbology will be a thick blue line
            case esriNetworkElementType.esriNETEdge:

                ISimpleLineSymbol edgeLineSymbol = new SimpleLineSymbolClass();
                edgeLineSymbol.Style = esriSimpleLineStyle.esriSLSSolid;
                edgeLineSymbol.Width = 4;

                //blue
                color.Red            = 0;
                color.Blue           = 255;
                color.Green          = 0;
                edgeLineSymbol.Color = color;

                simpleRend.Label  = "TRFC_Edges";
                simpleRend.Symbol = edgeLineSymbol as ISymbol;
                return(simpleRend as IFeatureRenderer);
            }
            return(null);
        }
        public static void SetDefaultEvaluator(IEvaluatedNetworkAttribute netAttribute, object defaultValue, esriNetworkElementType eType)
        {
            INetworkConstantEvaluator constEvaluator = new NetworkConstantEvaluatorClass();

            constEvaluator.ConstantValue = defaultValue;
            INetworkEvaluator eval = constEvaluator as INetworkEvaluator;

            netAttribute.set_DefaultEvaluator(eType, eval);
        }
 public NetworkAssignment(SerializationInfo info, StreamingContext context) : base(info, context) {
     this._isDefault = info.GetBoolean("isDefault");
     this._id = info.GetInt32("id");
     this._networkAttributeName = info.GetString("networkAttributeName");
     this._networkElementType = (esriNetworkElementType)Enum.Parse(typeof(esriNetworkElementType), info.GetString("networkElementType"), true);
     this._networkSourceName = info.GetString("networkSourceName");
     this._networkEvaluatorCLSID = info.GetString("networkEvaluatorCLSID");
     this._networkEdgeDirection = (esriNetworkEdgeDirection)Enum.Parse(typeof(esriNetworkEdgeDirection), info.GetString("networkEdgeDirection"), true);
     this._networkEvaluatorData = (List<Property>)info.GetValue("networkEvaluatorData", typeof(List<Property>));
 }
        //
        // CONSTRUCTOR
        //
        public NetworkAssignment(IXPathNavigable path) : base(path)
        {
            // Get Navigator
            XPathNavigator navigator = path.CreateNavigator();

            // <IsDefault>
            XPathNavigator navigatorIsDefault = navigator.SelectSingleNode("IsDefault");

            if (navigatorIsDefault != null)
            {
                this._isDefault = navigatorIsDefault.ValueAsBoolean;
            }

            // <ID>
            XPathNavigator navigatorID = navigator.SelectSingleNode("ID");

            if (navigatorID != null)
            {
                this._id = navigatorID.ValueAsInt;
            }

            // <NetworkAttributeName>
            XPathNavigator navigatorNetworkAttributeName = navigator.SelectSingleNode("NetworkAttributeName");

            if (navigatorNetworkAttributeName != null)
            {
                this._networkAttributeName = navigatorNetworkAttributeName.Value;
            }

            // <NetworkElementType>
            XPathNavigator navigatorNetworkElementType = navigator.SelectSingleNode("NetworkElementType");

            if (navigatorNetworkElementType != null)
            {
                this._networkElementType = (esriNetworkElementType)Enum.Parse(typeof(esriNetworkElementType), navigatorNetworkElementType.Value, true);
            }

            // <NetworkSourceName>
            XPathNavigator navigatorNetworkSourceName = navigator.SelectSingleNode("NetworkSourceName");

            if (navigatorNetworkSourceName != null)
            {
                this._networkSourceName = navigatorNetworkSourceName.Value;
            }

            // <NetworkEvaluatorCLSID>
            XPathNavigator navigatorNetworkEvaluatorCLSID = navigator.SelectSingleNode("NetworkEvaluatorCLSID");

            if (navigatorNetworkEvaluatorCLSID != null)
            {
                this._networkEvaluatorCLSID = navigatorNetworkEvaluatorCLSID.Value;
            }

            // <NetworkEdgeDirection>
            XPathNavigator navigatorNetworkEdgeDirection = navigator.SelectSingleNode("NetworkEdgeDirection");

            if (navigatorNetworkEdgeDirection != null)
            {
                this._networkEdgeDirection = (esriNetworkEdgeDirection)Enum.Parse(typeof(esriNetworkEdgeDirection), navigatorNetworkEdgeDirection.Value, true);
            }

            // <NetworkEvaluatorData><PropertyArray><PropertySetProperty>
            this._networkEvaluatorData = new List <Property>();
            XPathNodeIterator interatorProperty = navigator.Select("NetworkEvaluatorData/PropertyArray/PropertySetProperty");

            while (interatorProperty.MoveNext())
            {
                // Get <PropertySetProperty>
                XPathNavigator navigatorProperty = interatorProperty.Current;

                // Add PropertySetProperty
                Property property = new Property(navigatorProperty);
                this._networkEvaluatorData.Add(property);
            }
        }
		public static void SetDefaultEvaluator(IEvaluatedNetworkAttribute netAttribute, object defaultValue, esriNetworkElementType eType)
		{
			INetworkConstantEvaluator constEvaluator = new NetworkConstantEvaluatorClass();
			constEvaluator.ConstantValue = defaultValue;
			INetworkEvaluator eval = constEvaluator as INetworkEvaluator;
			netAttribute.set_DefaultEvaluator(eType, eval);
		}
 public bool SupportsDefault(esriNetworkElementType elementType, IEvaluatedNetworkAttribute attribute)
 {
     // This custom evaluator can not be used for assigning default attribute values.
     return false;
 }
Пример #24
0
 public bool SupportsDefault(esriNetworkElementType elementType, IEvaluatedNetworkAttribute attribute)
 {
     // This custom evaluator can not be used for assigning default attribute values
     return(false);
 }
 public NetworkAssignment(NetworkAssignment prototype) : base(prototype) {
     this._isDefault = prototype.IsDefault;
     this._id = prototype.ID;
     this._networkAttributeName = prototype.NetworkAttributeName;
     this._networkElementType = prototype.NetworkElementType;
     this._networkSourceName = prototype.NetworkSourceName;
     this._networkEvaluatorCLSID = prototype.NetworkEvaluatorCLSID;
     this._networkEdgeDirection = prototype.NetworkEdgeDirection;
     this._networkEvaluatorData = new List<Property>();
     foreach (Property property in prototype.NetworkEvaluatorDataCollection) {
         Property propertyClone = (Property)property.Clone();
         this._networkEvaluatorData.Add(propertyClone);
     }
 }
 public bool SupportsDefault(esriNetworkElementType ElementType, IEvaluatedNetworkAttribute netAttribute)
 {
     return(false);
 }
		/// <summary>
		/// GetTraversalResultLayer will generate a layer out of the traversal result for the specified element type
		/// </summary>
		private IFeatureLayer GetTraversalResultLayer(esriNetworkElementType elementType, INATraversalResultQuery2 naTraversalResultQuery)
		{
			//Junctions Traversal Result Feature Layer
			IFeatureClass traversalResultFeatureClass = naTraversalResultQuery.get_FeatureClass(elementType);
			if (traversalResultFeatureClass != null)
			{
				// save the rows in this class out when the MXD is saved
				INAClass naClass = traversalResultFeatureClass as INAClass;
				naClass.SaveRowsOnPersist = true;

				// create the traversal result layer
				IFeatureLayer traversalResultLayer = new FeatureLayerClass();
				traversalResultLayer.FeatureClass = traversalResultFeatureClass;
				traversalResultLayer.Name = traversalResultFeatureClass.AliasName;

				// Set up the layer with an appropriate symbology
				var geoFeatureLayer = traversalResultLayer as IGeoFeatureLayer;
				geoFeatureLayer.RendererPropertyPageClassID = (new SingleSymbolPropertyPageClass()).ClassID;
				geoFeatureLayer.Renderer = GetRenderer(elementType);

				return traversalResultLayer;
			}
			return null;
		}
		/// <summary>
		/// GetRenderer will return a feature renderer with symbology appropriate to the specified element type
		/// </summary>
		private IFeatureRenderer GetRenderer(esriNetworkElementType networkElementType)
		{
			ISimpleRenderer simpleRend = new SimpleRendererClass();
			IRgbColor color = new RgbColorClass();

			switch (networkElementType)
			{
				// The junction symbology will be a large yellow circle with a thick black outline
				case esriNetworkElementType.esriNETJunction:

					ISimpleMarkerSymbol junctionPointSymbol = new SimpleMarkerSymbolClass();
					junctionPointSymbol.Style = esriSimpleMarkerStyle.esriSMSCircle;
					junctionPointSymbol.Size = 10;

					//yellow
					color.Red = 255;
					color.Blue = 0;
					color.Green = 255;
					junctionPointSymbol.Color = color;

					junctionPointSymbol.Outline = true;
					junctionPointSymbol.OutlineSize = 2;

					//black
					color.Red = 0;
					color.Blue = 0;
					color.Green = 0;
					junctionPointSymbol.OutlineColor = color;

					simpleRend.Label = "TRFC_Junctions";
					simpleRend.Symbol = junctionPointSymbol as ISymbol;
					return simpleRend as IFeatureRenderer;

				// The turn symbology will be a thick purple line
				case esriNetworkElementType.esriNETTurn:

					ISimpleLineSymbol turnLineSymbol = new SimpleLineSymbolClass();
					turnLineSymbol.Style = esriSimpleLineStyle.esriSLSSolid;
					turnLineSymbol.Width = 4;

					//purple
					color.Red = 125;
					color.Blue = 125;
					color.Green = 0;
					turnLineSymbol.Color = color;

					simpleRend.Label = "TRFC_Turns";
					simpleRend.Symbol = turnLineSymbol as ISymbol;
					return simpleRend as IFeatureRenderer;

				// The edge symbology will be a thick blue line
				case esriNetworkElementType.esriNETEdge:

					ISimpleLineSymbol edgeLineSymbol = new SimpleLineSymbolClass();
					edgeLineSymbol.Style = esriSimpleLineStyle.esriSLSSolid;
					edgeLineSymbol.Width = 4;

					//blue
					color.Red = 0;
					color.Blue = 255;
					color.Green = 0;
					edgeLineSymbol.Color = color;

					simpleRend.Label = "TRFC_Edges";
					simpleRend.Symbol = edgeLineSymbol as ISymbol;
					return simpleRend as IFeatureRenderer;
			}
			return null;
		}
		public bool SupportsDefault(esriNetworkElementType ElementType, IEvaluatedNetworkAttribute netAttribute)
		{
			return false;
		}
 public bool ValidateDefault(esriNetworkElementType elementType, IEvaluatedNetworkAttribute attribute, ref int errorCode, ref string errorDescription, ref string errorAppendInfo)
 {
     if (SupportsDefault(elementType, attribute))
     {
         errorCode = 0;
         errorDescription = errorAppendInfo = string.Empty;
         return true;
     }
     else
     {
         errorCode = -1;
         errorDescription = errorAppendInfo = string.Empty;
         return false;
     }
 }
		public static List<INetworkSource> GetSourceList(List<INetworkSource> netSources, esriNetworkElementType eType)
		{
			List<esriNetworkElementType> eTypes = new List<esriNetworkElementType>();
			eTypes.Add(eType);
			return GetSourceList(netSources, eTypes);
		}