Hauptseite/Freietonne + ModTile unter Ubuntu
Aus FreieTonne-Wiki
Das Experiment - Zielstellung
Nachdem Kai Krueger seine Ubuntu-Pakete bereit gestellt hat, ist es kinderleicht, einen eigenen OSM-Datenbankserver aufzusetzen, und die eigene Slippy-Map mit selbstgerenderten Kacheln zu versorgen.
Diese Veröffentlichung war ein guter Anlaß für das nachfolgende Experiment, bei dem es darum ging, die FreieTonne auf einen Laptop zu installieren, und mit einem kompletten Kartensatz Europa zu bestücken. GPS-Navigation, Seezeichen, blaues Wasser usw. eingeschlossen.
Das Ergebnis? Es funktioniert ...
Leistungsumfang
- kompletter Kartensatz für das installierte Fahrgebiet bis max. gesamter Planet (hier Europa/ Afrika) steht offline zur Verfügung
- Kartenbilder werden on demand/ just in time gerendert, Gewässer werden blau eingefärbt
- Daten der FreieTonne werden dargestellt, können schnell aktualisiert werden
- Bluetooth-GPS ist eingebunden, Navigation funktioniert wie unter Windows/ Android/ iOS
- Tools der FT-Seekarte funktionieren wie gewohnt (noch nicht erledigt!!!)
Installation
Installiere Ubuntu 10.11 Desktop (10.04 geht auch)
Der Rechner sollte min 2 GB RAM und 200 GB Festplatte haben und nicht eben der langsamste sein. In meinem Falle ein ASUS eeePC 1000H. Nicht der langsamste bedeutet eben auch nicht, daß es der schnellst sein muß.
Als Basis installiere ich die Ubuntu-Desktop Version 11.10. Hier ist schon alles, was Kai Kruegers mod_tile später benötigt, enthalten.
Hardwareproblem eeePC 1000H - Absturz wg. wlan
Der eeePC 1000H von Asus (und nach meinen Recherchen im Netz auch andere eeePC's) stürzt im Batteriemodus gern mal mit einer satten Kernel-Panic ab. Dies ist auf das Powermanagement der wlan-Karte zurückzuführen. Also schalte ich das in der Datei /etc/network/if-pre-up/wlan-power (neu erstellt) ab:
#!/bin/sh /sbin/iwconfig wlan0 power off
Die Datei muß natürlich ausführbar sein.
Hardwareproblem eeePC 1000U - Kontrolle Lüfter um Strom zu sparen
Der eeePC 1000H benötigt nach meinen Erfahrungen in Mitteleuropa keinen Lüfter. Also versuche ich, die Drehzahlen und damit den Stromverbrauch gering zu halten.
apt-get install fancontrol pwmconfig in /etc/rc.local: /usr/sbin/fancontrol > /dev/null 2>&1 &
- Die nach jedem Suspend bzw. Hibernate nötige Authentifizierung ist lästig. Bei der Datenerfassung im Kanu auf einem fließenden Gewässer sogar fast schon gefährlich. Also schalten wir das ab. Dies ist aber Geschmacksache, muß also nicht sein.
apt-get remove gnome-screensaver
gxmessage-Nachrichten sind hübscher als xmessage
xmessage ist per default installiert, gxmessage sieht deutlich besser aus, also installieren wir es (fakultativ)
apt-get install gxmessage
Installiere Kai Krueger's Mod_Tile
Die Pakete von Kai Krüger enthalten alles, was man braucht, um einen eigenen Mapnik-/ Postgresql-Server aufzusetzen. Im Prinzip beantwortet man alle Fragen mit dem Standardwert. Lediglich bei der Frage nach den Nutzern, die Zugriff auf die DB haben sollen, trage ich außer "gis" noch "www-data" und "meinen_username" (jeweils mit Leerzeichen getrennt) mit ein.
ACHTUNG: Abfrage Zugriffsrechte nicht verpassen!
sudo add-apt-repository ppa:kakrueger/openstreetmap sudo apt-get update sudo apt-get install libapache2-mod-tile
Updates libaapache-mod-tile
Da hat sich wohl ein kleiner Fehler eingeschlichen. Es sollten vor dem update 2 Verweise gelöscht werden
mv /usr/share/mapnik-osm-data /usr/share/mapnik-osm-data.o mv /etc/mapnik-osm-data/world_boundaries /etc/mapnik-osm-data/world_boundaries.o
Testen ob die Installaton OK (Kommentar FrRainer)
Ich habe beim Importieren der herunter geladenen Karten Probleme bekommen. Es waren Authorisations-Probleme. Dies kann gestest werden:
psql -l
Wenn alles OK erscheint eine Liste der Datenbanken, dann einfach q eingeben und alles ist OK. Erscheinen Fehlermeldungen waren folgende Befehle bei mir hilfreich:
sudo gpassd -a user postgres createuser user
user ist der Benutzername unter dem man arbeitet. Auf die Frage nach Superuser: y
Mod_Tile Installation abgeschlossen
Die Installation der Datenbank, des Apache-Servers, der Mapnik-Libraries und des Render-Servers ist nun abgeschlossen. Unser Ubuntu-Rechner ist damit in der Lage, OSM-Datenbankausschnitte in die lokale Postgresql-Datenbank zu importieren, und auf Anforderung eines Browsers daraus just in time die jeweils benötigten Kartenbilder zu berechnen und auszugeben.
Im folgenden laden wir OSM-Daten in die Datenbank und berechnen unsere ersten Tiles (Kartenbilder).
Download der OSM-Datenbank-Daten von der Geofabrik
Beim ersten Versuch würde ich max. ein Bundesland downloaden und importieren. Ein Bundesland kann schon mehrere Stunden Importzeit benötigen. Deutschland dauert bei mir 1-2 Tage, Europa 3-4 Tage, den ganzen Planeten im Stück habe ich noch nicht geschafft! Dies liegt wohl daran, daß ich eine 32-bit Ubuntuversion nutze. Um das GPS testen zu können, empfiehlt es sich, ein Gebiet importieren, in dem man sich tatsächlich gerade physisch befindet, sonst bleibt die Karte nach erfolgreicher GPS-Positionierung weiß, weil eben keine passenden Daten in der DB sind :-)
Wenn ich gerade in Rheinland-Pfalz bin lade ich zunächst die Daten dieses Bundeslandes von der Geofabrik:
wget http://download.geofabrik.de/osm/europe/germany/rheinland-pfalz.osm.pbf
Diese Daten lade ich nun in die Datenbank. Den Vorgang bitte nicht unterbrechen. Jeder Importbefehl löscht die vorhandene Datenbank und baut sie komplett neu auf.
osm2pgsql -m -s -d gis rheinland-pfalz.osm.pbf
Spezielle Ausschnitte des Planet-Files können nach Koordinaten in die DB importiert werden (Dazu müssen diese Daten natürlich in der zu importierenden Datei vorhanden sein.):
osm2pgsql --bbox -70,-90,60,90 -m -s -d gis /home/jan/Arbeitsfläche/planet-latest.osm.bz2 osm2pgsql --bbox 50,-90,180,90 -m -s -d gis /home/jan/Arbeitsfläche/planet-latest.osm.bz2 osm2pgsql --bbox 170,-90,-60,90 -m -s -d gis /home/jan/Arbeitsfläche/planet-latest.osm.bz2
Hinweis Daten weiteres Fahrgebiet einfügen
Der zuvor beschriebene DB Import importiert lädt immer die DB von Grund auf NEU. Wenn man mehrere Dateien (z.B. Bundesländer) importieren möchte, so muss man dies mit dem Parameter --append oder -a durchführen:
osm2pgsql -a -m -s -d gis nordrhein-westfalen.osm.pbf osm2pgsql -a -m -s -d gis niedersachsen.osm.pbf
Leider überlappen sich die OSM Dateien benachbarter Gebiete, um z.B. Straßen, Küstenlinien usw in ihrem Kontext richtig darstellen zu können (z.B. schlängellt sich die Werra entlang der Grenze Thüringen und Hessen). Entsprechend gibt dann doppelte OSM-IDs. Dies führt dann zum Absturz des Imports mit einer Fehlermeldung doppelte ID in der Table planet_osm_nodes oder from planet_osm_rels oder planet_osm_ways. Dies kann man mit folgenden Befehlen umgehen:
psql -d gis delete from planet_osm_nodes; delete from planet_osm_rels; delete from planet_osm_ways; commit; \q
Hat man ein 64bit Ubuntu kann man den parameter -s einfach weg lassen, Dann treten diese Fehler nicht auf, da ist der Speicher groß genug. Bei kleinen Bundesländern im 32bit System hilft auch der Parameter -C 2900 (weglassen von -s) bei 3GB Systemspeicher.
danach:
Abschluß Import OSM-Datenbankauszug
Da wir jetzt alles haben, um mit dem Berechnen von Kartenbildern zu beginnen, starten wir den Render-Server neu:
sudo /etc/init.d/renderd restart
Außerdem markieren wir den Zeitpunkt, an dem wir die Daten importiert haben. Damit wird gewährleistet, daß nur Kartenbilder berechnet werden, die nicht schon einmal abgerufen und in den cache (unter /var/lib/mod_tile/default/ gelegt wurden. Dies erspart viel Zeit und Energie.
touch -d 20000101 /var/lib/mod_tile/planet-import-complete
Installation DB-Server (mod_tile) testen
Wenn alles geklappt hat sollte unter nachfolgender URL eine Karte erscheinen. Evtl nach 2-3 min den Reload-Button drücken!
http://localhost/osm/0/0/0.png
FreieTonne Programme, Hardware und Daten installieren
Nun beginnt endlich der Teil der Installation, der die FreieTonne betrifft. Ab hier sind wir verantwortlich ;-)
- Installiere einige weitere Pakete für Apaché und PHP
sudo apt-get install libapache2-mod-php5 php5-cgi
- Installiere gpsd und -clients
sudo apt-get install gpsd gpsd-clients
Konfiguriere Bluetooth-GPS
Das GPS habe ich über das Menü "Systemeinstellungen/ Bluetooth/ Neues Gerät konfigurieren" am Rechner angemeldet.
Die MAC-Adresse Deiner Bluetooth-GPS-Maus ermittelst Du bei eingeschalteter GPS-Maus und am PC aktiviertem Bluetooth mit
hcitool scan
Der Rechner sagt nun:
Scanning ...
00:08:1B:11:D3:DF GPS
Diese MAC-Adresse (hier 00:08:1B:11:D3:DF) des GPS muß nun in die Datei /etc/bluetooth/rfcomm.conf wie folgt eingetragen werden:
rfcomm0 {
# Automatically bind the device at startup
bind no;
# Bluetooth address of the device
device 00:08:1B:11:D3:DF;
# RFCOMM channel for the connection
channel 1;
# Description of the connection
comment "Example Bluetooth device";
}
Wichtig ist hier, daß die Schnittstelle wie hier angegeben mit "rfcomm0" bezeichnet wird. Sonst kann unsere FreieTonne später das GPS nicht finden!
Installation JAVA RUNTIME
Damit wir später auch den JOSM verwenden können muß die JRE installiert werden
apt-get install openjdk-7-jre
Download und Auspacken der FT-Scripte und Konfigurationen
Die FT-Daten und Konfigurationen werden jetzt wie folgt heruntergeladen und installiert:
wget http://www.freietonne.de/downloads/ft-install-linux-mod_tile.tgz -O /tmp/ft-install-linux-mod_tile.tgz cd / tar -xvzf /tmp/ft-install-linux-mod_tile.tgz
Änderungen an Konfigurationsdateien
- Drei Zeilen müssen noch in /etc/sudoers eingefügt werden, damit GPS-Warnungen ausgeführt werden können
www-data ALL=(ALL) NOPASSWD: /usr/local/bin/gpsstart www-data ALL=(ALL) NOPASSWD: /usr/local/bin/gpsungueltig www-data ALL=(ALL) NOPASSWD: /usr/local/bin/ft-update.sh
- xhost+ automatisch starten, um GPS-Statusanzeigen zu sehen
unter Startprogramme (Menü oben rechts) folgendes Programm bei jedem Login automatisch starten: /usr/local/bin/conf-screen-blank
FERTIG! Rechner neu starten
Jetzt ist alles fertig. Die FreieTonne wird nach dem Neustart im Firefox unter der URL:
http://localhost/seekarte
gestartet. Updates, das Hochladen eigener Daten in die FreieTonne, GPS-Navigation usw. werden wie immer über die Icons oben links im Browser gesteuert. Viel Spaß!!!
Bedienungsanleitung
Die Bedienung unter Ubuntu erfolgt ausschließlich über die Menü-Buttons oben links auf der Karte. Diverse, hier nicht benötigte Schalter (z.B. Download Kartendaten) sind nicht vorhanden, da sie nicht benötigt werden.
Obwohl alle Kartenbilder aus der internen Datenbank heraus berechnet werden, gibt es gute Gründe für gelegentliche Updates aus dem Internet. Zum einen werden praktisch täglich viele Seezeichen eingepflegt und korrigiert, zum anderen aktualsieren wir auch diese Software ab und an.
Um die Karte wirklich nutzen zu können
empfehle ich, die Zoomlevel 4-13 komplett in einem Rutsch rendern zu lassen. Die Berechnung dieser Kartenbilder dauert ziemlich lange, da hier große Datenmengen zu berücksichtigen sind, und stört deutlich beim Arbeiten. Im Gegenzug sind dies relativ wenige Bild-Dateien, die die Festplattenkapazitäten des Rechners nicht wirklich belasten. Die hier investierten 1-2 Tage Rechenzeit zum Cachen der Bilder sind also wirklich gut angelegt:
sudo render_list -v -f --all -n 2 --socket=/var/run/renderd/renderd.sock --min-zoom=4 --max-zoom=10
Während dieses Rechenprozesses kann die Karte natürlich schon genutzt werden, sie ist halt langsam. Ich lasse immer zunächst die ungeraden, dann die geraden Zoomlevel rechnen, die Karte ist dadurch gefühlt eher nutzbar.
Gerenderte Karten löschen
Es gibt mehrer Gründe um die gerenderten Karten zu löschen:
- Man hat falsch gerendert (z.B. was mir passiert ist durch Ubuntu Update) - Der Speicherplatz der gerenderten Images wird immer größer und man braucht sie nicht mehr - ...
So löscht man die gerenderten Karten:
- Löschen des Ordners mit seinen Unterordnern der gewünschten Zoomstufe im Verzeichnis /var/lib/mod_tile/default/ - Löschen des Caches von Firefox, sonst kann es passieren, dass man alte gerenderte Karten sieht. Dies geschieht über Edit>Preferences>Advanced>Button Clear Now (Offline Storage) Kann jemand mit einem deutschen Firefox bitte die deutschen Schritte eintragen. Danke FrRainer)
ToDo
- JOSM installieren
Zusatz-Config perl, wird für private Perl-Programme benötigt (fakultativ)
in /etc/apache2/apache2.conf:
AddHandler cgi-script .cgi .pl <Files ~ "\.pl$"> Options +ExecCGI </Files> <Files ~ "\.cgi$"> Options +ExecCGI </Files>
in /etc/apache2/sites-enabled/tileserver_site
allowOverride all
und dann
apt-get install libimage-size-perl imagemagick jhead
Fehler Ubuntu
Falls mal das Update des Paketes mysql-server streikt:
- temporär /etc/init.d/mysql mittels exit 0 disablen - mysqld von Hand stoppen - update - Änderung /etc/init.d/mysql zurück
