Traveling salesman

From OpenStreetMap Wiki
(Redirected from Traveling Salesman)
Jump to: navigation, search
Available languages — Traveling salesman
· Afrikaans · Alemannisch · aragonés · asturianu · Aymar aru · azərbaycanca · Bahasa Indonesia · Bahasa Melayu · bamanankan · Bân-lâm-gú · Basa Jawa · Basa Sunda · Baso Minangkabau · bosanski · brezhoneg · català · čeština · corsu · dansk · Deutsch · eesti · English · español · Esperanto · estremeñu · euskara · français · Frysk · Gaeilge · Gàidhlig · galego · Hausa · hrvatski · Igbo · interlingua · Interlingue · isiXhosa · isiZulu · íslenska · italiano · Kiswahili · Kreyòl ayisyen · kréyòl gwadloupéyen · kurdî · Latina · latviešu · Lëtzebuergesch · lietuvių · Limburgs · magyar · Malagasy · Malti · Nederlands · Nedersaksies · norsk · norsk nynorsk · occitan · Oromoo · oʻzbekcha/ўзбекча · Plattdüütsch · polski · português · română · shqip · slovenčina · slovenščina · Soomaaliga · suomi · svenska · Tagalog · Tiếng Việt · Türkçe · Türkmençe · Vahcuengh · vèneto · walon · Wolof · Yorùbá · Zazaki · isiZulu · српски / srpski · авар · Аҧсшәа · башҡортса · беларуская · български · қазақша · Кыргызча · македонски · монгол · русский · тоҷикӣ · українська · Ελληνικά · Հայերեն · ქართული · नेपाली · भोजपुरी · मराठी · संस्कृतम् · हिन्दी · অসমীয়া · বাংলা · ਪੰਜਾਬੀ · ગુજરાતી · ଓଡ଼ିଆ · தமிழ் · తెలుగు · ಕನ್ನಡ · മലയാളം · සිංහල · བོད་ཡིག · ไทย · မြန်မာဘာသာ · ລາວ · ភាសាខ្មែរ · ⵜⴰⵎⴰⵣⵉⵖⵜ · አማርኛ · 한국어 · 日本語 · 中文(简体)‎ · 中文(繁體)‎ · 吴语 · 粵語 · ייִדיש · עברית · اردو · العربية · پښتو · سنڌي · فارسی · ދިވެހިބަސް
Traveling Salesman
Screenshot of Traveling Salesman
Author: Marcus Wolschon
License: GNU General Public License
Platforms: Windows, Windows 2000, Windows XP, and Linux
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

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-planing -software for OpenStreetMap.

It contains plugins for

  • finding routes,
  • different metrics, (shortest, fastest, most fuel-efficient, scenic,...)
  • gps-handling,
  • giving driving-instructions,
  • finding addresses,
  • realtime 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 interchangable.

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 inclusing 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 [optiona] [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]