Routing with randomized weights (--weights.random-factor) is now stable with respect to network changes, vehicle composition and state loading. The random noise for each edge only depends on the random seed and vehicle id (also applies to duarouter). If thew new option --weights.random-factor.dynamic is set, the randomness in the simulation also varies over time. #17325
The new option --output-suffix can be used to modify the names of all output files (similar to --output-prefix). The suffix will be inserted right before the file name extension. #17338
edgeData output definitions now support attribute aggregate="taz" which will aggregated data within each loaded taz definition #11104
TraCI
function traci.simulation.findRoute now supports optional attributes departPos, arrivalPos #17352
tools
attributeCompare.py: Now supports special id-attribute @FILE#17334
Fixed invalid consumption/emissions when loading and unloading persons/containers #17152, #17264 (regression in 1.22.0)
Fixed crash in rail simulation after rerouting #16958
Rerouters with parkingAreaReroute now take into account parkingBadges and acceptedBadges#16966
Output file paths defined with param keys device.ssm.file and device.toc.file are now interpreted relative to the file in which they are defined. #16967
Fixed bug where taxi dispatch algorithm routeExtension takes detours when a ride is shared between 3 or more persons #17059
Fixed empty missing vehroute-output when --vehroute-output.sorted and --load-state are used #16987
Fixed cases where vehicles would repeatedly fail to decide between overtaking left or right when the middle lane is blocked. #1312, #17116, #17129
Fixed bug where opposite direction overtaking failed in the sublane model due to miscalculating the leader vehicle #17125
Reduced lateral jump when an emergency vehicle enters a junction from the wrong turning lane #17115
Fixed emergency braking when attribute arrivalLane is set #17130
edge/lane parameter dialog now shows routingType (which defaults to the edgeType when not set explicitly) #17096
Added menu option for opening only the network in netedit when a .sumocfg has been loaded in the simulation ( Ctrl+Shift+T) #17087
BusStop and all other stopping places now support <param key="waitingDepth" value="FLOAT"/> to customize spacing depth of waiting transportables #17088
Option --weights.reversal-penalty can now be used to configure a penalty for train reversal when routing. A negative value disables reversals #17269
netconvert
Added option --output.removed-nodes which preserves ids of nodes that were removing during simplification withh --geometry.remove#16937
Added option --junctions.attach-removed which can be used to merge networks that were processed with option --output.removed-nodes and correctly re-attach at removed junctions #16968
Option --junctions.join-same now supports setting the matching distance for joining #16969
Added new edge attribute routingType which can be used to influence routing together with the new <preference> element #17094
Options --railway.topology.extend-priority and --railway.topology.direction-priority now set attribute routingType#17102
Element <split> now supports attribute offset to customize the lateral offset of newly created lanes #17103
Node attribute roundabout="0" can now be used to declare that a junction shall not be classified as a roundabout #10677
Invalid lane neighbor information with respect to connected junctions is now fixed automatically (with a warning) #17280
TraCI
vehicle.setSpeedMode now takes effect for vehicles with the bluelight device #17122
tools
net2geojson.py: now permits exporting of edge AND lane shapes by using options --edges --lanes#16774
abstractRail.py: Added option --main-stops for filtering stops when determining region angle #17024
generateDetectors.py: Added option --edge-probability to allow randomization per edge #17044
instantOutToEdgeCounts.py: new tool to convert induction loop output to edgeData #17048
createOvertakingReroutes.py: new tool for building railway rerouters #16448
Option --junctions.join-same whas changed from type BOOL to type FLOAT and now requires a distance argument. The previous behavior can be approximated by setting a value of 0.01#16969
sumo now warns when setting option --threads with an argument greater than 1 #17057
Added warnings and errors for different problems with a configuration file #17069
Command line output under Windows now uses UTF charset #17093
Automatic rerouting will no longer take place if the new route has the same travel time as the old route. #4635
Vehicles with the bluelight device no longer set prefered lateral alignment to arbitrary#17124
Files ending with .parquet are now written in Apache Parquet format. This can also be activated with option --output.format parquet. Further applicable options are --output.compression, --output.column-header. Feature is in experimental stage#14694
Files ending with .csv are now written in CSV format. This can also be activated with option --output.format csv. Compressed csv is supported with .csv.gz. Further applicable options are --output.column-header, --output.column-separator. Feature is in experimental stage#16791
A warning is now issued for traffic light programs if a link never gets a green phase even when the program has only a single phase. #16652
A warning is now issued for traffic light programs if two 'G' links target the same lane in the same phase #16636
Added waitingTime to personinfo walk output #16737
closingReroute now supports optional attribute until for setting the estimated duration of closing. Vehicle may wait at the closed edge if a detour would take longer. #16804
Vehicles may now exceed their vType-maxSpeed when using carFollowModel="KraussPS" and going downhill (up to their desiredMaxSpeed) #16805
Vehroute output for persons and containers can now selectively be disabled via param key "has.vehroute.person-device"#16820
It is now possible to model trailers / marshalling by changing vehicle properties upon loading/unloading of containers #8800
Custom traffic light switching rules now support function w:DETID to retrieve the longest individual waiting time in seconds for vehicles on detector #16841
Rerouting trains now always use the current edge as reroute-origin #16852
Added options --default.departspeed and --default.departlane to override the default value when vehicles do not define the respective attributes #16925
meso
<tlLogic> with <param key="meso.tls.control" value="true"/> is now exempt from options --meso-tls-penalty and --meso-tls-flow-penalty and runs with full control #16674
sumo-gui
Various improvement to visual placement of rerouter objects #16716
In game mode, left-click can now toggle switches (rerouters) #16840
The 3D-view can now render vehicles in their 3D-model color #12683
busStop now support <param key="waitingWidth" value="FLOAT"/> to customize spacing of waiting transportables #16724
ChargingStations that have an associated parkingArea are now drawn at the parking space rather than on the road #16670
containerStop now supports attribute angle to draw stationed containers at an angle #16813
vTypes now support <param key="scaleVisual" value="FLOAT"/> to customize individual visual scaling #16849
netconvert
Added options --prefix.junction an --prefix.edge to set independent prefixes for the respective objects #16900
Added option --kept-ids to load a selection of objects that shall not be renamed (with --numerical-ids or a --prefix option) #16902
duarouter
Added option --repair.max-detour-factor to give more control over repairing routes. Vehicles will backtrack rather than take large detours. #16746
tools
randomTrips.py now always generates validated trips #12684
plotXMLAttributes.py: The options --xticks-file and --yticks-file now support giving a column for name aliases to group the respective values #16683
plotStops.py: New tool to simplify drawing a train schedule diagram along a specified route. #16683
generateContinuousRerouters.py: Added option --stop-file to add stops at loaded busStops when rerouting #16719
mapDetectors.py: Added option --all-lanes to place detectors on all lanes of an edge based on a single input coordinate #16751
plot_net_dump.py: Added option --colormap.center two permit plotting colors with TwoSlopeNorm#16778
tileGet.py:: Added 'cartodb_' URL-shortcuts and option --retina to be used with cartodb URLS #16822
net2sel.py: Added new tool to obtain selection file with junctions and edges from .net.xml #16907
routeSampler.py: Named route output now always writes the usage count as route "probability" attribute #16919
route2poly.py: when using --standalone with --scale-width, named routes are scaled by attribute probability #16920
route2poly.py: when using option --scale-width, routes are sorted by count/probability in descending order. Option --filter-count can be used to exlude routes with low count #16921
setting the python root dir now compiles libsumo against the selected python #16755
It is recommended to use a compiler which supports C++17 (e.g. MSVC 2017 or later, g++ 7 or later)
MSVC 2015 is no longer supported (mainly due to updates in SUMOLibraries)
netconvert: OSM-imported edges with type "highway.service" now have type "highway.service|psv" when used by public transport vehicles. This may require adaptations when using option --keep-edges.by-type or --remove-edges.by-type and when using edge-type specific restrictions or meso-settings#16763
The values of --default.departspeed (currently "0") and --default.departlane (currently "first") will be changed in a future version so that vehicles depart with higher speed and on all lanes. Make sure to set explicit values if your simulation relies on the old behavior.
Fixed bug where a loaded network successively changed it's geometry #16609
durarouter
Fixed invalid route output when loading invalid routes with stops and setting option --ignore-errors#16365
Improved error message when loading --astar.landmark-distances together with taz #16400
Fixed crash when loading restriction-params with taz #16514
vClass-specific speed restrictions are now working #16580
TraCI
Setting vehicle parameter 'lcContRight' is now working #16147
Fixed bug where traci.vehicle.moveToXY matched onto the wrong internal lane #15282
Fixed bug where vehicle.slowDown require and additional simulation step to reach the target speed and vehicle.setAcceleration was achieving the wrong acceleration #7361
Fixed invalid active person count after person removal #16192
person.removeStage now works for a taxi-driving stage if the taxi is already en route to pick-up #11620
Subscription to lane.getAngle is now working #16360
Subscriptions to methods with additional parameters now work in libsumo #16383
Function edge.subscribeContext now correctly collects vehicles at low dist regardless of lane number #16422
Function vehicle.getLeader no longer contains traffic that crosses the path of the ego vehicle (without ever becoming a leader) #13842
libsumo subscriptions no longer ignore begin and end time #16411
After vehicle.setType, saveState now saves the new type #16185
Tools
sumolib.net.lane.getClosestLanePosAndDist now gives correct results when lane length differs from shape length #16269
sumolib.xml now properly escapes special characters when generating xml #16318
gtfs2pt.py: Fixed problem that caused invalid routes to be written #16336
gtfs2pt.py: Fixed invalid stop placement on disallowed lane #16352
gtfs2pt.py: Now warning about input that provokes negative stop-until times #16322
gtfs2pt.py: Fixed exaggerated penalty for alternative departure edge #16543
gtfs2pt.py: edge speed is no longer ignored when mapping #16544
route2sel.py: Fixed crash when loading flow/trip that references a route id #16395
randomTrips.py: Fixed inconsistent behavior of option --verbose#11861
randomTrips.py: Fixed override of --edge-permission when using --persontrips#16471
randomTrips.py: can now load custom boolean duarouter option from config #16551
randomTrips.py: writing .rou.xml.gz is now working #16556
scaleRoutes.py: Fixed crashes when input exceeds the configured time range #16467
scaleRoutes.py: option --timeline-pair is now working #16473
scaleRoutes.py: Now works with flows defined via period#16470
route_1htoDay.py: fixed misleading option help text #16466
route_1htoDay.py: now supports option --output-file to put all vehicles into a single file that can be used with scaleTimeLine.py#16468
analyzePersonPlans.py: fixed invalid car use classification #16549
distributeChargingStations.py: Fixed invalid position of generated parking area when input contains negative positions #16560
ptlines2flows.py: Fixed invalid route with --extend-to-fringe when pt line is split #16573
ptlines2flows.py: No longer writing invalid (disconnected) routes when using a modified input network. Instead disconnected parts are bridged with jumps #16292
loading tool config with multiple positional input file arguments now works #16447
departPos=stop now works for any departLane on the stop edge #16133
Pedestrians are now included in full output #16159
Added stop attribute jumpUntil to set a minimum time for the end of a jump #16153
Tram insertion automatically uses moving-block mode when there are no rail signals for tram in the network. The behavior can be configured with option --railsignal.default-classes#16208
Taxis that transfer passengers at a busStop now register at that stop. This shows up in --stop-output. #16263
Road slope is now used in HBEFA3 and HBEFA4 computation #16307
Rerouting device now supports <param key="ignoreDest" value="1"/> to support rerouting to any parkingArea regardless of visibility or occupancy of the current destination. One use case is configuring the idle-algorithm for finding the next taxi stand#16387
The --full-output now includes vehicle road slope (in degrees) in networks with elevation data #16389
Collisions that happen as the direct result of lane-changing are now distinguished as "side"-collisions in errors and --collision-output#16396
The warning "bus stop too short" no longer occurs if a stop fills the whole length of it's lane or if it's parkingLength is set to a sufficiently high value #16391
Zipper junctions with an arbitrary number of conflicting connections are now supported #11874
Electric vehicle model parameter constantPowerIntake is no longer affected by propulsionEfficiency or recuperationEfficiency#16463
vType attribute jmTimegapMinor may now be negative to provoke collisions #16478
person plan element <stop> now supports attribute jump. When this is set a person may jump between subsequent stops at different locations, taking the configured time to do so #6325
Signal plans where a phase loops back onto itself with no alternative next phase now raise a warning #16487
Emergency vehicles may now perform opposite overtaking of queues even when the downstream edge has no opposite edge #16499
collision-output now writes network coordinates of the front and rear of the involved vehicles #16509
SSM device parameter "write-na" can be used to disable conflict information where all values are n/a#16513
public transport rides that are created for a personTrip now use any vehicle that stops at the destination by default. The previous behavior of restricting rides to a single line id can be restored with option --persontrip.ride-public-line. #12263
All carFollowModels now support attributes speedTable, maxAccelProfile and desAccelProfile to model speed-dependant limits on acceleration #3920
netedit
Each object now tracks the file from which it was loaded to facilitate working with projects where multiple route- or additional-files are used #12430
Now drawing cyan dotted contour around object with open popup menu #16344
In delete mode, hovering over a junction will highlight all edges that would be deleted when deleting the junction #14114
Selection of rerouter edges now uses improved highlight and permits toggling of edges #16430
Disabled superfluous attribute stopOffsetException when inspecting lanes where stopOffset is 0 #13985
Menu-toggle 'show bubbles' is now available in additional editing modes and toggles between showing junction shapes and junction bubbles. #16214
netconvert
Added option --junctions.join.parallel-threshold DEGREES to increase user control over joining junctions (with --junctions.join) #16140
Added option --osm.annotate-defaults to document whether speed and lane number were based on OSM data or typemap default values #16094
Trams now use safe and efficient zipper merging where possible when no tram rail signals are defined. Option --railway.signal.permit-unsignalized can be used to configure other vClasses that are subject to this behavior #16216
OSM: newer tagging schemes for on-street parking are now supported #16558
The visual configuration 'Show bubbles' make 'show bubbles' more useful #16214
Improved visibility of guishape evehicle (The large black part now takes on a darker version of the vehicle color) #16262
Color settings dialog now features 'recalibrate rainbow' controls for dynamic vehicle coloring schemes #16384
od2trips
Added warning when a taz has no source or sinks #16112
duarouter
public transport rides that are created for a personTrip now use any vehicle that stops at the destination by default. The previous behavior of restricting rides to a single line id can be restored with option --persontrip.ride-public-line. #12263
TraCI
vehicle.setSpeedMode now supports a 7th bit to control adherence to the road speed limit #3811
traci.start now supports argument traceGetters="print". When this is set, the generated traceFile will print the outputs of all get commands when replayed. #16156
randomTrips.py: When option --validate is set, the generated amount of vehicles is guaranteed (by replacing invalid trips with new valid trips) #8843
randomTrips.py: Using value of --vehicle-class as default for --edge-permission#16471
netcheck.py: Added option --right-of-way to find selected cases of faulty right-of-way rules (currently only on-ramps are checked) #16036
jtcrouter.py: Added option --additional-files which are passed to jtrrouter#16191
csv2xml.py: Added option --flat to convert arbitrary csv files without a schema #16204
plotXMLAttributes.py: Added option --xstr and --ystr to force data interpretation as category #16205
sumolib: function xml.parse is now useful when loading nested elements and not providing argument element_names. The new attribute outputLevel (default 1) controls which elements to retrieve #16211
sumolib: Objects loaded with function xml.parse now preserve their attribute order when serialized with toXML#16254
remap_additionals.py: convert infrastructure from one network to another network (which may differ in geometry, lanes and edge splits) #16206
remap_renamed.py: convert route files and additional files after renaming network ids (i.e. with --numerical-ids) #16252
remap_network.py: New tool for finding correspondence between networks based on geometry #16409
ptlines2flows.py: now sorts written routes and flows by id #16222
ptlines2flows.py: now safely handles missing edges #16293
gtfs2pt.py: now supports option --merged-csv for loading transit schedule data from a single file and option --merged-csv-output for creating such a file from GTFS input. #16310
gtfs2pt.py: now supports option --patched-stops to customize stop-to-lane assignment for individual stops #10720
gtfs2pt.py: now supports option --stops for giving a list of candidate stop edges to guide mapping. This can can greatly improve running time #16326
gtfs2pt.py: improved running time through caching #15856
gtfs2pt.py: now supports option --bus-parking to make buses clear the road when stopping #16415
gtfs2pt.py: added option --write-terminals to include vehicle <params>s that describe the known terminal stops of the full route (even if only part of the route is used) #16154
net2geojson.py: option --traffic-lights can now be used to include the shapes of traffic signals #16419
scaleRoutes.py: now uses a non-constant default timeline #16469
mapDetectors.py: Option --write-params can be used to import further data columns #16554
edgeDataFromFlow.py: Now supports custom column names with option --id-column and --time-column and custom interpretation of time values with option --time-scale#16555
In netedit, the default extension of edge data files is now .xml, instead of .dat.xml #16257
Netedit: unified contextual menus for all elements #15314
The new default emission model is now HBEFA4#15950. Please note that this means a major reduction especially in the values for CO and HC at low speeds.
mapDetectors.py: no longer searching up to range 1000 by default #16571
person-ride attribute lines="ANY" is no longer written as this is the default value when loading a ride without line attribute. #12263
TraCI
the new TraCI version is 22
all TraCI functions in the python client should now return tuples instead of lists #15949
affected functions are inductionloop.getVehicleData, lane.getLinks, trafficlight.getControlledLinks, trafficlight.getConstraints*, trafficlight.getNemaPhaseCalls, vehicle.getLaneChangeStatePretty, vehicle.getNextLinks
the unused function TL_EXTERNAL_STATE has been removed (it had only a server implementation, no known client used it)
the functions simulation.getBusStop* are deprecated in favor of the corresponding functions in the busstop domain #16433
Fixed crash when route contains internal edge #15667
Fixed invalid error when using jump after stopping twice on the same edge #15635
Fixed invalid value of diagnostic param 'caccVehicleMode' when using carFollowModel CACC#15682
Fixed invalid speedErr computation for carFollowModel CACC#15683
Actuated traffic light that use the next attribute to skip phases now work correctly if the targeted green phase serves no traffic but leads to a subsequent phase which does #15716
Fixed invalid approach speed at allway_stop when setting lane-stopOffset #15449
Fixed crash when using stop with coordinates and option --mapmatch.junctions#15740
Fixed emergency braking at allway_stop in subsecond simulation #15728
Configuring number of doors now takes effect for JuPedSim #15562
Fixed collision between vehicles and pedestrians involving lanes of different widths #15770
Fixed train collision in network without rail signals #15797
Pedestrians no longer walk onto rail_crossing at yellow #15808
Selection mode function 'select parents' now selects incoming and outgoing lane of selected connections #15968
Fixed invalid weights loading values of TAZ source/sinks #16037
Fixed "freezing" when handling very large TAZ #15844
Fixed bug when saving toolcfg where the tool uses positional arguments #16075
Reloading a demand file now raises warnings rather than errors #16027
Deleting one edge no longer removes crossings from other edges #16017
Fixed selecting TAZ edges with a small selection #16100
Command line options --new -o OUTPUT_FILE is now working together. #14989
sumo-gui
Fixed framerate drop when zoomed in very far #15666
Fixed missing elements in settings dialog when switching to another viewing scheme while the dialog is open #15637
Hotkey ALT no longer has the effect of rendering all POIs and polygons at layer 0. Instead, the layer can be customized in the settings dialog #15558
Fixed invalid breakpoints when clicking time stamps on messages in meso #15780
Fixed invalid travel time when computing pedestrian reachability in a non-pedestrian network #15792
Fixed invalid travel times when computing pedestrian and bicycle reachability #15793
Saving and loading of meso edge scaling scheme is now working #15902
edgedata-file parsing no longer aborts after encountering a single non-numerical attribute #15903
The rainbow colorscheme is now properly stored in gui settings #16080
netconvert
Fixed invalid extra connections from edge where input specifies "no connections" #15944 (regression in 1.2.0)
Fixed invalid sign of geo-coordinate offset in OpenDRIVE input and output #15624
Fixed bug where right-of-way rules could create deadlock at a traffic light #15150
Fixed bug when removing narrow lanes during import #15718
No longer generating invalid signal plan when giving invalid argument --tls.green.time#15719
Fixed invalid linkState for left turns from the major road at junction type allway_stop#15737
Fixed invalid tlLogic after processing net with --keep-edges#15798
No longer building bicycle left turns from a straight-only vehicle lane (starting from a left-turn lane instead) #15943
Fixed invalid handling of negative stop position in ptstop-files #12183
Option --sidewalks.guess.by-permissions no longer puts sidewalks onto paths that are shared between pedestrians and bicycles #16060
OSM: loading typemap osmNetconvertPedestrians.typ.xml no longer puts sidewalks on both sides of oneway streets (i.e. in the middle of a divided road). Legacy behavior can be restored with option --osm.oneway-reverse-sidewalk#16063
OSM: fixed missing vehicle lane where access=yes and busway:right=lane #16061
Added option --chargingstations-output.aggregated.write-unfinished to include still running charging process in charging station output #15677
The new vType attribute lcContRight can be used to configure lane choice at a lane split where all lanes have equal strategic value. #15579
Added option --insertion-checks to set global defaults for vehicle attribute insertionChecks#15149
Added option --pedestrian.striping.jamfactor to configure the speed of jammed pedestrians (default 0.25) #15610
GLOSA Device now looks several phases into the future and can also take queues into account #15614
Added new vType attributes jmAdvance and jmExtraGap to configure the behavior on junctions for crossing and merging streams of traffic #15654
Added new attribute jmStopLineGapMinor to set the distance from the stop line at non-prioritized links #15442
vType attriubte jmStopLineGap now applies to allway_stop #15448
Added new vType attribute lcStrategicLookahead for configuring the lookahead distance when computing strategic best lanes #14718
Added new vType attribute lcSpeedGainRemainTime which controls the minimum time a vehicle can drive on the new lane after a tactical lane change (formerly hard-coded to 20s) #12109
Added new insertion behavior departLane="best_prob" to increase throughput on multi-lane roads #15661
Stationfinder device now supports state saving and loading #15607
Traffic lights now supports the special value offset="begin" which lets the logic start in cycle-second 0 regardless of simulation begin time #15248
Traffic lights of type actuated can now use the next attribute to switch into fixed-duration phases (and the corresponding lanes will obtain detectors to trigger the switch) #15714
Traffic lights of type actuated can now react to a pedestrian crossing #1746
The new option --railsignal.max-block-length can be used to customized the threshold for warnings / driveway truncation #15819
The new option --railsignal-vehicle-output can be used to record entry and exit times of vehicles into signal blocks #14990
The new option --time-to-teleport.railsignal-deadlock can be used to detect signal based deadlocks #15561
The new option --time-to-teleport.remove-constraint can be used to resolve detected deadlocks which are caused by a signal constraint by deactivating a responsible constraint #14543
The new option --deadlock-output can be use to log detected deadlocks and also their method of resolution
Logged deadlocks can be loaded as additional file to prevent them in a subsequent simulation #15569
A warning is given for unreasonable combinations of --time-to-teleport options #15816
street-sign-output now sets the sign angle corresponding to road geometry #15671
Traffic lights now supports the special value offset="begin" which lets the logic start in cycle-second 0 regardless of simulation begin time #15248
Actuated pedestrian crossings are now actuated by pedestrians rather than vehicles #7637
Pedestrian crossings created by option --crossings.guess are now given priority. The old behavior can be obtained by setting option --crossings.guess.roundabout-priority false#15833
Option --plain-output-prefix now also saves a .netccfg-file for rebuilding the network from plain-xml files #12998
Improved geometry of pedestrian crossings when a footpath crosses a road #15975
Removed warning about sharp angles on service roads #16062
routeStats.py: Added option --edges-file for counting the number of times per route that a specific edge (i.e. a counting) location was passed) #15900
routeSampler.py: Added option --verbose.timing to print wall-clock-time performance statistics #15910
routeSampler.py: Major increase in processing speed for long routes #15911
routeSampler.py: Added option --depart-distribution to distribute departures within the counting data intervals #15909
routeSampler.py: now warn about duplicate counting data #15997
routeSampler.py: now includes GEH in mismatch-output #16000
routeSampler.py: Added option --geh-scale to permit custom scaling for GEH value (i.e. to avoid averaging daily counts over 24 hours) #16001
routeSampler.py: Options that set attributse to parse (i.e. --edgedata-attribute) now support a list of comma separated attributes (values are added) #16020
routeSampler.py: Added option --init-input.remove-overflow to downsample demand from a given route file where traffic exceeds counts (and keeping as many of the routes as possible) #15971
edgeDataDiff.py: Added option --geh-scale to permit custom scaling for GEH value and otherwise scaling data to hourly values automatically #16002
edgeDataDiff.py: Added option --attributes to allow comparing files with differing attribute names #15898
xml2csv.py: Added option --keep-attributes to limit the attributes exported to csv #15915
plotXMLAttributes.py: Added options --split-x and --split-y for plotting attributes with list values #15934
sumolib: Geometry helper functions for rotation at offset is now available #15445
duaIterate.py: When loading trips with taz or junction-taz, vehicles may change their depart and arrival edge in each iteration #15983
filterDistricts.py: New options --remove-ids and --remove-ids-file allow filtering out explicit edges #16038
countEdgeUsage.py: Now issues a warning when encountering attributes fromJunction or toJunction #15804
countEdgeUsage.py: print output on number loaded / filtered routes when option --verbose is set #16040
countEdgeUsage.py: New option --subpart.via allow filtering subparts with gaps (i.e. via edges) #16041
netdiff.py: Modified file extension for generated polygons to simplify file filtering in netedit #16042
poly2edgedata.py: Added new tool to transform traffic data from polygons (i.e. from geojson) to edgedata (i.e. for routeSampler.py) #16051
edgesInDistrict.py: now supports .xml.gz inputs #16066
edgeDepartDelay.py: New tool for edge-wise analysis of departDelay from tripinfo-output #16021
geoTrip2POI.py: New for visualizing geoTrips #16028
duaIterate_routeCosts.py: New tool to analyze route choice in a finished duaIterate run in an interactive manner #15912
Added analysis on the effects of attribute departLane on insertion capacity.
Fixed compatibility issues with Ubuntu 24 affecting geo-projections #15618
Option --device.rerouting.railsignal is now inactive by default #15597
If a turning movement has more than one lane and may wait within the intersection, the lanes after the internal junction are now joined into the same internal edge #14776