Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
eclipse
GitHub Repository: eclipse/sumo
Path: blob/main/tools/purgatory/netstats.py
169674 views
1
#!/usr/bin/env python
2
# Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo
3
# Copyright (C) 2009-2025 German Aerospace Center (DLR) and others.
4
# This program and the accompanying materials are made available under the
5
# terms of the Eclipse Public License 2.0 which is available at
6
# https://www.eclipse.org/legal/epl-2.0/
7
# This Source Code may also be made available under the following Secondary
8
# Licenses when the conditions for such availability set forth in the Eclipse
9
# Public License 2.0 are satisfied: GNU General Public License, version 2
10
# or later which is available at
11
# https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html
12
# SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later
13
14
# @file netstats.py
15
# @author Daniel Krajzewicz
16
# @author Michael Behrisch
17
# @date 2008-08-13
18
19
from __future__ import absolute_import
20
from __future__ import print_function
21
import os
22
import sys
23
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
24
import sumolib.net # noqa
25
26
27
def renderHTML(values):
28
print("<html><body>")
29
print("<h1>" + values["netname"] + "</h1></br>")
30
# network
31
print("<h2>Network</h2></br>")
32
# edges
33
print("<h2>Edges</h2></br>")
34
print("Edge number: " + str(values["edgeNumber"]) + "</br>")
35
print("Edgelength sum: " + str(values["edgeLengthSum"]) + "</br>")
36
print("Lanelength sum: " + str(values["laneLengthSum"]) + "</br>")
37
# nodes
38
print("<h2>Nodes</h2></br>")
39
print("Node number: " + str(values["nodeNumber"]) + "</br>")
40
print("</body></html>")
41
42
43
def renderPNG(values):
44
from pylab import bar, show
45
bar([0], [values["edgeNumber"]], 1, color='r')
46
show()
47
48
49
if len(sys.argv) < 2:
50
print("Usage: " + sys.argv[0] + " <net>")
51
sys.exit()
52
print("Reading net...")
53
net = sumolib.net.readNet(sys.argv[1])
54
55
values = {}
56
values["netname"] = "hallo"
57
values["edgesPerLaneNumber"] = {}
58
values["edgeLengthSum"] = 0
59
values["laneLengthSum"] = 0
60
values["edgeNumber"] = len(net._edges)
61
values["nodeNumber"] = len(net._nodes)
62
for e in net._edges:
63
values["edgeLengthSum"] = values["edgeLengthSum"] + e._length
64
values["laneLengthSum"] = values["laneLengthSum"] + \
65
(e._length * float(len(e._lanes)))
66
if len(e._lanes) not in values["edgesPerLaneNumber"]:
67
values["edgesPerLaneNumber"][len(e._lanes)] = 0
68
values["edgesPerLaneNumber"][
69
len(e._lanes)] = values["edgesPerLaneNumber"][len(e._lanes)] + 1
70
71
renderHTML(values)
72
renderPNG(values)
73
74