Traveling salesman

From OpenStreetMap Wiki
(Redirected from TravelingSalesman)
Jump to: navigation, search
Available languages — Traveling salesman
Afrikaans Alemannisch aragonés asturianu azərbaycanca Bahasa Indonesia Bahasa Melayu Bân-lâm-gú Basa Jawa Baso Minangkabau bosanski brezhoneg català čeština 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î latviešu Lëtzebuergesch lietuvių magyar Malagasy Malti Nederlands Nedersaksies norsk norsk nynorsk occitan Oromoo oʻzbekcha/ўзбекча Plattdüütsch polski português português do Brasil română shqip slovenčina slovenščina Soomaaliga suomi svenska Tiếng Việt Türkçe Vahcuengh vèneto Wolof Yorùbá Zazaki српски / 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]