Exemple #1
0
        public FrameDelimiter(INetworkLayer <byte[]> child, int maximumMessageSize, int headerSize, bool includeHeaderSize, int receiveBufferSize = 8092, bool bigIndian = true)
            : base(child)
        {
            int num;

            switch (headerSize)
            {
            default:
                throw new ArgumentOutOfRangeException("headerSize", $"HeaderSize should be between 1 and 4. Found {headerSize}");

            case 1:
            case 2:
            case 3:
                num = 1 << 8 * headerSize;
                break;

            case 4:
                num = int.MaxValue;
                break;
            }
            int num2 = num;

            if (maximumMessageSize >= num2)
            {
                throw new ArgumentOutOfRangeException("maximumMessageSize", string.Format("cannot encode {0} with a headerSize of {1}. {2} should be < {3}", "maximumMessageSize", headerSize, "maximumMessageSize", num2));
            }
            m_maximumMessageSize = maximumMessageSize;
            m_includeHeaderSize  = includeHeaderSize;
            m_headerSize         = headerSize;
            m_receiveBuffer      = new ByteBuffer(receiveBufferSize, bigIndian);
            m_sendBuffer         = new ByteBuffer(1024, bigIndian);
        }
        private AutoResetEvent _getAddressEvent; // event raised when we got an address

        public Routing(INetworkLayer net, IMac mac, IDataCallbacks data)
        {
            _net = net;
            _mac = mac;
            _data = data;

            _mac.GetMtuSize(out _macMtu, out _macHeader, out _macTailer);

            // calculate the header sizes for 6LoWPAN
            // private encapsulation requires one byte (Message.Data.cLength) additional header space
            int myHeader = Messages6LoWPAN.MeshHeader.cLengthMax + Messages6LoWPAN.BroadcastHeader.cLength;
            _netHeader6Low = _macHeader + myHeader;
            _netMtu6Low = _macMtu - myHeader;
            _netTailer6Low = _macTailer;

            _neighbourTable = new NeighborTable(this, _macHeader, _macTailer);
            _routingTable = new RoutingTable(this);
            _messageContext = new MessageContext();

            _seqNoDYMO = 0;
            _seqNoBroadcast = 0;
            _panId = 0;
            _addrShort = cInvalidShortAddr;
            _addrExt = 0; // to be set at start
            _isRunning = false;
            _getAddressEvent = new AutoResetEvent(false);
        }
Exemple #3
0
        public void ClearRouteAnalyst(AxMapControl mapControl)
        {
            //清除所有图标
            SymbolUtil.ClearElement(mapControl);
            stopPoints.Clear();
            barryPoints.Clear();
            barryElements.Clear();
            stopElements.Clear();
            //清除网络分析图层
            for (int i = 0; i < mapControl.LayerCount; i++)
            {
                ILayer        layer        = mapControl.get_Layer(i);
                INetworkLayer networkLayer = layer as INetworkLayer;
                INALayer      naLayer      = layer as INALayer;
                if (networkLayer != null || naLayer != null)
                {
                    mapControl.DeleteLayer(i);
                }
            }
            //清除网络数据集
            ILayer datalayer = LayerUtil.QueryLayerInMap(mapControl, "网络数据集");

            if (datalayer != null)
            {
                mapControl.Map.DeleteLayer(datalayer);
            }
            IActiveView pActiveView = mapControl.ActiveView;

            pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGraphics, null, null);
            mapControl.Refresh();
        }
Exemple #4
0
 public NetworkTest(INetworkLayer net, IMonitor monitor)
 {
     _net = net;
     _net.GetMtuSize(out _mtu, out _head, out _tail);
     _monitor        = monitor;
     _statusLock     = new object();
     _reportInterval = cReportIntervalDefault;
 }
Exemple #5
0
 public SpinConnection(ISpinCredentialsProvider credentialsProvider, INetworkLayer <byte[]> underlyingTransportLayer, ApplicationCodec <T> codec, int maximumMessageSize = 131072)
     : this()
 {
     m_credentialsProvider = credentialsProvider;
     m_spinTransportLayer  = new SpinTransportLayer(new FrameDelimiter(underlyingTransportLayer, maximumMessageSize, 4, includeHeaderSize: true));
     m_codec  = codec;
     m_status = Status.Disconnected;
 }
Exemple #6
0
 public static INeuralNetwork NewSequential(TensorInfo input, [NotNull, ItemNotNull] params LayerFactory[] factories)
 {
     return(new SequentialNetwork(factories.Aggregate(new List <INetworkLayer>(), (l, f) =>
     {
         INetworkLayer layer = f(input);
         input = layer.OutputInfo;
         l.Add(layer);
         return l;
     }).ToArray()));
 }
Exemple #7
0
        //this one is seperated out so we can use it interally on initial user login
        public async Task <Account> ChangeIdentity(RedditOAuth oAuth)
        {
            var authedLayer   = _networkLayer.Clone(oAuth);
            var authedAccount = JsonConvert.DeserializeObject <Account>(await authedLayer.Get("/api/v1/me", CancellationToken.None, new Progress <float>(), null));

            _networkLayer = authedLayer;
            _userState    = new UserState {
                OAuth = oAuth, Username = authedAccount.Name, IsGold = authedAccount.IsGold, IsMod = authedAccount.IsMod, ModHash = authedAccount.ModHash
            };
            return(authedAccount);
        }
Exemple #8
0
 public Reddit(IListingFilter listingFilter, UserState userState, IActionDeferralSink deferalSink, ICaptchaProvider captchaProvider, string appId = null, string appSecret = null, string redirectUrl = null, ICachingProvider cacheProvider = null, INetworkLayer networkLayer = null)
 {
     _cacheProvider   = cacheProvider;
     _networkLayer    = networkLayer ?? new NetworkLayer(userState, appId, appSecret, redirectUrl);
     _listingFilter   = listingFilter;
     _userState       = userState ?? new UserState();
     _deferalSink     = deferalSink;
     _captchaProvider = captchaProvider;
     _appId           = appId;
     _appSecret       = appSecret;
     _redirectUrl     = redirectUrl;
 }
Exemple #9
0
            public void Start()
            {
                IDataAdapter ca = _clientAdapter;
                IDataAdapter sa = _serverAdapter;

                foreach (INetworkLayerFactory factory in Filter.Layers)
                {
                    INetworkLayer layer = factory.CreateLayer(Graph.Logger);

                    layer.Negotiate(ref sa, ref ca, new ProxyToken(), Graph.Logger,
                                    Graph.Meta, Graph.GlobalMeta, Graph.ConnectionProperties, _defaultBinding);
                }

                StartGraph(ca, sa);

                HasNegotiated = true;
            }
        /// <summary>
        /// Create the layer
        /// </summary>
        /// <param name="logger">The logger to use when creating</param>
        /// <returns>The network layer</returns>
        public override INetworkLayer CreateLayer(Logger logger)
        {
            if (Script == null)
            {
                throw new InvalidOperationException(String.Format(Properties.Resources.ScriptNetworkLayerFactory_SpecifyScript, Description));
            }

            if (ClassName == null)
            {
                throw new InvalidOperationException(String.Format(Properties.Resources.ScriptNetworkLayerFactory_SpecifyClassName, Description));
            }

            object obj = Script.Container.GetInstance(ClassName);

            INetworkLayer layer = obj as INetworkLayer;

            if (layer == null)
            {
                IDataStreamParser parser = obj as IDataStreamParser;
                if (parser != null)
                {
                    layer = new ParserNetworkLayer(DynamicScriptContainer.Create(Script.Container, ClassName), logger);
                }
            }

            if (layer == null)
            {
                throw new InvalidOperationException(String.Format(Properties.Resources.ScriptNetworkLayerFactory_InvalidType, Script.Name));
            }

            IPersistNode persist = layer as IPersistNode;

            if (persist != null)
            {
                persist.SetState(new DynamicConfigObject(_config), logger);
            }

            return(layer);
        }
Exemple #11
0
        /// <summary>
        /// 子方法 在图层中寻找网络数据集
        /// </summary>
        /// <returns></returns>
        private static bool SearchInLayers()
        {
            IMap iMap = ApplicationV.GlobalMapControl.ActiveView.FocusMap;

            for (int i = 0; i < iMap.LayerCount; i++)
            {
                ILayer        ipLayer       = iMap.get_Layer(i);
                INetworkLayer iNetworkLayer = ipLayer as INetworkLayer;
                if (iNetworkLayer != null)
                {
                    string datasetname = ipLayer.Name;
                    //询问是否使用这个DataSet
                    if (MessageBox.Show(String.Format("找到一个合适的网络数据集:{0},是否使用", datasetname), "提示",
                                        MessageBoxButtons.OKCancel,
                                        MessageBoxIcon.Question) == DialogResult.OK)
                    {
                        NetWorkDataSet = iNetworkLayer.NetworkDataset;
                        return(true);
                    }
                }
            }

            return(false);
        }
Exemple #12
0
 public SpinTransportLayer(INetworkLayer <byte[]> child)
     : base(child)
 {
 }
Exemple #13
0
        public static ComputationGraph New(TensorInfo input, [NotNull] NodeBuilder root)
        {
            // Captured dictionary to keep track of graph nodes and tensor shape for each builder
            Dictionary <NodeBuilder, (NodeBase Node, TensorInfo Info, Guid Id)> map = new Dictionary <NodeBuilder, (NodeBase, TensorInfo, Guid)>();
            List <IComputationGraphNode> nodes    = new List <IComputationGraphNode>();
            ProcessingNode        output          = null;
            List <ProcessingNode> trainingOutputs = new List <ProcessingNode>();

            // Function to build the computation graph with a top-down direction
            void BuildMap(NodeBuilder node, Guid id)
            {
                // Node check
                if (map.TryGetValue(node, out var value))
                {
                    if (value.Id != id)
                    {
                        throw new ComputationGraphBuildException("The training branch can't cross other graph branches");
                    }
                    return;
                }

                // Process the current node
                NodeBase next;

                switch (node.NodeType)
                {
                case ComputationGraphNodeType.Input:
                    if (node.Parents.Count > 0)
                    {
                        throw new ComputationGraphBuildException("An input node can't haave any parent nodes");
                    }
                    if (node.Children.Count == 0)
                    {
                        throw new ComputationGraphBuildException("An input node can't have 0 child nodes");
                    }
                    next      = new InputNode();
                    map[node] = (next, input, id);
                    break;

                case ComputationGraphNodeType.Processing:
                    if (node.Parents.Count != 1)
                    {
                        throw new ComputationGraphBuildException("A processing node must have a single parent node");
                    }
                    INetworkLayer  layer      = node.GetParameter <LayerFactory>()(map[node.Parents[0]].Info);
                    ProcessingNode processing = new ProcessingNode(layer, map[node.Parents[0]].Node);
                    if (layer is OutputLayerBase)
                    {
                        if (node.Children.Count > 0)
                        {
                            throw new ComputationGraphBuildException("An output node can't have any child nodes");
                        }
                        if (id != default)
                        {
                            if (map.Values.Any(entry => entry.Node is ProcessingNode p && p.Layer is OutputLayerBase && entry.Id == id))
                            {
                                throw new ComputationGraphBuildException("Each training branch can have a single output node");
                            }
                            trainingOutputs.Add(processing);
                        }
                        else if (output == null)
                        {
                            output = processing;
                        }
                        else
                        {
                            throw new ComputationGraphBuildException("The graph can only have a single inference output node");
                        }
                    }
                    else if (node.Children.Count == 0)
                    {
                        throw new ComputationGraphBuildException("A processing node can't have 0 child nodes");
                    }
                    next      = processing;
                    map[node] = (next, layer.OutputInfo, id);
                    break;

                case ComputationGraphNodeType.TrainingBranch:
                    if (id != default)
                    {
                        throw new ComputationGraphBuildException("A training branch can't contain secondary training branches");
                    }
                    if (node.Children.Count == 0)
                    {
                        throw new ComputationGraphBuildException("A training branch node can't have 0 child nodes");
                    }
                    if (node.Parents.Count != 1)
                    {
                        throw new ComputationGraphBuildException("A training branch node must have a single parent node");
                    }
                    if (node.Parents[0].NodeType == ComputationGraphNodeType.Input)
                    {
                        throw new ComputationGraphBuildException("A training branch can't start right from an input node");
                    }
                    next      = new TrainingNode(map[node.Parents[0]].Node);
                    map[node] = (next, map[node.Parents[0]].Info, id);
                    id        = Guid.NewGuid();
                    break;
 protected TransformLayer(INetworkLayer <TOut> child)
 {
     this.child        = child;
     this.child.OnData = OnDataReceived;
 }
Exemple #15
0
 public NetworkTest(INetworkLayer net, IMonitor monitor)
 {
     _net = net;
     _net.GetMtuSize(out _mtu, out _head, out _tail);
     _monitor = monitor;
     _statusLock = new object();
     _reportInterval = cReportIntervalDefault;
 }
Exemple #16
0
 internal ProcessingNode([NotNull] INetworkLayer layer, [NotNull] IComputationGraphNode parent) : base(ComputationGraphNodeType.Processing)
 {
     Layer  = layer;
     Parent = parent;
 }
Exemple #17
0
        public static bool AddDataset(IBasicMap pBasicMap, IDatasetName pDatasetName, Collection <object> m_DatasetCol, bool blnAddData)
        {
            bool functionReturnValue = false;

            functionReturnValue = false;
            ////如果是特征数据集,则添加里边的所有要素类
            IFeatureDataset pFeatDS      = default(IFeatureDataset);
            IEnumDataset    pEnumDataSet = default(IEnumDataset);
            IDataset        pDataset     = default(IDataset);
            IFeatureClass   pFeatCls     = default(IFeatureClass);
            IFeatureLayer   pFeatLayer   = default(IFeatureLayer);
            IName           pName        = default(IName);
            ILayer          pLayer       = default(ILayer);
            ITopologyLayer  pTopoLayer   = default(ITopologyLayer);
            //Dim pEnumLyr As IEnumLayer
            ITinWorkspace              pTinWS            = default(ITinWorkspace);
            IEnumFeatureClass          pEnumFeatCls      = null;
            IRasterCatalogDisplayProps pRasterCatalogPro = default(IRasterCatalogDisplayProps);

            //ClsErrorHandle pfrmError = new ClsErrorHandle();
            //ClsLayerRender pLayerRender = null;


            if (pDatasetName is IFeatureDatasetName)
            {
                pName   = pDatasetName as IName;
                pFeatDS = pName.Open() as IFeatureDataset;

                pEnumDataSet = pFeatDS.Subsets;
                pDataset     = pEnumDataSet.Next();

                m_DatasetCol.Add(pDataset);
                if (pDataset == null)
                {
                    return(false);
                }
                ////根据数据集的类型,添加特征数据集中的所有要素类(拓扑,一般的,栅格目录,网络)
                while ((pDataset != null))
                {
                    if (pDataset.Type == esriDatasetType.esriDTFeatureClass)
                    {
                        //pLayerRender = new ClsLayerRender();
                        //// 陈昉  2008-12-3  修改 修改原因 添加SDE图层时从数据库读取符号化信息
                        //pFeatLayer = null;
                        //if (pDataset.Workspace.Type == esriWorkspaceType.esriRemoteDatabaseWorkspace)
                        //{
                        //    pFeatLayer = pLayerRender.GetRendererLayer((IFeatureClass)pDataset);
                        //}
                        if (pFeatLayer == null)
                        {
                            pFeatLayer              = new FeatureLayer();
                            pFeatCls                = pDataset as IFeatureClass;
                            pFeatLayer.Name         = pFeatCls.AliasName;
                            pFeatLayer.FeatureClass = pFeatCls;
                        }

                        if (pDataset.Type == esriDatasetType.esriDTRasterCatalog)
                        {
                            // Dim pRaster
                        }

                        if (blnAddData == true)
                        {
                            //pMap.AddLayer pFeatLayer
                            AddLyrToBasicMap(pBasicMap, pFeatLayer);
                            SortLayer(pBasicMap, pFeatLayer);
                        }
                        // pSelectedCln.Add(pFeatLayer)
                    }
                    else if (pDataset.Type == esriDatasetType.esriDTTopology)
                    {
                        pTopoLayer          = new TopologyLayer() as ITopologyLayer;
                        pTopoLayer.Topology = pDataset as ITopology;
                        pLayer      = pTopoLayer as ILayer;
                        pLayer.Name = pDataset.Name;

                        if (blnAddData == true)
                        {
                            //pMap.AddLayer pLayer
                            AddLyrToBasicMap(pBasicMap, pLayer);
                            SortLayer(pBasicMap, pLayer);
                        }
                        //pSelectedCln.Add(pFeatLayer)
                    }

                    pDataset = pEnumDataSet.Next();
                }
                functionReturnValue = true;


                ////添加拓扑图层
            }
            else if (pDatasetName is ITopologyName)
            {
                ITopology pTopo = null;
                pName               = pDatasetName as IName;
                pDataset            = pName.Open() as IDataset;
                pTopoLayer          = new TopologyLayer() as ITopologyLayer;
                pTopoLayer.Topology = pDataset as ITopology;
                pLayer              = pTopoLayer as ILayer;
                pLayer.Name         = pDataset.Name;
                m_DatasetCol.Add(pDataset);
                if (blnAddData == true)
                {
                    //pMap.AddLayer pLayer
                    AddLyrToBasicMap(pBasicMap, pLayer);
                    SortLayer(pBasicMap, pLayer);
                }
                //pSelectedCln.Add(pLayer)

                if (MessageBox.Show("要把拓扑里边的所有要素类也添加到当前地图中吗?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
                    == DialogResult.Yes)
                {
                    IFeatureClassContainer pFeatClsContainer = default(IFeatureClassContainer);
                    pFeatClsContainer = pTopo as IFeatureClassContainer;
                    pEnumFeatCls      = pFeatClsContainer.Classes;
                    pFeatCls          = pEnumFeatCls.Next();
                    pFeatLayer        = new FeatureLayer();

                    ////循环拓扑中的每个要素类,并添加到当前地图中
                    while ((pFeatCls != null))
                    {
                        pFeatLayer.FeatureClass = pFeatCls;
                        pFeatLayer.Name         = pFeatCls.AliasName;

                        if (blnAddData == true)
                        {
                            //pMap.AddLayer pFeatLayer
                            AddLyrToBasicMap(pBasicMap, pFeatLayer);
                            SortLayer(pBasicMap, pFeatLayer);
                        }
                        //pSelectedCln.Add(pFeatLayer)

                        pFeatCls = pEnumFeatCls.Next();
                    }
                }
                functionReturnValue = true;
                ////添加网络数据
            }
            else if (pDatasetName is IGeometricNetworkName)
            {
                INetworkCollection pNetworkCollection = default(INetworkCollection);
                IGeometricNetwork  pGeometricNetwork  = default(IGeometricNetwork);

                IDataset pGeoDataset = default(IDataset);

                pName       = pDatasetName as IName;
                pGeoDataset = pName.Open() as IDataset;
                m_DatasetCol.Add(pGeoDataset);
                if (pGeoDataset.Type == esriDatasetType.esriDTGeometricNetwork)
                {
                    ////这里对网络数据进行处理
                    IFeatureClassContainer pFeatureClassContainer = null;
                    pGeometricNetwork      = pGeoDataset as IGeometricNetwork;
                    pFeatureClassContainer = pGeometricNetwork as IFeatureClassContainer;

                    for (int i = 0; i < pFeatureClassContainer.ClassCount; i++)
                    {
                        pFeatCls                = pFeatureClassContainer.get_Class(i);
                        pFeatLayer              = new FeatureLayer();
                        pFeatLayer.Name         = pFeatCls.AliasName;
                        pFeatLayer.FeatureClass = pFeatCls;

                        if (blnAddData == true)
                        {
                            // pMap.AddLayer pFeatLayer
                            AddLyrToBasicMap(pBasicMap, pFeatLayer);
                            SortLayer(pBasicMap, pFeatLayer);
                        }
                        //pSelectedCln.Add(pFeatLayer)
                    }
                }
                else
                {
                    pFeatDS            = pGeoDataset as IFeatureDataset;
                    pNetworkCollection = pFeatDS as INetworkCollection;
                    ////如果是用户选择一个网络技术打开的话,肯定只有一个网络在里边,其实
                    ////可以不需要循环,而用GeometricNetwork(0)代替循环
                    for (int j = 0; j < pNetworkCollection.GeometricNetworkCount; j++)
                    {
                        pGeometricNetwork = pNetworkCollection.get_GeometricNetwork(j);
                        for (int i = 0; i <= 3; i++)
                        {
                            switch (i)
                            {
                            case 0:
                                pEnumFeatCls = pGeometricNetwork.get_ClassesByType(esriFeatureType.esriFTSimpleJunction);
                                break;

                            case 1:
                                pEnumFeatCls = pGeometricNetwork.get_ClassesByType(esriFeatureType.esriFTSimpleEdge);
                                break;

                            case 2:
                                pEnumFeatCls = pGeometricNetwork.get_ClassesByType(esriFeatureType.esriFTComplexJunction);
                                break;

                            case 3:
                                pEnumFeatCls = pGeometricNetwork.get_ClassesByType(esriFeatureType.esriFTComplexEdge);
                                break;
                            }
                            pFeatCls = pEnumFeatCls.Next();
                            while ((pFeatCls != null))
                            {
                                pFeatLayer              = new FeatureLayer();
                                pFeatLayer.Name         = pFeatCls.AliasName;
                                pFeatLayer.FeatureClass = pFeatCls;
                                pFeatCls = pEnumFeatCls.Next();

                                if (blnAddData == true)
                                {
                                    //pMap.AddLayer pFeatLayer
                                    AddLyrToBasicMap(pBasicMap, pFeatLayer);
                                    SortLayer(pBasicMap, pFeatLayer);
                                }
                                // pSelectedCln.Add(pFeatLayer)

                                functionReturnValue = true;
                            }
                        }
                    }
                }

                ////添加栅格目录,并设置为显示最新时相
            }
            else if (pDatasetName is IRasterCatalogName)
            {
                pName    = pDatasetName as IName;
                pDataset = pName.Open() as IDataset;
                m_DatasetCol.Add(pDataset);
                pFeatLayer = new GdbRasterCatalogLayer() as IFeatureLayer;
                pFeatLayer.FeatureClass = pDataset as IFeatureClass;
                pFeatLayer.Name         = pDataset.Name;

                //'//如果是SDE的栅格目录
                //If pFeatLayer.DataSourceType = "SDE Raster Catalog" Then

                //    Dim pFeatLayerDef As IFeatureLayerDefinition
                //    pFeatLayerDef = pFeatLayer

                //    '//设置最初显示地图范围内最近时相的数据
                //    pFeatLayerDef.DefinitionExpression = "objectid in (select objectid from" & vbNewLine & _
                //        "(select a.objectid, b.receive_date,rank()" & vbNewLine & _
                //        "over(partition by a.name,a.resolution order by b.receive_date desc) as cid" & vbNewLine & _
                //        "from " & pFeatLayer.Name & " a, sj_t_tense b" & vbNewLine & _
                //        "where a.tense = b.tense" & vbNewLine & "and b.online_state = 1) t2" & vbNewLine & _
                //        "where " & pFeatLayer.Name & ".objectid=t2.objectid and t2.cid = 1)"

                //End If
                ////设置当栅格目录中的图幅在地图上超过16个的时候,以格网来显示,而不显示栅格本身
                pRasterCatalogPro = pFeatLayer as IRasterCatalogDisplayProps;
                ////不用数量来控制了,而以比例尺来控制
                pRasterCatalogPro.DisplayRasters = 16;
                pRasterCatalogPro.UseScale       = true;
                ////设置一个比例,在此临界栅格数据将会在框架显示与实际栅格显示之间转换
                pRasterCatalogPro.TransitionScale = 50000;

                if (blnAddData == true)
                {
                    //pMap.AddLayer pFeatLayer
                    AddLyrToBasicMap(pBasicMap, pFeatLayer);
                    //SortLayer(pBasicMap, pFeatLayer)
                }
                //pSelectedCln.Add(pFeatLayer)
                functionReturnValue = true;
            }
            else if (pDatasetName is IRasterDatasetName)
            {
                IRasterLayer pRasterLayer = default(IRasterLayer);
                pName    = pDatasetName as IName;
                pDataset = pName.Open() as IDataset;
                m_DatasetCol.Add(pDataset);
                pRasterLayer = new RasterLayer();
                pRasterLayer.CreateFromDataset((IRasterDataset)pDataset);
                pRasterLayer.Name = pDataset.Name;
                AddLyrToBasicMap(pBasicMap, pRasterLayer);
                functionReturnValue = true;
                ////添加TIN图层
            }
            else if (pDatasetName is ITinWorkspace)
            {
                pTinWS = pDatasetName as ITinWorkspace;
                ITinLayer pTinLyr = default(ITinLayer);
                pTinLyr         = new TinLayer();
                pTinLyr.Dataset = pTinWS.OpenTin(pDatasetName.Name);
                pTinLyr.Name    = pDatasetName.Name;

                if (blnAddData == true)
                {
                    //pMap.AddLayer pTinLyr
                    AddLyrToBasicMap(pBasicMap, pTinLyr);
                    SortLayer(pBasicMap, pTinLyr);
                }
                //pSelectedCln.Add(pTinLyr)
                functionReturnValue = true;
            }
            else if (pDatasetName is INetworkDatasetName)
            {
                //Dim pNetWorkDS As INetworkDataset
                try
                {
                    INetworkLayer pNetLayer = default(INetworkLayer);

                    pName     = pDatasetName as IName;
                    pNetLayer = new NetworkLayer() as INetworkLayer;
                    pNetLayer.NetworkDataset = pName.Open() as INetworkDataset;
                    pLayer      = pNetLayer as ILayer;
                    pLayer.Name = pName.NameString;
                    if (blnAddData == true)
                    {
                        AddLyrToBasicMap(pBasicMap, pLayer);
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message, "异常", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }

                ////添加一般的要素类,未写完。。。。。。
            }
            else
            {
                pName    = pDatasetName as IName;
                pDataset = pName.Open() as IDataset;
                pFeatCls = pDataset as IFeatureClass;
                m_DatasetCol.Add(pDataset);
                if (pFeatCls.FeatureType == esriFeatureType.esriFTAnnotation)
                {
                    pFeatLayer = new FDOGraphicsLayer() as IFeatureLayer;
                }
                else if (pFeatCls.FeatureType == esriFeatureType.esriFTDimension)
                {
                    pFeatLayer = new DimensionLayer() as IFeatureLayer;
                }
                else
                {
                    pFeatLayer = new FeatureLayer();
                    //pLayerRender = new ClsLayerRender();
                    //// 陈昉  2008-12-3  修改 修改原因 添加SDE图层时从数据库读取符号化信息
                    //if (pDataset.Workspace.Type == esriWorkspaceType.esriRemoteDatabaseWorkspace)
                    //{
                    //    pFeatLayer = pLayerRender.GetRendererLayer((IFeatureClass)pDataset);
                    //}
                }
                //印骅 20081205 添加"Not"
                if ((pFeatLayer != null))
                {
                    //pFeatLayer.Name = pDataset.Name
                    pFeatLayer.Name         = pFeatCls.AliasName;
                    pFeatLayer.FeatureClass = pDataset as IFeatureClass;
                }
                if (blnAddData == true)
                {
                    //pMap.AddLayer pFeatLayer

                    AddLyrToBasicMap(pBasicMap, pFeatLayer);
                    SortLayer(pBasicMap, pFeatLayer);
                }
                //pSelectedCln.Add(pFeatLayer)

                functionReturnValue = true;
            }

            return(functionReturnValue);

            //'//添加Coverage图层
            //ElseIf vItem.SmallIcon = "Coverage" Then
            //AddSelectedLayer = ADDCoverageLayer(pMap, pCurrentFilePath.Path, _
            //vItem.Text, pSelectedCln, blnAddData)
        }
 /// <summary>
 /// Returns the neuron in the <paramref name="layer"/> with the matching <paramref name="neuronId"/> if one exists; otherwise null.
 /// </summary>
 /// <param name="neuronId">The id of the neuron to return.</param>
 /// <param name="layer">The network layer that the neuron exists in.</param>
 /// <returns>Returns the neuron in the <paramref name="layer"/> with the matching <paramref name="neuronId"/> if one exists; otherwise null.</returns>
 private INeuron GetNeuronById(int neuronId, INetworkLayer layer)
 {
     return(layer.Neurons.FirstOrDefault(n => n.Id == neuronId));
 }