org.matsim.api.core.v01.network.Node.getInLinks()方法的使用及代码示例

x33g5p2x  于2022-01-24 转载在 其他  
字(13.5k)|赞(0)|评价(0)|浏览(75)

本文整理了Java中org.matsim.api.core.v01.network.Node.getInLinks()方法的一些代码示例,展示了Node.getInLinks()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Node.getInLinks()方法的具体详情如下:
包路径:org.matsim.api.core.v01.network.Node
类名称:Node
方法名:getInLinks

Node.getInLinks介绍

[英]Returns this node's set of ingoing links. This set might be empty, but it should not be null.
[中]返回此节点的输入链接集。此集合可能为空,但不应为null

代码示例

代码示例来源:origin: matsim-org/matsim

public static Map<Id<Link>, ? extends Link> getIncidentLinks(Node node) {
  Map<Id<Link>, Link> links = new TreeMap<>(node.getInLinks());
  links.putAll(node.getOutLinks());
  return links;
}

代码示例来源:origin: matsim-org/matsim

public static Map<Id<Node>, ? extends Node> getInNodes(Node node) {
  Map<Id<Node>, Node> nodes = new TreeMap<>();
  for (Link link : node.getInLinks().values()) {
    Node inNode = link.getFromNode();
    nodes.put(inNode.getId(), inNode);
  }
  return nodes;
}

代码示例来源:origin: matsim-org/matsim

/**
 * Removes nodes from the network that have no incoming or outgoing links attached to them.
 */
public void removeNodesWithoutLinks() {
  List<Node> toBeRemoved = new ArrayList<>();
  for (Node node : this.network.getNodes().values()) {
    if ((node.getInLinks().size() == 0) && (node.getOutLinks().size() == 0)) {
      toBeRemoved.add(node);
    }
  }
  for (Node node : toBeRemoved) {
    this.network.removeNode(node.getId());
  }
}

代码示例来源:origin: matsim-org/matsim

private int getNOfIncidentNodes(final Node node) {
    HashMap<Id<Node>, Node> nodes = new HashMap<>();
    for (Link link : node.getInLinks().values()) {
      nodes.put(link.getFromNode().getId(), link.getFromNode());
    }
    for (Link link : node.getOutLinks().values()) {
      nodes.put(link.getToNode().getId(), link.getToNode());
    }
    return nodes.size();
  }
}

代码示例来源:origin: matsim-org/matsim

@Override
public void run(final Network network) {
  
  Set<Node> nodesToRemove; 
  
  if (this.cutType == CutType.RECTANGLE) nodesToRemove = rectangularCut(network);
  else if (this.cutType == CutType.CIRCLE) nodesToRemove = circularCut(network);
  else return;
  
  int nofLinksRemoved = 0;
  for (Node n : nodesToRemove) {
    nofLinksRemoved += n.getInLinks().size() + n.getOutLinks().size();
    network.removeNode(n.getId());
  }
  
  log.info("number of nodes removed: "+nodesToRemove.size());
  log.info("number of links removed: "+nofLinksRemoved);
  log.info("number of nodes remaining: "+network.getNodes().size());
  log.info("number of links remaining: "+network.getLinks().size());
}

代码示例来源:origin: matsim-org/matsim

/**
 * Loads the inLinks-array with the corresponding links.
 * Cannot be called in constructor, as the queueNetwork does not yet know
 * the queueLinks. Should be called by QueueNetwork, after creating all
 * QueueNodes and QueueLinks.
 */
@Override
public void init() {
  int i = 0;
  for (Link l : this.node.getInLinks().values()) {
    QNetwork network = netsimEngine.getNetsimNetwork() ;
    this.inLinksArrayCache[i] = network.getNetsimLinks().get(l.getId());
    i++;
  }
  /* As the order of links has an influence on the simulation results,
   * the nodes are sorted to avoid indeterministic simulations. dg[april08]
   */
  Arrays.sort(this.inLinksArrayCache, new Comparator<NetsimLink>() {
    @Override
    public int compare(NetsimLink o1, NetsimLink o2) {
      return o1.getLink().getId().compareTo(o2.getLink().getId());
    }
  });
}

代码示例来源:origin: matsim-org/matsim

private static Map<Id<Node>, Node> getIncidentNodes(Node node) {
  Map<Id<Node>, Node> nodes = new TreeMap<>();
  for (Link link : node.getInLinks().values()) {
    nodes.put(link.getFromNode().getId(), link.getFromNode());
  }
  for (Link link : node.getOutLinks().values()) {
    nodes.put(link.getToNode().getId(), link.getToNode());
  }
  return nodes;
}

代码示例来源:origin: matsim-org/matsim

buffer.append(NetworkFeatureFactory.STARTP);
buffer.append(STARTUL);
for (Link l : n.getInLinks().values()) {
  buffer.append(STARTLI);
  buffer.append("Link: " );

代码示例来源:origin: matsim-org/matsim

private QNodeImpl(final Node n, NetsimEngineContext context, NetsimInternalInterface netsimEngine2, TurnAcceptanceLogic turnAcceptanceLogic) {
  this.node = n;
  this.netsimEngine = netsimEngine2 ;
  this.context = context ;
  this.turnAcceptanceLogic = turnAcceptanceLogic;
  int nofInLinks = this.node.getInLinks().size();
  this.inLinksArrayCache = new QLinkI[nofInLinks];
  this.tempLinks = new QLinkI[nofInLinks];
  if (this.context.qsimConfig.getNumberOfThreads() > 1) {
    // This could just as well be the "normal" case. The second alternative
    // is just there so some scenarios / test cases stay
    // "event-file-compatible". Consider removing the second alternative.
    this.random = MatsimRandom.getLocalInstance();
  } else {
    this.random = MatsimRandom.getRandom();
  }
}

代码示例来源:origin: matsim-org/matsim

@Override
public Node removeNode(final Id<Node> nodeId) {
  Node n = this.nodes.remove(nodeId);
  if (n == null) {
    return null;
  }
  HashSet<Link> links1 = new HashSet<>();
  links1.addAll(n.getInLinks().values());
  links1.addAll(n.getOutLinks().values());
  for (Link l : links1) {
    removeLink(l.getId());
  }
  if (this.nodeQuadTree != null) {
    this.nodeQuadTree.remove(n.getCoord().getX(),n.getCoord().getY(),n);
  }
  return n;
}

代码示例来源:origin: matsim-org/matsim

private void expandLandmarkTo() {
  LandmarksToTravelTimeComparator comparator = new LandmarksToTravelTimeComparator(this.nodeData, this.landmarkIdx);
  PriorityQueue<Node> pendingNodes = new PriorityQueue<>(100, comparator);
  LandmarksData role = (LandmarksData) this.nodeData.get(this.landmark);
  role.setToLandmarkTravelTime(this.landmarkIdx, 0.0);
  role.setFromLandmarkTravelTime(this.landmarkIdx, 0.0);
  pendingNodes.add(this.landmark);
  while (!pendingNodes.isEmpty()) {
    Node node = pendingNodes.poll();
    double toTravTime = ((LandmarksData) this.nodeData.get(node)).getToLandmarkTravelTime(this.landmarkIdx);
    LandmarksData role2;
    for (Link l : node.getInLinks().values()) {
      Node n = l.getFromNode();
      double linkTravTime = this.costFunction.getLinkMinimumTravelDisutility(l);
      role2 = (LandmarksData) this.nodeData.get(n);
      double totalTravelTime = toTravTime + linkTravTime;
      if (role2.getToLandmarkTravelTime(this.landmarkIdx) > totalTravelTime) {
        role2.setToLandmarkTravelTime(this.landmarkIdx, totalTravelTime);
        pendingNodes.add(n);
      }
    }
  }
}

代码示例来源:origin: matsim-org/matsim

RoutingNetworkNode routingNode = createRoutingNetworkNode(node, node.getInLinks().size());
routingNetwork.addNode(routingNode);
RoutingNetworkLink[] outLinks = new RoutingNetworkLink[node.getInLinks().size()];
for (Link inLink : node.getInLinks().values()) {
  outLinks[i] = routingLinks.remove(inLink.getId());
  i++;

代码示例来源:origin: matsim-org/matsim

private Node getLandmark(final ArrayList<Node> nodes, final double[] angles) {
  double maxDist = Double.NEGATIVE_INFINITY;
  Node landmark = null;
  for (Node node : nodes) {
    if ((node.getOutLinks().size() > 1 && node.getInLinks().size() > 1)
        || landmark == null) {
      double x = node.getCoord().getX() - this.center.getX();
      double y = node.getCoord().getY() - this.center.getY();
      double angle = Math.atan2(y, x) + Math.PI;
      double minAngelToBorder = 0;
      if (angle - angles[0] < angles[1] - angle) {
        minAngelToBorder = angle - angles[0];
      } else {
        minAngelToBorder = angles[1] - angle;
      }
      double distApprox = Math.sqrt(x * x + y * y) * (1 + minAngelToBorder / (2 * Math.PI));
      // Set the node that is farthest away from the center to be the landmark in the current sector
      if (distApprox > maxDist) {
        landmark = node;
        maxDist = distApprox;
      }
    }
  }
  return landmark;
}

代码示例来源:origin: matsim-org/matsim

List<TurnInfo> turnInfosForInLink = null;
for (Node node : scenario.getNetwork().getNodes().values()) {
  for (Link inLink : node.getInLinks().values()) {
    turnInfosForInLink = inLinkTurnInfoMap.get(inLink.getId());
    if (turnInfosForInLink == null) {

代码示例来源:origin: matsim-org/matsim

if ( nearestNode.getInLinks().isEmpty() && nearestNode.getOutLinks().isEmpty() ) {
  log.warn(network + "[found nearest node that has no incident links.  Will probably crash eventually ...  Maybe run NetworkCleaner?]" ) ;

代码示例来源:origin: matsim-org/matsim

private void invertNetwork(){
  this.invertedNetwork = NetworkUtils.createNetwork();
  int numberOfNodesGenerated = 0;
  int numberOfLinksGenerated = 0;
  for (Link link : this.originalNetwork.getLinks().values()) {
    NetworkUtils.createAndAddNode(this.invertedNetwork, Id.create(link.getId(), Node.class), link.getToNode().getCoord());
    numberOfNodesGenerated++;
  }
  for (Node node : this.originalNetwork.getNodes().values()) {
    for (Link inLink : node.getInLinks().values()) {
      for (Link outLink : node.getOutLinks().values()) {
        List<TurnInfo> turnInfos = this.inLinkTurnInfoMap.get(inLink.getId());
        TurnInfo ti = NetworkTurnInfoBuilder.getTurnInfoForOutlinkId(turnInfos, outLink.getId());
        if (ti != null){
          numberOfLinksGenerated = this.createInvertedLink(inLink, outLink, numberOfLinksGenerated, ti.getModes());
        }
      }
    }
  }
  log.info("Generated " + numberOfNodesGenerated + " Nodes and " + numberOfLinksGenerated + " Links");
  // Debug only
  // NetworkWriter myNetworkWriter = new NetworkWriter(wrappedNetwork,
  // "wrappedNetwork");
  // myNetworkWriter.write();
}

代码示例来源:origin: matsim-org/matsim

PreProcessDijkstra.DeadEndData ddOutData = getPreProcessData(outNode);
for (Link l : outNode.getInLinks().values()) {
  if (canPassLink(l)) {
for (Link l : outNode.getInLinks().values()) {
  if (canPassLink(l)) {

代码示例来源:origin: matsim-org/matsim

@Test
public void removeLink() {
  Fixture f = new Fixture(getEmptyTestNetwork());
  Assert.assertTrue(f.network.getLinks().containsKey(f.linkIds[1]));
  Assert.assertEquals(1, f.network.getNodes().get(f.nodeIds[1]).getInLinks().size());
  f.network.removeLink(f.linkIds[1]);
  Assert.assertFalse(f.network.getLinks().containsKey(f.linkIds[1]));
  Assert.assertEquals(0, f.network.getNodes().get(f.nodeIds[1]).getInLinks().size());
  Assert.assertEquals(1, f.network.getNodes().get(f.nodeIds[1]).getOutLinks().size());
  Assert.assertTrue(f.network.getLinks().containsKey(f.linkIds[2]));
  f.network.removeLink(f.linkIds[2]);
  Assert.assertFalse(f.network.getLinks().containsKey(f.linkIds[2]));
  Assert.assertTrue(f.network.getNodes().containsKey(f.nodeIds[1]));
  Assert.assertEquals(0, f.network.getNodes().get(f.nodeIds[1]).getOutLinks().size());
  Assert.assertEquals(2, f.network.getNodes().get(f.nodeIds[5]).getOutLinks().size());
  Assert.assertEquals(2, f.network.getNodes().get(f.nodeIds[8]).getInLinks().size());
  f.network.removeLink(f.linkIds[10]);
  Assert.assertEquals(1, f.network.getNodes().get(f.nodeIds[5]).getOutLinks().size());
  Assert.assertEquals(1, f.network.getNodes().get(f.nodeIds[8]).getInLinks().size());
}

代码示例来源:origin: matsim-org/matsim

@Test
public void removeNode() {
  Fixture f = new Fixture(getEmptyTestNetwork());
  Assert.assertEquals(8, f.network.getNodes().size());
  Assert.assertEquals(12, f.network.getLinks().size());
  Assert.assertTrue(f.network.getLinks().containsKey(f.linkIds[1]));
  Assert.assertTrue(f.network.getLinks().containsKey(f.linkIds[2]));
  Assert.assertTrue(f.network.getNodes().containsKey(f.nodeIds[1]));
  f.network.removeNode(f.nodeIds[1]);
  Assert.assertEquals(7, f.network.getNodes().size());
  Assert.assertEquals(10, f.network.getLinks().size());
  Assert.assertFalse(f.network.getLinks().containsKey(f.linkIds[1]));
  Assert.assertFalse(f.network.getLinks().containsKey(f.linkIds[2]));
  Assert.assertFalse(f.network.getNodes().containsKey(f.nodeIds[1]));
  Assert.assertFalse(f.network.getNodes().get(f.nodeIds[4]).getOutLinks().containsKey(f.linkIds[1]));
  Assert.assertTrue(f.network.getNodes().get(f.nodeIds[4]).getOutLinks().containsKey(f.linkIds[5]));
  Assert.assertTrue(f.network.getNodes().get(f.nodeIds[4]).getOutLinks().containsKey(f.linkIds[7]));
  f.network.removeNode(f.nodeIds[8]);
  Assert.assertEquals(6, f.network.getNodes().size());
  Assert.assertEquals(6, f.network.getLinks().size());
  Assert.assertFalse(f.network.getLinks().containsKey(f.linkIds[8]));
  Assert.assertFalse(f.network.getLinks().containsKey(f.linkIds[9]));
  Assert.assertFalse(f.network.getNodes().containsKey(f.nodeIds[10]));
  Assert.assertFalse(f.network.getNodes().containsKey(f.nodeIds[11]));
  Assert.assertFalse(f.network.getNodes().get(f.nodeIds[5]).getOutLinks().containsKey(f.linkIds[10]));
  Assert.assertTrue(f.network.getNodes().get(f.nodeIds[5]).getOutLinks().containsKey(f.linkIds[6]));
  Assert.assertFalse(f.network.getNodes().get(f.nodeIds[5]).getInLinks().containsKey(f.linkIds[9]));
  Assert.assertTrue(f.network.getNodes().get(f.nodeIds[5]).getInLinks().containsKey(f.linkIds[3]));
}

代码示例来源:origin: matsim-org/matsim

@Test
public void testFilter_AdditionalModes() {
  final Fixture f = new Fixture();
  TransportModeNetworkFilter filter = new TransportModeNetworkFilter(f.scenario.getNetwork());
  Network subNetwork = ScenarioUtils.createScenario(ConfigUtils.createConfig()).getNetwork();
  filter.filter(subNetwork, createHashSet(TransportMode.walk, TransportMode.pt, "motorbike"));
  Assert.assertEquals("wrong number of nodes.", 5, subNetwork.getNodes().size());
  Assert.assertEquals("wrong number of links", 4, subNetwork.getLinks().size());
  Assert.assertTrue(subNetwork.getLinks().containsKey(f.linkIds[13]));
  Assert.assertTrue(subNetwork.getLinks().containsKey(f.linkIds[14]));
  Assert.assertTrue(subNetwork.getLinks().containsKey(f.linkIds[15]));
  Assert.assertTrue(subNetwork.getLinks().containsKey(f.linkIds[16]));
  Assert.assertTrue(subNetwork.getNodes().containsKey(f.nodeIds[1]));
  Assert.assertTrue(subNetwork.getNodes().containsKey(f.nodeIds[4]));
  Assert.assertTrue(subNetwork.getNodes().containsKey(f.nodeIds[7]));
  Assert.assertTrue(subNetwork.getNodes().containsKey(f.nodeIds[10]));
  Assert.assertTrue(subNetwork.getNodes().containsKey(f.nodeIds[13]));
  Assert.assertEquals(f.modesW, subNetwork.getLinks().get(f.linkIds[13]).getAllowedModes());
  Assert.assertEquals(f.modesW, subNetwork.getLinks().get(f.linkIds[14]).getAllowedModes());
  Assert.assertEquals(f.modesW, subNetwork.getLinks().get(f.linkIds[15]).getAllowedModes());
  Assert.assertEquals(f.modesW, subNetwork.getLinks().get(f.linkIds[16]).getAllowedModes());
  Assert.assertEquals(1, subNetwork.getNodes().get(f.nodeIds[4]).getInLinks().size());
  Assert.assertNotNull(subNetwork.getNodes().get(f.nodeIds[4]).getInLinks().get(f.linkIds[13]));
  Assert.assertEquals(1, subNetwork.getNodes().get(f.nodeIds[4]).getOutLinks().size());
  Assert.assertNotNull(subNetwork.getNodes().get(f.nodeIds[4]).getOutLinks().get(f.linkIds[14]));
}

相关文章