This page describes a historic artifact
in the history of OpenStreetMap. It does not reflect the current situation, but instead documents the historical concepts, issues, or ideas
- Traveling salesman was a routing and navigation program for the OpenStreetMap written in Java for desktop computers.
- Reason for being historic
- Development ceased in 2011.
- Captured time
||GNU General Public License
||Windows, Windows 2000, Windows XP, and Linux
Highly modular router
The current version 1.0.2 is using OpenStreetMap API 0.6 but supporting local and downloaded files in API 0.5 too.
SVN contains a newer version that support using the H2-database or MySQL instead of the OsmBin file-format to store your local map (planned to be released as version 1.1.0).
Traveling-Salesman is a routing and navigation program for the OpenStreetMap.
It is written to encourage experimentation. Nearly every part of it
is developed as a plugin and can be replaced.
(See here for the plugins and extension-points offered to plug into)
- route-calculations (multiple easy to understand algorithms already supplied)
- metric to optimize a route for (e.g. "most fuel efficient route")
- gps-interfacing (gpsd, serial-ports, bluetooth-gps, nmea- or gpx-file)
- finding places
- drawing a map with overlaid route,...
- act as a gpsd for JOSM-LiveGPS
- database/file-format to store the map in
Traveling-Salesman consists of 3 parts:
A standalone navigation-program utilizing OSMNavigation.
TS is only a very thin layer of gui-code and custom widgets to provide as much as possible for other developers in OSMNavigation.
After completing a config-wizard it is a fully featured navigation-program that is in common use on the road.
- support serial-port, Bluetooth and internal gps-devices
- including GPS auto-detection
- as well as NMEA and GPX -files with fast-forward and pause for testing.
- search for house-numbers (since 0.9.7 fully supporting the Karlsruhe Schema)
- support for polygons describing the exact city-limits
- support for cities missing such polygons
- search for places outside the local map by using the namefinder
Routing and Navigation-support
Map and Map-Rendering -support
- import and update maps from inside the program
- update existing and download missing areas directly from the API v0.6/Roma-server
- download country-maps from different ftp-mirrors by selecting them form a menu
- multiple rendering-plugins to choose from
- render places outside the local map by downloading tiles
Plugin and Tool-integration -support
- extend and customize everything using plugins
- click "edit in JOSM" to edit the currently visible area and fix errors in the map
A Library for writing navigation- and route-planning -software for OpenStreetMap.
It contains plugins for
- finding routes,
- different metrics, (shortest, fastest, most fuel-efficient, scenic,...)
- giving driving-instructions,
- finding addresses,
- real-time map-painting
and an optional manager-class to do the housekeeping between them and act as
A Library for easy working with OpenStreetMap-Data.
It utilizes Osmosis for the low-level tasks and extends it with coordinate-transformations, data-filtering and cleaning, transparent map-access, and memory-management for using all of the database while keeping only a fraction of it in memory.
It also provides for user-preferences and a very simple to use plugin-architecture that is heavily
used to make parts interchangeable.
Multiple backends for storing the map-database are provided ranging from the OSMbin file-format, an embedded HsqlDB to osm-xml-files for each tile down to an in-memory-operation.
LibOSM can also act as a plugin for Osmosis to add additional tasks.
using Traveling Salesman as a GPSD for JOSM
I was frustrated to not find a GPSD (GPS daemon) for Windows.
So I added a feature to Traveling Salesman to make
it act as a minimal GPSD-Server for JOSM.
- start Traveling Salesman (the traveling_salesman.jar is executable)
- open "preferences"->"navigation"
- make sure "Port for gpsd-emulatio" is set to 2947
- set "get position from" to JGPSProvider (or GPXFileProvider for testing)
- for JGPSProvider set "JGPS com-port description" to
"COM5,19200,8,1,N" or similar.
- start JOSM and let LiveGPS connect.
Currently there is an "open in josm" -button in Traveling Salesman, to download
the latest josm (if not yet present) and open the currently visible area in it.
A new button "survey roads" that downloads and starts josm including liveGPS
and Surveyor may follow soon.
This way you can start surveying with one click if you see a missing street
while navigating from A to B.
Using Traveling Salesman
You can also use Traveling Salesman on the command-line in shell-scripts/batch-scripts:
java -jar traveling_salesman.jar import [filename|URL] # import a planet.osm from the specified URL
java -jar traveling_salesman.jar route [options] [location] [location]* [location] # routes between the given nodes outputting CSV
-router <classname> # default <classname> to TurnRestrictedAStar
-metric <classname> # default <classname> to StaticFactestRouteMetric
-vehicle <classname> # default <classname> to Motorcar
-loadmap <file.osm> # load <file.osm> into memory instead of using the local map
-gpx <file.gpx> # write gpx data to <file.gpx>
-csv <file.csv> # write csv data to <file.csv>
location can be either:
<nodeID> # <nodeID> from openstreetmap
[<lat>,<lon>] # <lat> and <lon>
java -jar traveling_salesman.jar import benelux.osm
java -jar travaling_salesman.jar route -gpx route.gpx [52.371000,4.900119] [50.846290,4.351048]