Traveling salesman

From OpenStreetMap Wiki
Jump to navigation Jump to search
Logo.png
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.
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
Traveling salesman screenshot.jpg
Author: Marcus Wolschon
License: GNU GPL
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

Features
Feature Value
Map Display
Display map yes
Map data vector
Source offline
Rotate map yes
3D view no
Shows website
Shows phone number
Shows operation hours
Routing
Routing yes
Create route manually
Calculate route
Create route via Waypoints
Routing profiles
Turn restrictions
Calculate route without Internet (Offline routing)
Routing providers
Avoid traffic
Traffic Provider
Navigating
Navigate yes
Find location yes
Find nearby POIs
Navigate to point
Navigation with voice / Voice guidance
Keep on road no
Lane guidance
Works without GPS yes
Navigate along predefined route
Tracking
Make track no
Customizable log interval
Track formats
Geotagging
Fast POI buttons
Upload GPX to OSM
Monitoring
Monitoring no
Show current track
Open existing track
Altitude diagram
Show POD value
Satellite view
Show live NMEA data
Show speed
Send current position
Editing

(Not set)

Rendering

(Not set)

Accessibility

(Not set)

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

TravelingSalesman-Logo75px.png 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

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

OSMNavigation

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]