/usr/share/sumo/tools/generate-ns2.py is in sumo-tools 0.21.0+dfsg-1.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 | #!/usr/bin/env python
"""
@file generate-ns2.py
@author Thimor Bohn
@author Axel Wegener
@author Michael Behrisch
@date 2006-08-07
@version $Id: generate-ns2.py 15959 2014-03-17 16:58:35Z cschmidt87 $
automating generation of ns2-tracefiles
SUMO, Simulation of Urban MObility; see http://sumo-sim.org/
Copyright (C) 2008-2014 DLR (http://www.dlr.de/) and contributors
This file is part of SUMO.
SUMO is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
"""
exporter = "H:\\itm\\sumo\\tools\\traceExporter\\traceExporter.jar"
sumo = "H:\\itm\\sumo\\bin\\sumo.exe"
netconvert = "H:\\itm\\sumo\\bin\\netconvert.exe"
#
#END: change to your needs
#
import os
import sys
from optparse import OptionParser
#
# parse parameters
#
usage = "usage: %prog [options]"
parser = OptionParser()
parser.add_option("--node", "-N", action="store", type="string", dest="nodefile", help="name of nodesfile to be read")
parser.add_option("--edge", "-E", action="store", type="string", dest="edgefile", help="name of edgesfile to be read")
parser.add_option("--route", "-r", action="store", type="string", dest="routefile", help="name of routesfile to be read")
parser.add_option("--net", "-n", action="store", type="string", dest="netfile", help="name of netfile to be read, you need either to specify this or node and edge")
parser.add_option("--begin", "-b", action="store", type="int", dest="begintime", help="time at which simulation starts")
parser.add_option("--end", "-e", action="store", type="int", dest="endtime", help="time at which simulation ends")
parser.add_option("--penetration", "-p", action="append", type="float", dest="penetration", help="penetration factor of vehicles in [0,1]")
parser.add_option("--seed", "-s", action="store", type="int", dest="seed", help="seed value for random generator")
(options, args) = parser.parse_args()
#
# check: correct parameter combination?
#
ok = True
print "checking parameters..."
if (options.routefile==None):
print "you have to specify route"
ok = False
if (options.netfile==None and (options.nodefile==None or options.edgefile==None)):
print "you have to specify either net or node and edge"
ok = False
if (options.begintime==None):
print "you have to specify begin"
ok = False
if (options.endtime==None):
print "you have to specify end"
ok = False
if (options.penetration==None):
print "you have to specify penetration"
ok = False
if (options.seed==None):
print "no seed specified - defaulting to 0"
options.seed = 0
if (ok == False):
sys.exit(1)
print "done"
#
# check: all files exist / parameters correct?
#
print "files exist?"
if (options.nodefile!=None):
if (os.path.isfile(options.nodefile)==False):
print "file does not exist:", options.nodefile
ok = False
if (options.edgefile!=None):
if (os.path.isfile(options.edgefile)==False):
print "file does not exist:", options.edgefile
ok = False
if (options.routefile!=None):
if (os.path.isfile(options.routefile)==False):
print "file does not exist:", options.routefile
ok = False
if (options.netfile!=None):
if (os.path.isfile(options.netfile)==False):
print "file does not exist:", options.netfile
ok = False
if (os.path.isfile(netconvert)==False):
print "file does not exist:", netconvert
ok = False
if (os.path.isfile(sumo)==False):
print "file does not exist:", sumo
ok = False
if (os.path.isfile(exporter)==False):
print "file does not exist:", exporter
ok = False
for val in options.penetration:
if (val < 0 or val > 1):
print "penetration must be in [0,1]"
ok = False
if (ok == False):
sys.exit(1)
print "done"
#
# do the work
#
#
# create netfile if does not exist
#
if (options.netfile==None):
os.system(netconvert + " -n=" + options.nodefile + " -e=" + options.edgefile + " --output-file=net.xml --disable-normalize-node-positions")
if (os.path.isfile("net.xml")==False):
print "error creating net.xml"
sys.exit(1)
os.system(netconvert + " -n=" + options.nodefile + " -e=" + options.edgefile + " --output-file=net-normalized.xml")
if (os.path.isfile("net-normalized.xml")==False):
print "error creating net-normalized.xml"
sys.exit(1)
#
# create netstate
#
if (options.netfile==None):
netfile="net.xml"
else:
netfile=options.netfile
os.system(sumo + " -n " + netfile + " -r " + options.routefile + " --netstate-dump netstate.xml -b " + str(options.begintime) + " -e " + str(options.endtime))
if (os.path.isfile("netstate.xml")==False):
print "error creating netstate.xml"
sys.exit(1)
#
# create mobility, activity
#
for penetration in options.penetration:
print "start: generation tracefile with penetration level of " + str(penetration)
os.system("java -jar " + exporter + " ns2 -n " + netfile + " -t netstate.xml -m mobility_" + str(penetration) + ".tcl -a activity_" + str(penetration) + ".tcl -c config_" + str(penetration) + ".tcl -p " + str(penetration) + " -s " + str(options.seed) + " -b " + str(options.begintime) + " -e " + str(options.endtime))
if (os.path.isfile("mobility_" + str(penetration) + ".tcl")==False or os.path.isfile("activity_" + str(penetration) + ".tcl")==False or os.path.isfile("config_" + str(penetration)+".tcl")==False):
print "error creating mobility, activity, config"
sys.exit(1)
else:
print "finished: generation tracefile with penetration level of " + str(penetration)
#
# remove netstate
#
os.remove("netstate.xml")
sys.exit(0)
|