DE:WindowsClient@Home

From OpenStreetMap Wiki
Jump to: navigation, search

Start dieser Seite: 06. August 2008 - PiMapper

Letzte Änderung: 7. Märch. 2012 - PiMapper

Status dieser Seite: OK

Status von Tiles@Home: : Nicht mehr in Betrieb

Motivation

Es ist vielleicht schon vielen von Euch so ergangen. Man kommt aus der Tekki-Ecki und will, aus welchen Motiven auch immer, hier irgendwie mitmischen. Man kämpft sich also durch diverse Wikis, welche eine Sammlung von Informationen beinhalten, deren Hinweise und Workarounds für einen gewöhnlichen Windows-Nutzer keine Hilfestellung bieten. Dann stößt man zwangsläufig auf windows installer, wo bereits ein Komplettpaket lauert, das alle externen Tools gleich mitinstalliert. Ja, es funktioniert auch. Zumindest jetzt wieder. Vor kurzem aber eben nicht mehr - es hinkt also von Zeit zu Zeit mal hinterher. Ferner hatte ich bereits diverse Tools auf meiner Kiste, so z.B. Perl, Inkscape oder XMLStarlet und wollte diese kein zweites Mal installiert haben. Gab da einiges Kuddelmuddel bezüglich der Pfade. Zudem wollte ich mein t@h-Verzeichnis, zumindest die unter SVN-Kontrolle stehenden Dateien, gänzlich unangetastet lassen und mir die Option aufrecht erhalten, neben meiner Hauptkonfiguration auch weitere Testkonfigurationen zu fahren - Also die "Eben-Mal-Schnell"-Varianten, um zu schauen wie was läuft. Eben ohne erst einen 10-minütigen Renderprozess abwarten zu müssen. Primär jedoch interessierte mich der LocalSlippyMap-Schalter, also die Möglichkeit, Kacheln lokal zu erzeugen - ohne Upload. Funktioniert dies ordnungsgemäß, so steht einem Upload, also dem eigentlichen Sinn von tiles@home nichts mehr im Wege. Aus diesem Grund, wird sich dieses Dokument zuerst der Erstellung einer LocalSlippyMap zuwenden.

LocalSlippyMap

Software-Voraussetzungen

Der tiles@home-Client, genau genommen das Perl-Script tilesGen.pl, benötigt für die Erstellung der Kacheln diverse externe Programme. So z.B. für die XSL-Transformation (osmarender) zu SVG (Scalable Vector Graphics) und die anschließende Umwandlung der SVG in eine PNG-Bitmap. Für jede dieser Teilaufgaben bietet tiles@home alternative Einstellungen an. So ist es z.B. möglich, sich zwischen einem SVG-nach-PNG-Renderer Inkscape oder Batik zu entscheiden. Zur Zeit ist es allerdings so, dass Batik einige Probleme bereitet. Früher war alles besser!? Die im Folgenden getroffene Auswahl ist also nur eine von vielen Kombinationsmöglichkeiten. Am Ende ist dies sicherlich eine Geschmacksfrage. Natürlich spielt auch die gefühlte Stabilität eine gewichtige Rolle.

WICHTIG 1:

Unter Windows gab es in der Vergangenheit immer wieder Probleme mit Verzeichnisnamen, die Leerzeichen enthielten. Dies betraf u.a. auch den Aufruf der Perl-Scripte untereinander. Um davon unabhängig zu bleiben, sollte man alle beteiligten Komponenten also nicht unter "Eigene Dateien" installieren. Dies betrifft ganz nebenbei auch den Komplettabzug vom SVN-Server, der aufgrund der Verzeichnistiefen ebenfalls bei etwa drei Verzeichnisebenen unter "Eigene Dateien" zusammenknickt.

WICHTIG 2:

Merkt Euch während der Installation die Pfade, wo ihr die Programme installiert habt. Die Pfade werden später für die Konfigurations-Datei benötigt!

SVN (Subversion 1.5.x)

SVN (Subversion) ist ein Versionskontroll-Programm, das mittlerweile in jeder ordentlichen Firma zum Einsatz kommt. Auch Tiles@Home liegt unter SVN-Kontrolle und kann hierüber direkt abgezogen (gedownloaded) werden. Mittels einer Aktualisierungsfunktion (Update) ist es zudem möglich, die lokale Kopie jeder Zeit auf den aktuellsten Stand zu bringen ohne den kompletten Download noch einmal in Gänze anstoßen zu müssen. tilesGen.pl nutzt diesen Mechanismus, um vor jedem Lauf sicher zu stellen, dass die aktuellste Version am Start ist.

Aktueller Hinweis:

Die SVN-Baureihe 1.4.x wird vom OSM-Server nicht mehr akzeptiert.
Ihr benötigt jetzt Versionen ab 1.5.x.
Diese Versionen werden aber nicht mehr direkt von tigris, sondern
von CollabNet bereitgestellt. Download
Hier werden gleich mehrere Versionen angeboten. Es reicht die Client-Variante.
Wer einen eigenen SVN-Server einrichten möchte, sollte allerdings gleich
die Server-Variante installieren. Leider muss man sich hier vorher registrieren.

PS: Kennt jemand einen direkten Link? - Dann bitte modifizieren. - Danke -

Tiles@Home

Tiles@Home bringt keinen Installer mit, sondern muss mittels SVN (s.o) abgezogen werden und steht danach lokal unter Versionskontrolle. Ein entsprechender Aufruf von der Kommandozeile sieht dann so aus:

svn co http://svn.openstreetmap.org/applications/rendering/tilesAtHome-dev/tags/Ulm
C:\egal\wo\osm\tilesAtHome

(als eine Zeile ohne Umbruch eingeben)

Perl (ActivePerl 5.10)

download

Perl ist die Programmiersprache und Laufzeitumgebung für das eigentliche Tiles@Home-Programm tilesGen.pl. Unter Windows ist dies ActivePerl von der ActiveState Software Inc. Diese Variante bringt eine eigene GUI für das Paket-Management mit. So ist es ziemlich leicht, aus einer Liste noch nicht installierter Pakete ein fehlendes Paket zu lokalisieren und nachzuinstallieren. Tiles@Home benötigt Pakete, die nicht im Standardpaket enthalten sind. Daher müssen wir nach der Installation zuerst den Paketmanager starten (Start->Programme->ActivePerl...->Perl Package Manager, danach im Menü "Edit"->Preferences, Karteireiter Repositories) und folgendes Repository hinzufügen:


Pmoverview.jpg


ActivePerlPkgMan.jpg

Wie im Bild die Daten eintragen und danach auf "Add" klicken.

Sucht nun im Package Manager nach folgenden Paketen und fügt diese hinzu (falls sie nicht zu sehen sind, kann man unter "View" auf All Packages einen Haken setzten. Danach sollten alle Pakete sichtbar sein):

  • GD
  • AppConfig
  • Math-Vec
  • Error
  • libxml-perl
  • XML-XPath
  • Set-Object
  • XML-Writer
  • Module-Pluggable
  • IPC-Run
  • Class-Accessor

Packer (7Zip 4.57)

download

XSL-Transformator (XMLStarlet 1.0.1)

Dieses Programm muss lediglich entpackt werden und ist danach sofort lauffähig!

download

PNG-Renderer (Batik 1.7)

Dieses Programm muss lediglich entpackt werden und ist danach sofort lauffähig!

download

Batik benötigt Java ab Version 1.4. Wer's noch nicht auf seinem Rechner installiert hat, muss dies zusätzlich installieren.

download

PNG-Renderer (Inkscape 0.46)

Alternativ zu Batik kann auch Inkscape verwendet werden; Manchmal gehts auch;-(

download

PNG-Optimizer (pngcrush 1.6.4)

Dieses Programm muss lediglich entpackt werden und ist danach sofort lauffähig!

download

PNG-Quantizer (pngnq 0.5)

Dieses Programm muss lediglich entpackt werden und ist danach sofort lauffähig!

download

pngnq benötigt eine libpng13.dll, die nicht im Paket enthalten ist. Diese muss in das entsprechende Verzeichnis kopiert werden.

download

Grundstruktur

Parallel zu TilesAtHome, legen wir ein weiteres Verzeichnis an. Ich habe es TilesAtLocal getauft. Diese Struktur erlaubt es, weitere Konfigurationen zu fahren ohne dass diese sich gegenseitig ins Gehege kommen. Das heißt aber nicht, dass man mehrere Clients parallel fahren kann! Unterhalb von tilesAtLocal erstellen wir lediglich zwei Dateien, nämlich runlocal.bat und runlocal.conf. Also in etwa so:

C:\egal\wo\osm\
       tilesAtHome\
       tilesAtLocal\
                   runlocal.bat
                   runlocal.conf
       tilesAtLocal_MiniTest\
                   runlocal.bat
                   runlocal.conf
       usw...

runlocal.bat

Diese Batch macht nun einfach folgendes:

  • Kopieren der aktuellen tilesAtHome.conf.windows nach tilesAtHome.conf
  • Erzeugen einer leeren authentication.conf (User/Pass werden jetzt in runlocal.conf gesetzt)
  • Anhängen der runlocal.conf an die tilesAtHome.conf
@echo off
echo Konfigurationen aus Vorlagen erzeugen
echo.
setlocal
cd ..\tilesAtHome
copy tilesAtHome.conf.windows tilesAtHome.conf
echo rem User/Pass wird in runlocal.conf gesetzt!!! > authentication.conf
endlocal
echo Konfiguration anhaengen (ueberschreiben)
type runlocal.conf >> ..\tilesAtHome\tilesAtHome.conf
setlocal
cd ..\tilesAtHome
echo Und ab geht die Post ...
echo -------------------------------------
perl tilesGen.pl xy 17275 10574 15
endlocal
pause

Der Aufruf tilesGen.pl xy 17275 10574 15 sorgt für die Erstellung eines TileSets ab Zoomlevel 15. Normalerweise wird bereits ab Zoomlevel 12 gerendert. Für einen kurzen Funktionstest ist jedoch ein Level 15 völlig ausreichend. Der Lauf sollte auf einem 3GHz/2GByte-Rechner nicht länger als 5 Minuten dauern. Der benötigte Plattenplatz liegt bei etwa 250KB.

Nicht wundern:

Die generierten Tiles werden zur Zeit mit einem blauen Hintergrund dargestellt. Dies passiert jedoch nicht bei den "echten" ZoomLevels z12 oder z6.

runlocal.conf

Parameter, die in der runlocal.conf gesetzt sind, überschreiben die Beispiel- und Default-Einstellungen.

Die Pfade zu den Programmen sind entsprechend zu ersetzen.

# Tiles lokal in diesem Verzeichnis erstellen, kein Upload!
LocalSlippymap=..\tilesAtLocal\localSlippyMap

# Wird jetzt hier gesetzt
UploadUsername=NochEgal
UploadPassword=NochEgal

# Logging und Programmgespraechigkeit
ProcessLog=1
ProcessLogFile="..\tilesAtLocal\tah-process.log"
Debug=1

# Temp-Verzeichnis 
WorkingDirectory=..\tilesAtLocal\temp

# Subversion - Versionskontrolle
Subversion=c:\Programme\Subversion\bin\svn.exe

# XSLT-Prozessor
XmlStarlet=c:\Programme\xmlstarlet-1.0.1\xml.exe

# Inkscape statt Batik
Niceness=' '
Inkscape=c:\Programme\inkscape\inkscape.exe
InkscapeLocale= german
Rasterizer=Inkscape
 
# Batik statt Inkskape
#Rasterizer=Batik
#BatikJVMSize=1350M
#BatikPath=C:\Programme\batik-1.7\batik-rasterizer.jar

# PngOptimierer
PngOptimizer=pngcrush
Pngcrush=c:\Programme\pngcrush-1.6.4\pngcrush.exe

# Png von 24 auf 8 Bit runterrechnen
PNGnq=C:\Programme\pngnq-0.5\pngnq.exe
PngQuantizer=pngnq

# Packer
7zipWin=1
Zip=c:\Programme\7-Zip\7z.exe

Starten

Hierzu einfach die runlocal.bat doppelklicken. Während eines erfolgreichen Laufs, werden die generierten Tiles unter

c:\egal\wo\osm\tilesAtLocal\localSlippyMap\tiles\

abgelegt.

Upload

Programm scharf schalten

Wenn bis hier alles funktioniert hat, dann steht dem eigentlichen Sinn und Zweck von Tiles@Home nichts mehr im Wege. Wir müssen lediglich ein paar Änderungen vornehmen, und schon kann es los gehen.

Konfigurationsdatei (runlocal.conf)

  • LocalSlippyMap auskommentieren
  • Benutzernamen/Passwort eintragen
# Tiles lokal in diesem Verzeichnis erstellen, kein Upload!
# LocalSlippymap=..\tilesAtLocal\localSlippyMap

# Wird jetzt hier gesetzt
UploadUsername=Dein OSM-Nick oder EMail-Adresse
UploadPassword=Dein OSM-Passwort

Wenn ihr noch kein Konto bei OpenStreetMap habt, dann muesst ihr zuerst eins anlegen.

http://www.openstreetmap.org/user/new

Ferner kann es passieren, dass ihr beim ersten Versuch statt des Benutzernamens die email-Adresse eingeben müsst.

Aufruf (runlocal.bat)

  • Test-Aufruf auskommentieren (oder entfernen)
rem perl tilesGen.pl xy 17275 10574 15
  • und durch folgende Zeilen ersetzen
perl tilesGen.pl
echo.
echo Bis hier hin alles OK? Abbrechen mit Ctrl-C (Strg-C)
pause
perl tilesGen.pl upload

Starten

Indem wir die runlocal.bat doppelklicken, starten wir nun den Prozess, welcher grob folgende Aktionen ausführt:

  • Überprüfen der Zugangsdaten zum Server
  • Abrufen eines zu rendernden Tilesets
  • Rendern der Tiles (analog LocalSlippyMap)
  • Zippen und hochladen der Tiles

Vorgang online ueberwachen

Um sich zu vergewissern, dass jetzt alles seinen sozialistischen Gang geht, kann man den aktuellen Prozess-Status online unter

http://tah.openstreetmap.org/User/show/ oder mit etwas mehr Wettkampfgeist http://tahstats.appspot.com/

überwachen.

Sucht einfach nach Eurem Benutzernamen (die Suche kann man durch Strg+F aufrufen) und folgt dem Link.

Loop Modus

Funktioniert der Upload, so steht dem Loop-Modus, also dem Karten-Schleudern bis der Arzt kommt, nichts mehr im Wege.

TODO: Stichworte (s.u) in echte Sätze fassen:

  • Sicherstellen, dass der letzte Lauf erfolgreich war
  • Konfigurationsdateien unverändert lassen.
  • Kommandozeile öffnen und nach tilesAtHome wechseln
  • _stopfile.txt anlegen
  • tilesGen.pl loop absetzen
  • Für ein sicheres Beenden _stopfile.txt in stopfile.txt umbenennen