本文整理了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
[英]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]));
}
内容来源于网络,如有侵权,请联系作者删除!