This is a server-based chart plotter navigation software for pleasure crafts, motorhomes, and off-road cars. The application can be placed on a weak server such as RaspberryPi, NAS or router and used on full clients such as tablets and smartphones. Only browser need.
Technically this an online tiles map viewer. With GaladrielCache -- this an offline viewer with tile grabbing features. It is assumed that the application is used in the onboard local area network of the boat or car. The author uses it from the wi-fi router/GSM modem under OpenWRT as a server on his sailboat "Galadriel".
The author is not responsible for the consequences of using the GaladrielMap for navigation. It is not guaranteed that any of the information on the screen is correct, including but not limited to spatial position, speed, depth, and direction of movement.
The GaladrielMap created with use a lot of famous projects, so don't forget to install dependenses.
- Online or offline user-defined maps
- Positioning with GNSS receivers
- Tracking
- Display routes and POIs files in gpx, kml and csv format
- Creating and edit a route localy and save it to the server in gpx format
- Exchange coordinates via clipboard
- Weather forecast from Thomas Krüger Weather Service
- Display AIS info
- Collision detection
- netAIS support
- A Man OverBoard feature
- Optimised for E-Ink screens Dashboard
- Control the GaladrielCache Loader
- English or some other languages interface, dependent of browser language settings
PHP7, Linux, OpenWRT, VenusOS. Modern browsers include mobile.
Full feature live demo. Sometimes there floating a virtual sailboat.
Unfortunately, the Oracle Inc. turned out to be a crook, so the demo does not work.
Available ready to use virtual machine disk image and Raspberry Pi bootable image. It's a fully configured Linux system with GaladrielMap, GaladrielCache, netAIS, gpsd, gpxlogger, etc. for test and builds own onboard server.
You must have a web server under Linux with web server and php <8 support. Just copy app, dependences and set paths.
Paths and other are set and describe in params.php
More detailed instructions are available in emergencykit/ directory.
All you need to install, including dependences, are in emergencykit/. See README.txt how to install. You may download full pack -- more 10MB, or without vector tiles support and screenshots pack -- less them 3MB.
- Leaflet < 1.8 in leaflet/ directory
- Coordinate Parser in coordinate-parserPATCHED/ directory
- L.TileLayer.Mercator as L.TileLayer.Mercator/src/L.TileLayer.Mercator.js
- Leaflet.Editable in Leaflet.Editable/ directory
- Leaflet.RotatedMarker as Leaflet.RotatedMarker/leaflet.rotatedMarker.js
- Leaflet Measure Path in leaflet-measure-path/ directory
- leaflet-sidebar-v2 in leaflet-sidebar-v2/ directory
- mapbox-gl-js in mapbox-gl-js/dist/ directory
- mapbox-gl-leaflet as mapbox-gl-leaflet/leaflet-mapbox-gl.js
- supercluster as supercluster/dist/supercluster.js
- gpsdPROXY in gpsdPROXY/ directory
- polycolorRenderer in polycolor/ directory
- value2color in value2color/ directory
- long-press-event as long-press-event/dist/long-press-event.min.js
Create a local copy of dependences and/or edit index.php
- leaflet-omnivore for leaflet-omnivore. This patched to show markers, non well-formed gpx files and more.
- Metrize Icons by Alessio Atzeni for icons.
- Typicons by Stephen Hutchings for icons.
- Map Icons Collection for icons.
- On/Off FlipSwitch
- leaflet-tracksymbol which became the basis for display AIS data
- openmaptiles for Open Font Glyphs for GL Styles
- GitHub MAPBOX project for navigation ui resources
- OpenMapTiles for Mapbox GL basemap style
- leaflet-ais-tracksymbol for ideas
- Mastiff to Norwegian localisation
The GaladrielMap applies OSM-style tiles map, both raster and vector. It can be one OSM- or mapbox-like on-line map or with GaladrielCache any number of stacked maps, online and offline.
The map source is set in the params.php, and if it is GaladrielCache (default), you have available any number of user-defined map sources. How to define a new map -- described in GaladrielCache project.
At least, it include
Open Sea Map
Open Topo Map
maps.
The right way is to select a little lot of favourite maps (by long-click or right-swap) from all maps in map list. This makes it easy to switch between them.
GaladrielMap has limited support the Mapbox-style vector tiles maps. Mapbox style file must be placed on $mapSourcesDir
directory of the GaladrielCache with {mapname}.json name. (See GaladrielCache docs.) Sprites and glyphs you can find in styles/ directory.
GaladrielMap gets realtime spatial data and other info via gpsd. Usually enough plug a GNSS receiver to the server.
How to install and configure gpsd see gpsd pages.
Also, GaladrielMap can get data from VenusOS or Signal K - localy or via LAN. If GaladrielMap don't find gpsd, it it tries to discover Signal K and then VenusOS on LAN and takes the data from there.
Map always sets to current position. This behavior can be temporarily disabled on the menu. Following the cursor is disabled if or menu are open.
The position cursor indicates heading, and velocity vector indicates course, if both parameters are available from a data source. If there is one, then they show the same, and what exactly is indicated on the dashboard.
GaladrielMap uses gpxlogger
app from the gpsd-clients packet to log track on your server. Control gpxlogger
are in tab.
GaladrielMap displays the current track as a not well-formed gpx file. Other tracks may be displayed simultaneously.
Run chkGPXfiles.php in cli to repair non-well-formed gpx files for other applications.
Tracks placed in tracks directory on the server as it described in params.php.
Installation and configuring the gpxlogger
describe in gpsd documentation. You may use any other server-side logger for tracking in gpx format, set up it in params.php. If not - the logged track will still be updated if its name will be recognized as "current track" (see params.php).
GaladrielMap display tracks, routes and PointOfInterest on gpx, kml and csv formats. Place you routes and POIs files to route directory on the server as it directory described in params.php. Open tab.
If there is depth in the gpx track, it can be shown by color along line (see params.php).
Comma-Separated Values text file - the simplest way of cooking personal POI for your trip. Only text editor needed. But, to avoid mistakes, any spreadsheet recommended.
The first line in the CSV file must be field names. Good choice is a "number","name","description","type","link","latitude","longitude"
as the gpsbabel doc recommends.
Latitude and longitude may be in degrees, minutes and seconds, 61°04.7'N for example, or in decimal degrees.
A real example of using CSV to store information about ports and piers on Lake Saimaa in Finland - SaimaaPOI. File with geospatial photolinks on CSV format - is a good example too.
Place your CSV to route directory on the server as it directory described in params.php. Avoid setting file names in route same as names in tracks directory.
Open tab to navigational plotting feature. You can create and edit a route and waypoints on the local device, and/or save it to server to route directory.
This feature includes a base gpx route editing tool. You can edit any gpx route from the server in the same way as local route, and save it under the same or new name. Displaying edited routes update automatically on all connected devices.
Good case for use -- navigational plotting by the navigator in a dry and warm booth for the steersman on the rain and wind.
But it is only a base gpx route editor. Gpx <metadata> not supported, and point <extensions> (GARMIN like it) not supported too. Be careful to edit and save exists gpx.
Also be careful with danger of unauthorized edit routes from guests and childrens. Disable the auto-update routes via params.php.
For route planning, it is useful to find coordinates by geographical name or postal address, if there is an Internet connection, of course. And vice versa -- getting the nearest address for the screen centre. Use the input field for it.
To get current position to clipboard to share it via other apps - tap on Position on tab.
Also, tap on POI name on point's popup to get a position of this point.
To get coordinates of any point - open tab. Coordinates of crosshair will be in the input text field.
To fly map by coordinates type they of any format to this field and press button.
If there is an Internet connection you can get the weather forecast from Thomas Krüger Weather Service.
The GaladrielMap displayed AIS data via gpsdPROXY from gpsd or directly from Signal K. The gpsd may need additional set up to get AIS flow from AIC transmitters, but usually no need for additional set up to get data from the AIS receiver.
Displaying AIS data is disabled by default, so you must enable it by uncomment string with $aisServerURI variable in params.php. To temporarily disable displaying AIS data use switch in menu.
As displaying AIS data from gpsd need gpsdPROXY, you MUST use gpsdPROXY as position data service. Set up $gpsdHost and $gpsdPort variables in params.php to this.
The GaladrielMap shows information on possible collisions calculated by the gpsdPROXY. Potentially dangerous objects are highlighted and their direction is indicated by an arrow.
Do not rely too much on the collision detection system. Remember that no information issued or not issued by the collision detection system can be the basis for the actions or inaction of the navigator. Be careful.
The netAIS is the local service to exchange position information inside of a private group via internet.
GaladrielMap displayed full netAIS info, include text messages.
For example, three members of the same private group see each other on its screens.
Sets marker, stretches the line to and indicates distance and direction to MOB just by open tab.
Tap to opens MOB tab and start MOB mode. Track logging turned on, positions the MOB markers saved to the server. You may add new markers and dragging markers to a new position. Tap to marker to select it for stretches the direction line to. Tap on indication of MOB position copies it to clipboard.
MOB information spreading to all connected devices and may edit from any of this.
To finalize MOB mode tap to the dot left of the "Terminate" button first.
dashboard.php - the separate app to display some instruments attached to gpsd, on weak (and/or old) devices, such as e-ink readers, for example.
Instruments from Signal K not displayed.
Live demo
Unfortunately, the Oracle Inc. turned out to be a crook, so the demo does not work.
The screen image optimized to different screen resolutions and should look good from little to big screens. Displayed velocity, depth and true and magnetic heading. You can use two or more devices to display different info. At the border of the screen is always visible the mark with general direction.
The Dashboard allows you to set a visual and sound signal for dangerous events, such as shallow or speed.
Set up your browser to allow sound signal.
The signal settings are local for every showing device, and it is triggered only if the device work. Be careful!
If the course alarm is set, the set and current direction are displayed at the border of the screen as triangle and dash marks:
When deviating from the course the visual and sound alarm fired:
The presence of the touch screen is assumed, and mode is switched by a tap to the next data type button on the screen.
For some devices with JavaScript you may set up some hardware keys to switch mode, magnetic or true course and opening alarm menu. Use button on bottom of alarm menu to set up it. Default keys is:
- ArrowDown for next mode
- ArrowUp for previous mode
- AltRight for alarm menu
- KeyM for magnetic course switch
No fanciful javascript, no fanciful css.
Highly recommended to use gpsdPROXY if you want to see data other them velocity.
Choose a region by specifying tile numbers by hand in the panel or by tap on tile number on the map. After tap the Ok button to start loader.
All displayed maps will be loaded from the current zoom to the maximum zoom. The loader runs on the server, so it autonomous and robust. Loader restart after server reboot and it will work until it finishes.
For see of loaded tiles use coverage switch.
On powerful computers (Raspbery Pi, yes) on OpenWRT installation and startup of GaladrielMap are performed in the same way as on common Linux.
On routers usually need custom firmware if the capacity of the built-in drive is insufficient. For example, MT7620A based router OpenWRT firmware for run GaladrielMap.
There is only one full user in the OpenWRT - root. But if you (at least) use php-fpm, the web server is running from nobody by default. Therefore, some functions of GaladrielMap, such as fail-safe, will not work. Is necessary that the web server also works from root.
For this:
Edit /etc/php7-fpm.d/www.conf
:
;user = nobody
user = root
Edit /etc/init.d/php7-fpm
:
#PROG="/usr/bin/php-fpm"
PROG="/usr/bin/php-fpm -R"
Reboot
The GaladrielMap mostly can work in VenusOS v2.80~38 or above. Or get data from it in LAN. To do this, you need:
- install php-cli. Run in ssh console:
opkg update
opkg install php-cli
- enable "MQTT on LAN" feature. On VenusOS web remote console go Settings -> Services -> MQTT on LAN (SSL) and Enable.
- Have enough i-nodes on SD card for tiles.
- VenusOS does not provide depth and AIS services.
- VenusOS does not provide track log service.
- VenusOS does not provide Tor service, so to avoid the tile loader ban and for netAIS raise the Tor on other computer.
- The data provided by VenusOS are not reliable enough, so be careful.
- It may be necessary to configure the system as described for OpenWRT.
The forum will be more lively if you make a donation at ЮMoney
Available Raspberry Pi bootable image with Raspbian, OpenWRT or VenusOS. Image include GaladrielMap with GaladrielCache and netAIS (except VenusOS, this not have workable netAIS) and ready to use. You can also order burn image to SD card the capacity you need. Contact galadrielmap@gmail.com
It is possible to order WiFi router/internet access point with OpenWRT (such as MT7620A based router or other) with fully configured and ready to use GaladrielMap. Contact galadrielmap@gmail.com