Gosmore

From OpenStreetMap Wiki
Jump to navigation Jump to search
Gosmore
Gosmore2010.png
Author: Nic Roets
License: BSD
Platforms: Windows, Android, Linux, Unix, Maemo, Windows Mobile, and Windows CE
Status: Unmaintained
Version: - (2011-11-22)
Languages: English and German
Website: http://sourceforge.net/projects/gosmore/
Source code: https://svn.openstreetmap.org/applications/rendering/gosmore/
Programming language: C++

Gosmore is a router and viewer of OSM XML data such as the whole planet.osm or other osm files from Geofabrik (see downloads).

Features

Gosmore on Android
  • A 2D map viewing window (Mercator projection), as well as a 3D bird's eye view.
  • Incremental search of all tags. Results are ordered from nearest to farthest.
  • Routing with basic Relation:restriction support.
  • Obtain the current location from a GPS receiver (via gpsd using Linux).
  • The ability to add POI's and trace ways which get saved to a .osm format file ready for import into JOSM
  • The ability to automatically switch maps on-the-fly, so you can access the whole planet.

Downloading and running

Android

The old version is on the Android Market. The new version renders with casing (qrcode).

You can also compile it from source. You will need the SDK, the NDK and Eclipse. Run ndk-build in the jni directory, then create a project with Eclipse and build.

Linux, FreeBSD, MacOSX

Note: source install will not always be build-able so use a binary from http://sourceforge.net/projects/gosmore/

### Example for Ubuntu or Debian ###
sudo apt-get install libxml2-dev libgtk2.0-dev g++ make subversion libcurl4-gnutls-dev libgps-dev
svn co https://svn.openstreetmap.org/applications/rendering/gosmore/
cd gosmore
./configure
make
sudo make install
### Example for Fedora 13 ###
su -c "yum install libxml2-devel gtk2-devel gcc-c++ make subversion libcurl-devel gpsd-devel"
svn co https://svn.openstreetmap.org/applications/rendering/gosmore/
cd gosmore
./configure
make
sudo make install

Alternatively install the debian package that may be slightly out of date.

On FreeBSD and MacOSX, you will need to use GNU Make (gmake) to build as the Makefile is in a GNU Make format, rather than the traditional BSD make.

On MacOSX, you will have to install X11, the developer tools and maybe additional packages that are not listed here but are fairly standard when compiling stuff. Feel free to list them if you find any that are not listed here.

After these steps complete, gosmore should appear on your menus. Gosmore will run fairly responsively on a 256 MB machine.

After finding a city or location you are interested in, choose the 'Update Map' function (see the Auto Pak file section below). Downloaded files will be stored in $HOME/.gosmore/

Headless operation

If you are building gosmore on a machine that does not have X11 installed, uncomment the following line in the Makefile:

#CFLAGS += -DHEADLESS

by removing the # at the beginning of the line. If you fail to do this, gosmore will complain about not being able to open a display and fail to run.

Building your own PAK file

Alternatively, build your own pak file (See the Gosmore/RebuildGuide). Then the "make install" step is not required:

bzcat ...osm.bz2 | ./gosmore rebuild 

This last step takes typically 5 hours for a current planet file on a dual core 64 bit machine with 2GB RAM and requires close to 20GB of harddisk space, but using country extracts is strongly advised.

Auto Pak file

During "make install", the default.pak file will have been placed in your resource directory (usually /usr/share/gosmore). Then you must make sure that the current directory does not contain gosmore.pak. Use the 'Update Map' function to download the relevant bounding box. As you browse the map, the relevant map will be swapped in.

Windows CE / Windows Mobile

(maps are limited to 400 MB each)

Gosmore on WinCE in Berlin
Gosmore on WinCE
  • Go to https://sourceforge.net/projects/gosmore/files/ and download "gosmoreWinMob.zip"
  • Unzip the file ("arm-mingw32ce-gosmore.exe") on an SD card. If you want your gpx file and any log file on your SD card and not in My Documents, download the empty "gosmore.opt" file as well.
  • Download a prebuilt bbox or extract or build one yourself using Linux.
  • Put it in your device and execute "arm-mingw32ce-gosmore.exe". You may need to rename it to mobilenavigator.exe. See [1], [2] and [3]
  • Auto Pak files are also supported, but you need to manually download, unzip and rename them and default.pak must be in the current directory.
  • Note: for debugging purposes on Windows Mobile gosmore writes a file called gosmore.log.txt, which is written to the folder where gosmore.opt is located, too. On each start of Gosmore, the new logging text is appended, so this file grows from start to start. If you don't need logging information, delete this file after a while.

Alternatively build it with cegcc. check out the files as described above and (These instructions are for Ubuntu Lucid):

Create a temporary folder.

  1. mkdir ~/temp_gosmore
  2. cd ~/temp_gosmore

Download and install CeGCC.

  1. wget http://prdownloads.sourceforge.net/project/cegcc/cegcc/0.59.1/mingw32ce-0.59.1.tar.bz2
  2. tar xvjf mingw32ce-0.59.1.tar.bz2
  3. sudo cp -r ./opt/mingw32ce /opt

Download and extract required 32 bit libraries (required for 64 bit only).

  1. wget http://mirrors.kernel.org/ubuntu/pool/main/m/mpfr/libmpfr1ldbl_2.4.2-3ubuntu1_i386.deb
  2. wget http://mirrors.kernel.org/ubuntu/pool/main/g/gmp/libgmp3c2_4.3.2+dfsg-1ubuntu1_i386.deb
  3. dpkg -x libmpfr1ldbl_2.4.2-3ubuntu1_i386.deb . (don't forget the '.' at the end)
  4. dpkg -x libgmp3c2_4.3.2+dfsg-1ubuntu1_i386.deb . (don't forget the '.' at the end)
  5. sudo cp usr/lib/* /usr/lib32/

Remove the temp directory

  1. cd ../
  2. rm -rf temp_gosmore

Add libraries to $PATH

  1. export PATH=/opt/mingw32ce/bin/:$PATH
  2. export LD_LIBRARY_PATH=/usr/lib32:/usr/lib:$LD_LIBRARY_PATH (required for 64 bit only).

cd to location of source files then

  1. make arm-mingw32ce-gosmore.exe

Windows

  • Run the installer from the same site as above.
  • Run Gosmore and find the city you are interested in. Select 'O' and then 'Update Map'. After downloading and unzipping is complete, restart the application.
  • Alternatively, download a prebuilt rectangle or extract or build one yourself using Linux, as rebuilding under Windows is not supported[1].
  • Or you can use the rebuild command as described above. You can even drag and drop extracts onto gosmore.exe.
  • No registry settings are used. So you can have multiple installations of the software.
  • Alternatively compile the Windows binary

Maemo

maemo devices from Nokia: See Gosmore for Maemo (2013-11-16: dead?!, last active in 2011)

Sound files

Please add more languages!

If you want louder sound files for the turn by turn instructions you can get them here. Even in different languages.

How to install

Just extract the archive (for Windows use 7zip) and copy the files to the folder where the Gosmore program resides.

User Interface

The main window consists of

  • the buttons: Options, + zoom in / increase, - zoom out / decrease and 3D.
  • the search box
  • The main window with 4 modes:
    • Map Click or drag to pan.
    • Search Results. Direction, distance, type and names are displayed. Click to select.
    • Options for selecting icon types, detail level and routing settings. Drag to see all of them. Click to select. See Gosmore/Translations Note that not all options are supported on all platforms.
    • Add Object Type List. Select the object you want to add.
    • Add Object Name dialog. Set the name.
  • the location bar (GTK/Linux only) Copy and paste to / from JOSM or the www.openstreetmap.org permalinks.

The GTK version will look for way points in any selected text in any other application (clipboard mechanism). For example, you can select geocache log and click on the gosmore map window to see where the points are.

When you exit Gosmore it will also save your options and location to gosmore.opt. This file will normally be located in your home directory. Under Windows and Windows Mobile it will be stored in '\My Documents' unless the file was found on in the same directory as gosmore.exe at startup. So most people place an empty gosmore.opt file on their SD card.

At exit it will also create 'YYMMDD-HHMMSS-Vehicle.osm' and 'YYMMDD-HHMMSS.gpx' files that you can open with JOSM:

  1. Download data to the same layer.
  2. Edit. To find the pending changes search for 'modified'.
  3. Upload
  • Changing the CommPort and BaudRate settings (Windows Mobile only) requires restarting the application.
  • Activate ValidateMode to see unnamed roads.
  • Activate FullScreen and restart for more screen space.
  • Set Layout (Windows / Windows Mobile only) to 1 to hide the top bar. Set it to 2 on displays that are too narrow for the top bar (width less than 300 pixels).
  • Some options like ViewInOSM and UpdateMap is only supported under Linux / Gnome, while others like ZoomIn/OutKey is only supported under Windows or Windows CE.
  • LoadGPX is not implemented.
  • Activate the 'Exit' option to close the application and write the GPX file, the OSM file and the options.

Cgi Routing Interface

Set the QUERY_STRING environment variable to e.g. "flat=-33.928889&flon=18.417222&tlat=-25.778618&tlon=28.290682&fast=0&v=motorcar" and run the executable. The parameters must be in this exact order. You must use the country decimal separator from your PC e.g. in Germany use a comma in place of a point or change your decimal separator for the shell.

Example for Ubuntu/Linux with a Germany Map:

shell> QUERY_STRING="flat=52.616870&flon=13.228430&tlat=52.601130&tlon=13.245730&fast=0&v=motorcar"
shell> export QUERY_STRING
shell> export LC_NUMERIC en_US
shell> gosmore

Content-Type: text/plain

52.617242,13.227067,J,(unknown-style),84,Zeisgendorfer Weg
52.616851,13.228609,J,(unknown-style),81,Zeisgendorfer Weg
.
.
52.601570,13.243311,J,(unknown-style),5,Heiligenseestraße
52.601548,13.243454,J,(unknown-style),5,Heiligenseestraße


Gosmore will produce one line for each node. The first 2 fields are the latitude and longitude. The third field is the junction type : Lower case when only 2 segments connect to that node (trivial junction), upper case otherwise. 't' for traffic_signals, 'm' for mini_roundabout and 'j' otherwise. This field can also contain a second letter 'r', indicating a roundabout.

Fourth field is 'v' of the way. Fifth field is the estimated number of seconds remaining. The sixth field is the name (if present, otherwise ref).

If no route was found, the output will start with a 'jump' line followed by the best incomplete route.

The complete routing stack is described in the Osm.org Routing Demo documentation.

Devices

Device ComPort BaudRate Notes Date
Asus MyPal A636N 5 4800 Works well. Also works well with a virtual COM port driver between the real COM port and gosmore. 2009-04-20
Becker Traffic Assist (old version with Serial Number 7914....) 1 9600 Works 2009-01-29
Binatone Carrera X350 7 38400 Works well. Problem: No search window 2008-08-22
CarTrek 600 7 57600 Works.[2] 2009-04-10
Connex (GPC35Js) 7 57600 Works.[3] 2009-08-01
Easy Touch ET 907 1 4800 seems to work ok. 2009-01-09
ETEN M500 (w/BT GPS) 7 4800 Works well, but some of the dialogs don't work very well in a portrait-orientated screen 2008-07-26
F & H N30 (Foehn & Hirsch N30) 7 9600 Working. Need to adjust parameters for button size & debounce before options screen usable. 2010-05-31
Falk M-Series (M4 2nd Ed.) 2 4800 Works well (even works while the Falk-software announces the street-navigation) but often crashes after standby-mode. 2009-01-28
Falk N240L 3 57600 Works well 2009-03-26
Fujitsu Siemens Pocket Loox N100 4 9600 seems to work ok; Problem: Full screen mode doesn't work. 2009-03-12
Hakkapeliitta GPS 1 38400 For info on the device, see the web site [4] 2008-11-23
HP iPaq hw6915 7 38400 Works well. 2008-08-22
HTC Hero Android2.1 - - Seems to work 2011-03-05
HTC Kaiser/P4550/TyTN II 4 4800 Seems to work fine, though some dialogues don't work that well in portrait orientation, and switching orientations once the program is already open (by sliding the keyboard) appears not to be supported. 2008-09-09
HTC P3600 9 9600 Taskbar gets a little bit in the way 2008-06-28
JNC 578 7 38400 Works well. 2008-08-20
Lark 35.3 (w/SiRFstar III) 1 9600 Works fine 2008-08-08
Medion MD 97130 (E3230) 2 57600 Works well. 2011-02-09
Medion MD 97430 (E4430) 2 57600 Works well. 2010-02-13
Medion MD 96700 1 4800 seems to work ok. navigation ok. Search ok. Quick options ok. Saving .gpx ok. After closing gosmore one time you have to reboot the PDA or you will get an mmap error next time you try to start gosmore. 2008-12-20
Medion MD 96860 / E3212 2 4800 Works fine 2009-09-15
Medion PNA240 2 4800 Works well. 2008-11-15
Mio C230 (running MioPocket) 2 4800 Works well. 2008-08-20
Mio 269+ 4 4800 Works well. Announcements very quietly! 2009-01-24
Mio Moov 200 2 57600 Works well. Use only the builtin keyboard (Keyboard=0) 2010-02-19
Mio Moov M305 2 57600 Works well. 2009-09-24
Mio P350 4 4800 Works well. 2008-09-03
Mio A510 Digiwalker / PDA with WM 5 2 57600 Seems to work ok 2008-09-14
MyRoad 4308T 2 38400 Works fine 2008-07-15
Navgear StreetMate GP-35 7 4800 Works, but very slow and some bugs in GUI. 2011-06-20
Navigon Transonic 6000T 2 4800 Works well. Apparently the same hardware as Medion 510T, but I haven't verified this. 2008-09-02
Navigon Transonic 7000 2 4800 Works well. A bit faster than on the Transonic 6000T. And it has a bigger screen. 2012-09-18
Navigon 5110 ? ? Only works when .pak files of 23MB and smaller and only after reducing the storage memory. 2008-08-31
NDrive g280 1 19200 Works ok. 2009-08-04
Navman S200 Platinum 2 4800 Works well. 2010-05-30
Phonix 5 4800 Works perfectly 2009-08-14
Photonav 7 38400 Seems to work ok. 2009-09-12
Qtek 2020i, Windows Mobile 2003 6 4800 Works. 2009-09-19
TGPS 374 1 0 Works perfectly 2010-02-17
VDO Dayton MS2000 1 9600 Works perfectly. The application to replace on the SD is "AutoUpgrade.exe". 2008-08-20
XRoad v4150 5 9600 Use SurfTech first to ensure that GPS is talking NMEA [5] 2008-08-20

Tips and tricks

  • Type the name of an item to the search in the line edit.
  • To find nearby amenities enter the relevant tag value, e.g. fuel.
  • To find the name of the area you are looking at, try to search for suburb, city or village.
  • To see all the tags for an object, zoom in very close.
  • Use the mouse wheel to zoom in and out
  • Use the left mouse button to pan the map. Click above the center of the map to pan upwards, click below the center of the map to pan downwards and vice versa
  • Linux / GTK only : Mark the starting point of the desired route with the middle mouse button and the end point with the right mouse button. Gosmore will paint the route into the map
  • Set the render quality to lowest for a more responsive experience.
  • For optimal battery life, only 'Follow' when you are looking at the display. A simple tap on the map will cancel the 'Follow' function. Even more power can be saved by selecting DisplayOff, turning the device into a dumb logger.
  • If you have an already extracted OSM file, e.g. as output by the planetosm-excerpt-area.pl script, you can feed it into gosmore as well:
cat MyArea.osm | ./gosmore rebuild
  • You can create a smaller pak file by specifying a cropping bounding box during a second pass. Even if the bounding box is the whole planet, the resultant file will have a better structure, e.g.
 mv gosmore.pak master.pak
 bzcat planet...osm.bz2 | ./gosmore rebuild -83 -179 83 179

Bugs

In order of importance:

  • Routing is not calibrated. There are a number of special features, like avoidance of major intersections and turning over oncoming traffic, but the constants can be improved.
  • Turn restrictions with complex vias are ignored.
  • Verbal instructions do not work well on motorways.
  • A number of important platforms aren't supported (OpenTom, Symbian, iphone etc).
  • 32 bit machines can create and use only pak files smaller than 2GB. Rebuild gives segmentation fault on computers with less than 1GB of virtual memory.
  • Pak file cannot be dynamically updated e.g. osmosis. However, since the objects we map (roads etc) change infrequently and mappers take very long to resurvey existing data, you will most likely only find the spots where the pak file is out of date if actively go looking for them.
  • Pak file cannot be moved to a machine with a different endianness.
  • If double decker bridges are drawn with 2 or more nodes on exactly the same latitude and longitude, gosmore may make incorrect routing decisions. (It can be solved at the cost of a 10% larger pak file).
  • No way of completely disconnecting from GPS com port. Causes battery drain when internal GPS is activated by just connecting to the proper com port (on WM5 at least).
  • When in current direction = up (north upwards=0) mode, stopping at a crossing causes slight precision improvements due to gps averaging which can shift position slightly in any (random) direction, which causes the map to rotate wildly, disorientating the driver (and probably giving wrong instructions if the route is recalculated). Probably a longer (eg 10 m distance, not time) average period should be used to determine direction before rotating the map.

Tickets for Gosmore in Trac

Internals

Gosmore makes extensive use of sorted arrays, integers and fixed point numbers. See the current file format [6]

The source code has a low complexity (measured by Halstead Metric or SLOC), which may help to reduce the number of bugs. Also see Gosmore/Hacking

Comparable software

Navit is a much larger project. Its larger feature set may appeal to some users and developers. But complexity can also lead to problems like 'dependency hell', 'deep bugs' and a 'steeper learning curve'. Gosmore is able to route farther and faster, esp. devices with less RAMcitation needed. It also allows searching on a larger part of the datasetcitation needed and its Public Domain License may be preferable for certain applications.

Notes & references

  1. https://forum.openstreetmap.org/viewtopic.php?id=1478
  2. Apply 'Windows CE' instructions from this page. Get a SD card; create a '/MobileNavigator' directory; unzip gosm_arm.zip in that directory; rename 'gos_arm.exe' into 'MobileNavigator.exe' (the CarTrek-600 tries to execute this program on the flash card); put a gosmore.pak file (map found in a .zip) in the same directory; install the card; boot. To get the GPS location, you have to set ComPort=7 and BaudRate=57600, exit and restart as indicated. A user manual would be welcome. Interface is +/-/o; 'o' is for 'next Option' or Menu if 'QuickOption' is set to '1'.
  3. Same note as CarTrek 600. as /MobileNavigator/MobileNavigator.exe on the SD card.