ECLIPSE(1)
โจ ECLIPSE(1) โจ
User Commands โ no cap, that's the manual section bestie ๐
๐ธ NAME ๐ธ
Eclipse โ road network generator for the microscopic traffic simulation SUMO ๐โจ
๐ SYNOPSIS ๐
netgenerate [OPTION]*
๐ฆ DESCRIPTION ๐ฆ
okay so. Eclipse SUMO netgenerate 1.27.1 ๐
Copyright (C) 2001-2026 German Aerospace Center (DLR) and others; https://sumo.dlr.de
This is the synthetic network generator for the microscopic, multi-modal traffic simulation SUMO. It literally just โจmakes up road networksโจ for you. Iconic.
๐จ bestie listen up: you have to supply one of--grid,--spideror--rand. Not zero of them, not three of them. Pick your fighter.
Depending on which of those switches you pick, other options come into play. iykyk ๐ง
๐ Configuration Options:
-c,--configuration-fileFILE โ loads up the named config when it starts, like a little startup treat ๐-C,--save-configurationFILE โ saves whatever config you're running right now into FILE--save-configuration.relativeโ forces relative paths when it saves the configuration (no absolute-path drama)--save-templateFILE โ saves an empty configuration template into FILE--save-schemaFILE โ saves the configuration schema into FILE--save-commentedโ sprinkles comments into whatever you saved โ template, configuration, or schema ๐
๐ Grid Network Options:
-g,--gridโ forces NETGEN to build a grid-like network ๐๏ธ--grid.numberINT โ how many junctions, in both directions--grid.lengthFLOAT โ how long the streets are, in both directions--grid.x-numberINT โ number of junctions in the x direction; overrides--grid-number๐--grid.y-numberINT โ number of junctions in the y direction; overrides--grid-number๐--grid.x-lengthFLOAT โ length of the horizontal streets; overrides--grid-length--grid.y-lengthFLOAT โ length of the vertical streets; overrides--grid-length--grid.attach-lengthFLOAT โ length of the streets attached at the boundary;0means literally nothing gets attached ๐ซ--grid.x-attach-lengthFLOAT โ same deal but for streets attached at the boundary in the x direction;0means no streets attached--grid.y-attach-lengthFLOAT โ and again for the y direction;0means no streets attached
๐ท๏ธ Spider Network Options:
-s,--spiderโ forces NETGEN to build a spider-net-like network ๐ธ๏ธ (yes it's giving arachnid, we love that for us)--spider.arm-numberINT โ how many axes live inside the net--spider.circle-numberINT โ how many circles the net has--spider.space-radiusFLOAT โ the distances between the circles--spider.omit-centerโ skips the central node of the network entirely, go off king ๐--spider.attach-lengthFLOAT โ length of the streets attached at the boundary;0means no streets are attached
๐ฒ Random Network Options:
-r,--randโ forces NETGEN to build a random network ๐ฐ chaos, but make it infrastructure--rand.iterationsINT โ describes how many times an edge shall be added to the net--rand.max-distanceFLOAT โ the maximum distance for each edge--rand.min-distanceFLOAT โ the minimum distance for each edge--rand.min-angleFLOAT โ the minimum angle for each pair of (bidirectional) roads, in DEGREES ๐--rand.num-triesINT โ how many tries it gets for creating each node--rand.connectivityFLOAT โ the probability for roads to continue at each node--rand.neighbor-dist1FLOAT โ probability for a node having at most 1 neighbor--rand.neighbor-dist2FLOAT โ probability for a node having at most 2 neighbors--rand.neighbor-dist3FLOAT โ probability for a node having at most 3 neighbors--rand.neighbor-dist4FLOAT โ probability for a node having at most 4 neighbors--rand.neighbor-dist5FLOAT โ probability for a node having at most 5 neighbors--rand.neighbor-dist6FLOAT โ probability for a node having at most 6 neighbors--rand.gridโ places the nodes on a regular grid with spacingrand.min-distance๐
๐ฅ Input Options:
-t,--type-filesFILE โ reads edge-type definitions from FILE
๐ค Output Options:
--write-licenseโ includes license info in every single output file, we're being responsible today ๐--write-metadataโ writes parsable metadata (configuration etc.) instead of comments--output-prefixSTR โ a prefix applied to all output files. The special stringTIMEgets swapped out for the current time ๐ฐ๏ธ--output-suffixSTR โ a suffix applied to all output files. The special stringTIMEgets swapped out for the current time ๐ฐ๏ธ--precisionINT โ how many digits after the comma for floating point output--precision.geoINT โ how many digits after the comma forlon,latoutput--output.compressionSTR โ sets the standard compression algorithm (currently only for parquet output)--output.formatSTR โ sets the standard output format when it can't be derived from the file name ('xml','csv','parquet')--output.column-headerSTR โ how to derive column headers from attribute names ('none','tag','auto','plain')--output.column-separatorSTR โ the separator in CSV output-H,--human-readable-timeโ write time values as hour:minute:second or day:hour:minute:second instead of seconds ๐ so much easier to read fr--alphanumerical-idsโ the Ids of generated nodes use an alphanumerical code for easier readability when possible-o,--output-fileFILE โ the generated net gets written to FILE-p,--plain-output-prefixFILE โ prefix of the files that plain xml nodes, edges and connections get written to--plain-output.lanesโ write all lanes and their attributes even when they're not customized--junctions.join-outputFILE โ writes info about joined junctions to FILE (you can load it as an additional node-file to reproduce the joins)--prefixSTR โ defines a prefix for edge and junction IDs--prefix.junctionSTR โ defines a prefix for junction IDs--prefix.edgeSTR โ defines a prefix for edge IDs--amitran-outputFILE โ the generated net gets written to FILE using Amitran format--matsim-outputFILE โ the generated net gets written to FILE using MATSim format--opendrive-outputFILE โ the generated net gets written to FILE using OpenDRIVE format--dlr-navteq-outputFILE โ the generated net gets written to dlr-navteq files with the given PREFIX--dlr-navteq.versionSTR โ the dlr-navteq output format version to write--dlr-navteq.precisionINT โ the network coordinates get written with the specified level of output precision--output.street-namesโ street names get included in the output (if available)--output.original-namesโ writes original names, if given, as a parameter--output.removed-nodesโ writes the IDs of nodes removed with--geometry.removeinto an edge param--street-sign-outputFILE โ writes street signs as POIs to FILE--opendrive-output.straight-thresholdFLOAT โ builds parameterized curves whenever the angular change between straight segments exceeds FLOAT degrees
โ๏ธ Processing Options:
--turn-lanesINT โ generates INT left-turn lanes โฉ๏ธ--turn-lanes.lengthFLOAT โ sets the length of generated turning lanes to FLOAT--perturb-xSTR โ applies random spatial perturbation in the x direction according to the given distribution--perturb-ySTR โ applies random spatial perturbation in the y direction according to the given distribution--perturb-zSTR โ applies random spatial perturbation in the z direction according to the given distribution--bidi-probabilityFLOAT โ defines the probability of building a reverse edge--random-lanenumberโ draws lane numbers randomly from[1,default.lanenumber]--random-priorityโ draws edge priority randomly from[1,default.priority]--random-typeโ draws edge type randomly from all loaded types--numerical-idsโ remaps alphanumerical IDs of nodes and edges so that all IDs are integers ๐ข--numerical-ids.node-startINT โ remaps node IDs to integers starting at INT--numerical-ids.edge-startINT โ remaps edge IDs to integers starting at INT--reserved-idsFILE โ makes sure generated ids don't include any of the typed IDs from FILE (sumo-gui selection file format)--kept-idsFILE โ makes sure objects with typed IDs from FILE (sumo-gui selection file format) don't get renamed ๐ซถ--geometry.splitโ splits edges across geometry nodes-R,--geometry.removeโ replaces nodes that only define edge geometry with geometry points (aka joins edges) โ๏ธ--geometry.remove.keep-edges.explicitSTR[] โ ensures the given list of edges is not modified--geometry.remove.keep-edges.input-fileFILE โ ensures the edges in FILE are not modified (each id on a single line; selection files from sumo-gui are also supported)--geometry.remove.min-lengthFLOAT โ allows merging edges with differing attributes when their length is below min-length--geometry.remove.width-toleranceFLOAT โ allows merging edges with differing lane widths if the difference is below FLOAT--geometry.remove.max-junction-sizeFLOAT โ prevents removal of junctions with a size above FLOAT as defined by custom edge endpoints--geometry.max-segment-lengthFLOAT โ splits geometry to restrict segment length--geometry.max-gradeFLOAT โ warns about edge geometries with a grade in % above FLOAT.--geometry.max-grade.fixโ smooths edge geometries with a grade above the warning threshold.--offset.disable-normalizationโ turns off normalizing node positions--offset.xFLOAT โ adds FLOAT to net x-positions--offset.yFLOAT โ adds FLOAT to net y-positions--offset.zFLOAT โ adds FLOAT to net z-positions--flip-y-axisโ flips the y-coordinate along zero ๐--roundabouts.guessโ enables roundabout-guessing ๐ก--roundabouts.guess.max-lengthFLOAT โ structures with a circumference above the FLOAT threshold don't get classified as a roundabout--roundabouts.visibility-distanceFLOAT โ the default visibility when approaching a roundabout--opposites.guessโ enables guessing of opposite direction lanes that are usable for overtaking ๐๏ธ--opposites.guess.fix-lengthsโ ensures opposite edges have the same length--fringe.guessโ enables guessing of network fringe nodes--fringe.guess.speed-threshold FLOATโ bestie, any disconnected edges going faster than this get guessed as outer fringe โจ--lefthandโ assumes left-hand traffic on the network (yes, like the UK, iconic behavior) ๐ฌ๐ง--edges.joinโ merges edges that connect the same nodes and are close to each other. lowkey recommended for VISSIM import ๐
๐ Building Defaults Options ๐
these are the "if nobody told me otherwise" values, and they're doing SO much heavy lifting fr fr
-L,--default.lanenumber INTโ the default number of lanes in an edge--default.lanewidth FLOATโ the default width of lanes--default.spreadtype STRโ the default method for computing lane shapes from edge shapes-S,--default.speed FLOATโ the default speed on an edge (in m/s)--default.friction FLOATโ the default friction on an edge-P,--default.priority INTโ the default priority of an edge--default.type STRโ the default edge type--default.sidewalk-width FLOATโ the default width of added sidewalks ๐ถโ๏ธ--default.bikelane-width FLOATโ the default width of added bike lanes ๐ฒ--default.crossing-width FLOATโ the default width of a pedestrian crossing--default.crossing-speed FLOATโ the default speed "limit" on a pedestrian crossing (in m/s)--default.walkingarea-speed FLOATโ the default speed "limit" on a pedestrian walkingarea (in m/s)--default.allow STRโ the default for allowed vehicle classes--default.disallow STRโ the default for disallowed vehicle classes--default.junctions.keep-clearโ whether junctions should be kept clear by default--default.junctions.radius FLOATโ the default turning radius of intersections-j,--default.junctions.type STRโ determines default junction type, and the vibes are literally:
[traffic_light|priority|right_before_left|left_before_right|traffic_light_right_on_red|priority_stop|allway_stop|...]
(peep docs/Networks/PlainXML#node_types for the whole lore) ๐ฆ
--default.connection-length FLOATโ the default length when overriding connection lengths--default.connection.cont-pos FLOATโ whether/where connections should have an internal junction--default.right-of-way STRโ the default algorithm for computing right of way rules, and your options are'default'or'edgePriority'
๐ฆ TLS Building Options ๐ฆ
traffic light season, and we are OBSESSED. every single dial you can turn, right here ๐
--tls.set STR[]โ interpretsSTR[]as list of junctions to be controlled by TLS--tls.unset STR[]โ interpretsSTR[]as list of junctions to be not controlled by TLS--tls.guessโ turns on TLS guessing ๐ฎ--tls.guess.threshold FLOATโ sets minimum value for the sum of all incoming lane speeds when guessing TLS--tls.guess.joiningโ includes node clusters into guess--tls.joinโ tries to cluster tls-controlled nodes--tls.join-dist FLOATโ determines the maximal distance for joining traffic lights (defaults to 20)--tls.join-exclude STR[]โ interpretsSTR[]as list of tls ids to exclude from joining--tls.uncontrolled-withinโ do not control edges that lie fully within a joined traffic light.
โ ๏ธ heads up bestie: this may cause collisions but allows old traffic light plans to be used. like, pick your poison ๐
--tls.ignore-internal-junction-jamโ do not build mutually conflicting response matrix, potentially ignoring vehicles that are stuck at an internal junction when their phase has ended--tls.cycle.time INTโ useINTas cycle duration--tls.green.time INTโ useINTas green phase duration ๐-D,--tls.yellow.min-decel FLOATโ defines smallest vehicle deceleration--tls.yellow.patch-smallโ given yellow times are patched even if being too short--tls.yellow.time INTโ setINTas fixed time for yellow phase durations ๐--tls.red.time INTโ setINTas fixed time for red phase duration at traffic lights that do not have a conflicting flow โค๏ธ--tls.allred.time INTโ setINTas fixed time for intermediate red phase after every switch--tls.minor-left.max-speed FLOATโ useFLOATas threshold for allowing left-turning vehicles to move in the same phase as oncoming straight-going vehicles--tls.left-green.time INTโ useINTas green phase duration for left turns (s). setting this value to0disables additional left-turning phases--tls.nema.vehExt INTโ setINTas fixed time for intermediate vehext phase after every switch--tls.nema.yellow INTโ setINTas fixed time for intermediate NEMA yellow phase after every switch--tls.nema.red INTโ setINTas fixed time for intermediate NEMA red phase after every switch--tls.crossing-min.time INTโ useINTas minimum green duration for pedestrian crossings (s). ๐ธ--tls.crossing-clearance.time INTโ useINTas clearance time for pedestrian crossings (s).--tls.scramble.time INTโ useINTas green phase duration for pedestrian scramble phase (s).--tls.half-offset STR[]โ TLSs inSTR[]will be shifted by half-phase--tls.quarter-offset STR[]โ TLSs inSTR[]will be shifted by quarter-phase--tls.default-type STRโ TLSs with unspecified type will useSTRas their algorithm--tls.layout STRโ set phase layout four grouping opposite directions or grouping all movements for one incoming edge, i.e.['opposites', 'incoming']--tls.no-mixedโ avoid phases with green and red signals for different connections from the same lane--tls.min-dur INTโ default minimum phase duration for traffic lights with variable phase length--tls.max-dur INTโ default maximum phase duration for traffic lights with variable phase length--tls.group-signalsโ assign the same tls link index to connections that share the same states--tls.ungroup-signalsโ assign a distinct tls link index to every connection--tls.rebuildโ rebuild all traffic light plans in the network ๐จ--tls.discard-simpleโ does not instantiate traffic lights at geometry-like nodes--railway.signal.permit-unsignalized STR[]โ list rail classes that may run without rail signals ๐
โ๏ธ Edge Removal Options โ๏ธ
when you need to be a little ruthless. it's giving spring cleaning ๐งน
--keep-edges.min-speed FLOATโ only keep edges with speed in meters/second >FLOAT--remove-edges.explicit STR[]โ remove edges inSTR[]--keep-edges.explicit STR[]โ only keep edges inSTR[]or those which are kept due to other keep-edges or remove-edges options--keep-edges.input-file FILEโ only keep edges inFILE(each id on a single line. selection files from sumo-gui are also supported) or those which are kept due to other keep-edges or remove-edges options--remove-edges.input-file FILEโ remove edges inFILE. (each id on a single line. selection files from sumo-gui are also supported)--keep-edges.in-boundary STR[]โ only keep edges which are located within the given boundary (given either as CARTESIAN corner coordinates<xmin,ymin,xmax,ymax>or as polygon<x0,y0,x1,y1,...>)--keep-edges.in-geo-boundary STR[]โ only keep edges which are located within the given boundary (given either as GEODETIC corner coordinates<lon-min,lat-min,lon-max,lat-max>or as polygon<lon0,lat0,lon1,lat1,...>)--keep-lanes.min-width FLOATโ only keep lanes with width in meters >FLOAT
๐ Unregulated Nodes Options ๐
free-range nodes. no rules, just vibes (but like, controlled vibes) ๐ฆ
--keep-nodes-unregulatedโ all nodes will be unregulated--keep-nodes-unregulated.explicit STR[]โ do not regulate nodes inSTR[]--keep-nodes-unregulated.district-nodesโ do not regulate district nodes
๐ Junctions Options ๐
the intersection glow-up section, we love to see it ๐
--junctions.right-before-left.speed-threshold FLOATโ allow building right-before-left junctions when the incoming edge speeds are belowFLOAT(m/s)--junctions.left-before-rightโ build left-before-right junctions instead of right-before-left junctions--no-internal-linksโ omits internal links--no-turnaroundsโ disables building turnarounds--no-turnarounds.tlsโ disables building turnarounds at tls-controlled junctions--no-turnarounds.geometryโ disables building turnarounds at geometry-like junctions--no-turnarounds.except-deadendโ disables building turnarounds except at dead end junctions--no-turnarounds.except-turnlaneโ disables building turnarounds except at junctions with a dedicated turning lane--no-turnarounds.fringeโ disables building turnarounds at fringe junctions--no-left-connectionsโ disables building connections to left--junctions.joinโ joins junctions that are close to each other (recommended for OSM import ๐)--junctions.join-dist FLOATโ determines the maximal distance for joining junctions (defaults to 10)--junctions.join.parallel-threshold FLOATโ the angular threshold in degrees for rejection of parallel edges when joining junctions--junctions.join-same FLOATโ joins junctions that have similar coordinates even if not connected--junctions.join-resetโ reset connections for joined junctions--max-join-ids INTโ abbreviate junction or TLS id if it joins more thanINTjunctions--junctions.corner-detail INTโ generateINTintermediate points to smooth out intersection corners--junctions.internal-link-detail INTโ generateINTintermediate points to smooth out lanes within the intersection--junctions.scurve-stretch FLOATโ generate longer intersections to allow for smooth s-curves when the number of lanes changes--junctions.join-turnsโ builds common edges for turning connections with common from- and to-edge. this causes discrepancies between geometrical length and assigned length due to averaging but enables lane-changing while turning ๐--junctions.limit-turn-speed FLOATโ limits speed on junctions to an average lateral acceleration of at mostFLOAT(m/s^2)--junctions.limit-turn-speed.min-angle FLOATโ do not limit turn speed for angular changes belowFLOAT(degrees). the value is subtracted from the geometric angle before computing the turning radius.--junctions.limit-turn-speed.min-angle.railway FLOATโ do not limit turn speed for angular changes belowFLOAT(degrees) on railway edges. the value is subtracted from the geometric angle before computing the turning radius. ๐--junctions.limit-turn-speed.warn.straightFLOAT โ Warns you when a turn speed limit actually slows down straight connections by more than FLOAT. Like, bestie, if going straight is getting nerfed by more than that number, you'll hear about it.--junctions.limit-turn-speed.warn.turnFLOAT โ Same energy, but for turning connections (and no u-turns, so don't even think about it). Warns when the speed of a turning connection drops by more than FLOAT.--junctions.small-radiusFLOAT โ The default radius for junctions that don't need wide vehicle turns. Small radius, small drama. ๐--junctions.higher-speedโ Uses the maximum of the incoming and outgoing edge speeds at a junction instead of the average. Main character speed gets to win for once, periodt.--junctions.minimal-shapeโ Builds junctions with minimal shapes, and yes that means edge overlap just gets ignored. It's giving "I didn't see it, so it's not my problem" ๐ญ--junctions.endpoint-shapeโ Builds junction shapes based on edge endpoints (and again, edge overlap is ignored). Lowkey a whole different silhouette.--internal-junctions.vehicle-widthFLOAT โ The assumed vehicle width used when computing internal junction positions. Your fave little width, for math reasons โจ--rectangular-lane-cutโ Forces rectangular cuts between lanes and intersections. Sharp corners only, no soft launches, slay.--check-lane-foes.roundaboutโ Allows driving onto a multi-lane road if there are foes on other lanes โ but only at roundabouts. Foes stay in their lane, we stay in ours ๐ซถ--check-lane-foes.allโ Same deal, same "foes on other lanes" allowance, except it's everywhere. Full send, no cap.
โจ Pedestrian Options โจ
--sidewalks.guessโ Guesses pedestrian sidewalks based on edge speed. It's literally doing detective work on your network ๐--sidewalks.guess.max-speedFLOAT โ Adds sidewalks for edges with a speed equal to or below the given limit. Chill roads get the sidewalk treatment ๐ธ--sidewalks.guess.min-speedFLOAT โ Adds sidewalks for edges with a speed above the given limit. Speedy roads count too, bestie.--sidewalks.guess.from-permissionsโ Adds sidewalks for edges that allow pedestrians on any of their lanes, regardless of speed. Permissions say yes โ sidewalk says hi ๐--sidewalks.guess.excludeSTR[] โ Do not guess sidewalks for the given list of edges. Some edges are simply not invited to the sidewalk party ๐--crossings.guessโ Guesses pedestrian crossings based on whether sidewalks exist. Sidewalk spotted โ crossing assumed. The way that logic just works ๐--crossings.guess.speed-thresholdFLOAT โ At uncontrolled nodes, it does not build crossings across edges whose speed is above the threshold. Too fast = no crossing, we're not playing games.--crossings.guess.roundabout-priorityโ Gives priority to guessed crossings at roundabouts. Roundabout crossings, you are the moment ๐--walkingareasโ Always builds walking areas, even when there are literally no crossings. Zero crossings, still walking, iconic.--walkingareas.join-distFLOAT โ Does not create a walkingarea between sidewalks that are already connected by a pedestrian junction within FLOAT. If y'all are already connected, no need to be extra ๐ฆ
๐ฒ Bicycle Options ๐ฒ
--bikelanes.guessโ Guesses bike lanes based on edge speed. Bikes deserve their own lane, fr fr.--bikelanes.guess.max-speedFLOAT โ Adds bike lanes for edges with a speed equal to or below the given limit.--bikelanes.guess.min-speedFLOAT โ Adds bike lanes for edges with a speed above the given limit.--bikelanes.guess.from-permissionsโ Adds bike lanes for edges that allow bicycles on any of their lanes, regardless of speed. If bikes are permitted, bikes are getting a lane, periodt.--bikelanes.guess.excludeSTR[] โ Do not guess bikelanes for the given list of edges. These edges said "not today" and we respect it ๐
๐ข Report Options ๐ข
-v,--verboseโ Switches to verbose output. Now it tells you everything, no gatekeeping ๐--print-optionsโ Prints option values before processing. Receipts, immediately.-?,--helpโ Prints this screen, or selected topics. Hi bestie, need a hand?-V,--versionโ Prints the current version. Which one are we on? Let's see โจ-X,--xml-validationSTR โ Sets the schema validation scheme for XML inputs. Your options are"never","local","auto"or"always". Choose wisely, it's giving vibes check on your XML.-W,--no-warningsโ Disables output of warnings. Ignorance is bliss, lowkey ๐--aggregate-warningsINT โ Aggregates warnings of the same type whenever more than INT of them occur. So the same complaint 500 times becomes one tidy pile, we love efficiency ๐ซถ-l,--logFILE โ Writes all messages to FILE, and yes, this implies verbose.--message-logFILE โ Writes all non-error messages to FILE. Also implies verbose.--error-logFILE โ Writes all warnings and errors to FILE.--log.timestampsโ Writes timestamps in front of all messages. Timestamped receipts, the best kind โญ--log.processidโ Writes the process ID in front of all messages. So you know exactly which process is being dramatic.--languageSTR โ The language to use in messages. Multilingual queen behavior ๐
๐ฒ Random Number Options ๐ฒ
--randomโ Initialises the random number generator with the current system time. Different every time, chaotic and free-spirited ๐ซ--seedINT โ Initialises the random number generator with the given value. Same seed, same reality โ reproducible bestie energy ๐
๐ EXAMPLES ๐
netgenerate -c <CONFIGURATION>
create net from given configuration
netgenerate --grid [grid-network options] -o <OUTPUTFILE>
create grid net
netgenerate --spider [spider-network options] -o <OUTPUTFILE>
create spider net
netgenerate --rand [random-network options] -o <OUTPUTFILE>
create random net
๐ REPORTING BUGS ๐
Found something cursed? Report bugs at <https://github.com/eclipse-sumo/sumo/issues>. Get in contact via <sumo@dlr.de>. (Yes, actually tell them โ bugs deserve to be seen, not silenced ๐)
Build features: Linux-6.8.0-139-generic x86_64 GNU 15.3.0 None
FMI Proj GUI Intl SWIG Eigen GDAL FFmpeg OSG GL2PS
Copyright (C) 2001-2026 German Aerospace Center (DLR) and others; <https://sumo.dlr.de>
Eclipse SUMO netgenerate 1.27.1 is part of SUMO.
This program and the accompanying materials are made available under the terms of the Eclipse Public License v2.0 which accompanies this distribution, and is available at <http://www.eclipse.org/legal/epl-v20.html>
This program may also be made available under the following Secondary Licenses when the conditions for such availability set forth in the Eclipse Public License 2.0 are satisfied: GNU General Public License, version 2 or later which is available at <https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html>
SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later
And that's the whole page, bestie!! ๐ซถ This was Eclipse SUMO netgenerate 1.27.1, dated August 2026, straight out of the ECLIPSE(1) manual. Go build something gorgeous with it ๐ โจ๐
๐ฆ where this page comes from
- ubuntu stonking: sumo 1.27.1+dfsg-1 ยท EPL-2.0 OR GPL-2.0-or-later
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms