Traveling salesman
- About
- 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
- 2010
Traveling Salesman | |
---|---|
Author: | Marcus Wolschon |
License: | GNU General Public License |
Platforms: | Windows, Windows 2000, Windows XP, and Linux |
Status: | Unmaintained |
Version: | 1.0.3-RC1 (2013-05-02) |
Language: | English |
Website: | http://sourceforge.net/projects/travelingsales/ |
Source code: | http://travelingsales.svn.sourceforge.net/viewvc/travelingsales/ |
Programming language: | Java |
Highly modular router |
- project-page: http://sourceforge.net/projects/travelingsales/
- Wiki
- Author: Marcus Wolschon
- Documentation: wiki (wiki(for sourceforge-users))
- Discussion: Forum
- Download: sourceforge
- Sourcecode: svn-browse
- Feature-Requests: tracker
Status
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).
Description
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)
- driving-instructions
- voice-output
- 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:
Traveling-Salesman
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.
Features:
GPS-support
- 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.
Address-support
- 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
- multiple routing-plugins to choose from
- obey turn-restrictions (since 0.9.8)
- obey national traffic rules when driving through/into other countries.
- WIP: Traffic Message Channel (TMC) -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,...)
- gps-handling,
- giving driving-instructions,
- finding addresses,
- real-time map-painting
and an optional manager-class to do the housekeeping between them and act as a model.
LibOSM
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.
Usage:
- 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 options: -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>
Example usage:
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]