예제 #1
0
    public MouseSetup(String FileName)
      : base(FileName)
    {
      data = new MexFile(FileName);

      foreach (var n in data.MOUSE_NODES.Nodes)
      {
        Nodes.Add(n.NodeID, new MUNode(n));
      }

      foreach (var xsec in data.MOUSE_CROSS_SECTIONS.Cross_Sections)
      {
        Xsecs.Add(xsec.CRSID, xsec);
      }

      foreach (var l in data.MOUSE_LINKS.Links)
      {
        MULink newlink = new MULink(l);
        Links.Add(l.LinkID, newlink);

        newlink.UpstreamNode = Nodes[newlink.pfslink.FromNode];
        newlink.DownstreamNode = Nodes[newlink.pfslink.ToNode];

        Nodes[newlink.UpstreamNode.pfsnode.NodeID].Links.Add(newlink);
        Nodes[newlink.DownstreamNode.pfsnode.NodeID].Links.Add(newlink);

        Cross_Section xsec;
        if(Xsecs.TryGetValue(l.CrsID, out xsec))
          newlink.Xsec = xsec;
      }
    }
예제 #2
0
        public MouseSetup(String FileName)
            : base(FileName)
        {
            data = new MexFile(FileName);

            foreach (var n in data.MOUSE_NODES.Nodes)
            {
                Nodes.Add(n.NodeID, new MUNode(n));
            }

            foreach (var xsec in data.MOUSE_CROSS_SECTIONS.Cross_Sections)
            {
                Xsecs.Add(xsec.CRSID, xsec);
            }

            foreach (var l in data.MOUSE_LINKS.Links)
            {
                MULink newlink = new MULink(l);
                Links.Add(l.LinkID, newlink);

                newlink.UpstreamNode   = Nodes[newlink.pfslink.FromNode];
                newlink.DownstreamNode = Nodes[newlink.pfslink.ToNode];

                Nodes[newlink.UpstreamNode.pfsnode.NodeID].Links.Add(newlink);
                Nodes[newlink.DownstreamNode.pfsnode.NodeID].Links.Add(newlink);

                Cross_Section xsec;
                if (Xsecs.TryGetValue(l.CrsID, out xsec))
                {
                    newlink.Xsec = xsec;
                }
            }
        }
예제 #3
0
        public double GetChainage(MULink link)
        {
            int i = 0;

            double chainage = 0;

            while (Links[i] != link)
            {
                chainage += Links[i].Length;
                i++;
            }
            return(chainage);
        }
예제 #4
0
    public double GetChainage(MULink link)
    {
      int i=0;

      double chainage=0;
      while (Links[i] != link)
      {
        chainage += Links[i].Length;
        i++;
      }
      return chainage;

    }
예제 #5
0
        private void TraverseLink(MULink link)
        {
            List <MULink> branch = new List <MULink>();

            Branches.Add(new MuBranch()
            {
                Links = branch
            });

            MUNode NextNode = link.DownstreamNode;
            MULink NextLink = link;

            while (NextNode != null)
            {
                RemainingLinks.Remove(NextLink.pfslink.LinkID);
                branch.Add(NextLink);
                if (NextNode.Links.Count == 2)
                {
                    NextLink = NextNode.Links.First(LL => LL != NextLink);
                    if (NextLink.DownstreamNode != NextNode) //To avoid loop when two branches end in the same point
                    {
                        NextNode = NextLink.DownstreamNode;
                    }
                    else
                    {
                        NextNode = null;
                    }
                }
                else if (NextNode.Links.Count > 2)
                {
                    var n = NextNode.Links.Where(L => L != NextLink).FirstOrDefault(L => L.Xsec != null && NextLink.Xsec != null && L.Xsec.CRSID.StartsWith(NextLink.Xsec.CRSID.Substring(0, 4)));
                    if (n != null)
                    {
                        NextLink = n;
                        NextNode = NextLink.DownstreamNode;
                    }
                    else
                    {
                        NextNode = null;
                    }
                }
                else
                {
                    NextNode = null;
                }
            }
        }
예제 #6
0
    private void TraverseLink(MULink link)
    {
      List<MULink> branch = new List<MULink>();
      Branches.Add(new MuBranch() { Links = branch });

      MUNode NextNode = link.DownstreamNode;
      MULink NextLink = link;

      while (NextNode != null)
      {
        RemainingLinks.Remove(NextLink.pfslink.LinkID);
        branch.Add(NextLink);
        if (NextNode.Links.Count == 2)
        {
          NextLink = NextNode.Links.First(LL => LL != NextLink);
          if (NextLink.DownstreamNode != NextNode) //To avoid loop when two branches end in the same point
            NextNode = NextLink.DownstreamNode;
          else
          {
            NextNode = null;
          }
        }
        else if (NextNode.Links.Count > 2)
        {
          var n = NextNode.Links.Where(L => L != NextLink).FirstOrDefault(L => L.Xsec != null && NextLink.Xsec != null && L.Xsec.CRSID.StartsWith(NextLink.Xsec.CRSID.Substring(0, 4)));
          if (n != null)
          {
            NextLink = n;
            NextNode = NextLink.DownstreamNode;
          }
          else
            NextNode = null;
        }
        else
        {
          NextNode = null;
        }
      }
    }