Export från Marinwiki till OpenCPN

Betyg: Ej betygsatt ännu

Blev inspirerad av Peter Jansson artikel om Garmin HomePort så jag skrev en liknande om OpenCPN.

Mål

Målet med denna guide är att överföra alla platser från Marinwiki till OpenCPN. Som överkurs gör vi detta automatiserat i Linuxmiljö så att platserna alltid är uppdaterade. Exempel på hur det ser ut ser du nedan. Alla blå ankare är platser från Marinwiki.

Klickar man på ett ankare så får man upp en ruta med lite information och en länk till Marinwiki.


Tillvägagångssätt

Det finns flera olika sätt att göra detta på. Dessa beskrivs här.

1. Manuellt skapa GPX-fil och importera i CPN

2. Manuellt skapa GPX-fil och importera i CPN som tillfälligt Lager

3. Manuellt skapa GPX-fil och installera som Lager i CPN

4. Automatiskt skapa GPX-filer och installera som Lager i CPN

För att förstå skillnaden måste vi börja med att reda ut vad ett lager är. Ett lager är en samling Waypoints eller Rutter som ligger i en GPX-fil. Man kan inte ändra punkter som ligger i ett lager varken medvetet eller omedvetet. Man kan hantera waypoints i ett lager i grupp, till exempel att visa eller dölja dem på sjökortet. Man kan läsa mer om lager i manualen till OpenCPN. Dialogrutan som hanterar lager ser ut så här:

Om man använder "Importera GPX" så hamnar alla punkter bland Waypoints. Man kan då ändra dem och lägga till information och så. Men nackdelen är att man inte kan separera dem från andra punkter. För externa källor, som till exempel Marinwiki är det bra att använda fliken "Lager" istället.

En nackdel i OpenCPN är att man via gränssnittet bara kan skapa Temporära lager. Lager du skapar här kommer alltså att vara borta nästa gång du startar OpenCPN.

Att manuellt skapa en GPX från Marinwiki och importera antingen som Waypoints beskriver vi inte här, utan vi börjar med alternativ 3 i listan; att skapa en GPX och lägga den som ett lager i OpenCPN.

Skapa ett permanent lager

Det vi vill göra är att skapa permanenta lager, men det gör man inte i OpenCPN utan genom att placera GPX-filerna i rätt katalog på datorn där OpenCPN sedan läser dem. Var den katalogen finns kan man se om man klickar på i Rutan längst ned står något liknande:

Config file location: /home/rejas/.opencpn/opencpn.conf

I mitt fall är katalogen /home/rejas/.opencpn. Det ser lite olika ut i olika operativsystem. I den katalogen skapar man en katalog som skall heta "layers". Man kan även skapa underkataloger om man har många lager. Varje .gpx-fil som man lägger här blir ett lager i OpenCPN.

Så skapar man en GPX-fil från Marinwiki och kopierar den till katalogen enligt ovan blir den ett lager. Man måste starta om OpenCPN för att den skall läsa in filen.

Automatisera

Datorer är fantastiskt bra på att automatisera saker. Så klart även detta. Det jag skriver här fungerar i Linux. Någon annan kanske kan komplettera med hur man gör i Windows eller Mac.

Detta lilla skript bör fungera på de flesta Linux-miljöer och lägger upp de olika platstyperna som olika lager i OpenCPN.

#!/bin/bash
# Denna skall normalt vara korrekt
OCPN_LAYER_FOLDER=$HOME/.opencpn/layers

mkdir -p $OCPN_LAYER_FOLDER

#Test for curl
if [ -x "`which curl`" ]; then
        FC="curl -s"
elif [ -x "`which wget`" ]; then
        FC="wget -q -O-"
else
        echo "Kan inte hämta url:er. Installera curl eller wget. Eller modifiera skriptet :-)";
fi

$FC 'http://marinwiki.se/gpx.php?gpxtype=std&limit_type=1&types%5B%5D=1' > $OCPN_LAYER_FOLDER/marinwiki_naturhamnar.gpx
$FC 'http://marinwiki.se/gpx.php?gpxtype=std&limit_type=1&types%5B%5D=2' > $OCPN_LAYER_FOLDER/marinwiki_gästhamnar.gpx
$FC 'http://marinwiki.se/gpx.php?gpxtype=std&limit_type=1&types%5B%5D=3' > $OCPN_LAYER_FOLDER/marinwiki_ankringsplatser.gpx
$FC 'http://marinwiki.se/gpx.php?gpxtype=std&limit_type=1&types%5B%5D=4' > $OCPN_LAYER_FOLDER/marinwiki_klubbhamnar.gpx
$FC 'http://marinwiki.se/gpx.php?gpxtype=std&limit_type=1&types%5B%5D=7' > $OCPN_LAYER_FOLDER/marinwiki_serveringar.gpx
$FC 'http://marinwiki.se/gpx.php?gpxtype=std&limit_type=1&types%5B%5D=14' > $OCPN_LAYER_FOLDER/marinwiki_sevärdheter_upplevelser.gpx
$FC 'http://marinwiki.se/gpx.php?gpxtype=std&limit_type=1&types%5B%5D=0' > $OCPN_LAYER_FOLDER/marinwiki_annat.gpx
$FC 'http://marinwiki.se/gpx.php?gpxtype=std&limit_type=1&types%5B%5D=8' > $OCPN_LAYER_FOLDER/marinwiki_proviantering.gpx
$FC 'http://marinwiki.se/gpx.php?gpxtype=std&limit_type=1&types%5B%5D=13' > $OCPN_LAYER_FOLDER/marinwiki_service.gpx
$FC 'http://marinwiki.se/gpx.php?gpxtype=std&limit_type=1&types%5B%5D=19' > $OCPN_LAYER_FOLDER/marinwiki_nöd_sjukvård.gpx

Spara filen och gör den körbar. Varje gång den exekveras uppdateras lagren i OpenCPN. Mycket smidigt för att hålla alla platser uppdaterade.

Efter det ser listan med Lager ut så här:


Här kan man då välja att visa eller dölja de olika platserna. Man kan också välja att dölja namnen på den på sjökortet vilket gör att det inte blir lika plottrigt. Knappen "Visa innehåll" gör att platserna syns även i listan "Waypoints".

Ha du tips och idéer så ändra denna fil eller kommentera här nedan! :-)