OSM Karte Offline darstellen

Danke für deine Hilfe efred! Der erste Link ist insofern Interessant das das howto genau an dem Punkt aufhört wo ich mich gerade befinde. Ich habe Mapnik am laufen und kann es mit anfragen bombadieren wie render mir das oder jehnes.
Das bringt mich jetzt zum nachdenken ob der nächste Schritt einfach nur der ist das ich ein allerweltsbeispiel welches z.B. alle die verwenden die nicht selber Rendern einfach so abändere das es nicht im Internet nach einem Mapserver sucht sondern den “localen Server?” verwendet? Ich bin hier aber nicht sicher ob ich schon wirklich soweit bin und ob es tatsächlich so “einfach” ist. Und wenn ja weis ich leider auch nicht wie es konkret zu tun ist.

Das tile rendering, also das erzeugen von Karten aus OpenStreetMap daten ist eigentlich sehr gut ausgearbeitet und es gibt mehrere verschiedene Moeglichkeiten das zu erledigen jenachdem welche Resourcen und Ansprueche vorhanden ist.

Ich habe auf meinem Laptop auch ein Karten server fuer England laufen mit dem ich offline eine Karte von England im Browser anzeigen kann und das funktioniert sehr gut. Klar etwas mehr Aufwand das ganze einzurichten als “apt-get install osm-tileserver” (welches ich gerne ansteben wuerde) ist es schon noch, aber wenn man ein Project darauf aufbauen will, ist der Aufwand wuerde ich sagen wirklich vertretbar.

Ein paar links hatte ich und andere ja bereits gepostet, die dies ermoeglichen sollte. Wie weit bist du denn bislang gekommen? Hat das importieren der Daten per Osm2pgsql in die postgis datenbank geklappt, konnte mapnik aus der datenbank renderen? Wenn ja, muss man nur noch das apache module mod_tile und den renderd daemon kompilieren und installieren und eine HTML seite mit ein paar OpenLayers Zeilen erstellen um die Tiles von seinem lokalen webserver auch anzeigen zu koennen.

Ja. Wenn Du den Umriss der Welt rendern kannst hast du das schwierigste schon hinter dir.

  • Mapnik läuft
  • Python ist installiert
  • PostgreSQL mit PostGIS läuft
  • Die Shapefiles sind in die Datenbank importiert

Jetzt brauchst Du noch Kartendaten und Vorgaben zum rendern.

Ich würde erstmal einen möglichst kleinen Kartenausschnitt herunterladen (Zum Beispiel den für Düsseldorf in NRW):
http://download.geofabrik.de/osm/europe/germany/nordrhein-westfalen/

anschließend musst du in das osm2pgsql Verzeichnis:

cd ~
cd bin
cd osm2pgsql

und die heruntergeladene Datei importieren (der folgende Befehl geht davon aus dass die Kartendaten sich im Unterverzeichnis “downloads” deines Home-Verzeichnisses befinden):

./osm2pgsql -S default.style --slim -d gis -C 2048 ~/downloads/duesseldorf.osm.bz2

Nach dem Import kannst du in das Mapnik-Verzeichnis wechseln


cd ~
cd bin
cd mapnik

und z.B. eine Kopie der generate_image.py erstellen oder die Datei direkt mit einem Texteditor bearbeiten:

gedit generate_image.py

In der Datei findest du die “bounding box” welche den zu rendernden Kartenausschnitt definiert. Diese besteht aus vier Koordinaten in einer Klammer.
Falls Du die Daten von Düsseldorf verwendest kannst du folgende Werte für ein Bild des Hofgartens verwenden:

(6.78042, 51.22714, 6.79065, 51.23066)

Ansonsten kannst du auch über openstreetmap.org an die bounding box kommen: Navigiere zum gewünschten Kartenausschnitt und drücke auf “Export”. Dann siehst du die vier Werte der Bounding Box. Die Reihenfolge der Ziffern ist links-unten-rechts-oben.
Diese Werte kannst du in deine generate_image.py eintragen und hast schon mal den richtigen Kartenausschnitt.

Etwas unterhalb der bounding box steht noch der Zoomlevel , z.B.

z = 11

(Wenn Du die generate_tiles.py editierst zum Rendern von Tiles geben die Werte “minZoom” und “maxZoom” die Grenzen der zu rendernden Zoomstufen an).

Jetzt noch abspeichern und die generate_image.py starten:

./generate_image.py

und ein paar Sekunden später sollte eine png-Datei im Mapnik-Verzeichnis erscheinen.

Danke Euch für eure Antworten. Super Support hier!
Ja ich bin an dem Punkt das Mapnik mir aus der Datenbank rendert was ich möchte (solang es sich auf Deutschland beschränkt :slight_smile: ) Was mir jetzt fehlt ist der nächste Schritt. Ich gehe mal nicht davon aus das ich jetzt erstmal Bilder (tales) von ganz Deutschland rendern muss/soll um dann mit ner HTML Seite darauf zuzugreifen. Ich denke ich muss etwas finden das dem Maplink sagt render mir diesen Ausschnitt.
Amm hat schon was angedeutet mit dem “apache module mod_tile” - hol ich mir das einfach per apt-get? Wie gehts dann weiter? Was ist das für ein renderd daemon und wo bekomme ich den her und wie zum laufen?
Leider hören alle Tutorials die ich gefunden habe an dem Punkt auf an welchem auch Bikeman2000 aufgehört hat :slight_smile: Trotzdem danke dafür!

Nein, leider noch nicht, auch wenn ich es gerne so einfach haette. ( https://bugs.launchpad.net/ubuntu/+bug/589213 ) Vermutlich sollte ich es erst einmal versuchen es in Debian zubekommen, von dort aus bekommt man es dann vielleicht auch einfacher in Ubuntu.

Sowohl mod_tile als auch renderd findet man im OSM-svn repository.
http://trac.openstreetmap.org/browser/applications/utils/mod_tile
http://trac.openstreetmap.org/browser/applications/utils/mod_tile/readme.txt (nicht gerade die beste readme, aber das bringt dich hoffentlich etwas weiter)

Etwas mehr information wie die verschiedenen Komponenten zusammen passen findet man in der Dokumentation zu tirex (tirex ist eine alternative zu renderd) http://wiki.openstreetmap.org/wiki/Tirex/Overview#Request_handling http://wiki.openstreetmap.org/wiki/Tirex

Ja, das ist in der Tat schade. Da muesste sich mal jemand dran setzen den rest als ein verstaendliches Tutorial im Wiki niederschreiben… :wink:

P.S. Vielleicht muessen wir doch noch die Sache etwas leichter machen… ( http://2010.foss4g.org/workshop03.php )

Hallo Markus,
so wie Dir geht es mir gerade auch. Der Ubuntu-Server mit PostgreSql 8.4 und Mapnik-Installation läuft. Beispieldaten für Deutschland sind mittels osm2psql eingespielt. Die Ausgabe der Bilder und Tiles über die Pytonscripte funktioniert.
Das Weait-Tutorial ist bis hierher sehr gut nach zu vollziehen. Aber hier hört es dann auch schon auf. Alle weiteren Anleitungen, Readme´s etc. welche man im Netz findet sind nicht wirklich hilfreich. Pakete sind unvollständig oder stehen auf der Wishlist. mod_tiles lies sich zwar kompilieren und installieren, jedoch fehlt das Apache2-Modul in den mods-enabled. Auch Tirex lässt sich kompilieren und installieren, aber mein Verständnis wie alles zusammenspielt oder besser gesagt, wie man es Konfiguriert hört hier auf.
Ich will die Anfragen aus Openlayers ja “nur” weiter an Mapnik leiten ,)

Ich habe jedoch eine Anleitung gefunden welche die Problematik bis zum Schluss beschreibt:
http://wiki.openstreetmap.org/wiki/DE:HowtoMinutelyHstore
und der zweite Teil:
http://wiki.openstreetmap.org/wiki/DE:HowTo_Mapnik_%26_Tirex

“Leider” wird hier Debian 5.03 verwendet. Also werde ich mal mein VMWare anwerfen und es auf dieser Basis versuchen.
Evtl. hilft Dir die Anleitung etwas weiter. Sollte ich bei der Testinstallation zu neuen Erkenntnissen kommen werde ich es hier mitteilen.

Gruß
Markus

hallo bird

ich werde die tage mal eine, für mich, gängige deutsche installationsanleitung (hier debian), zum aufsetzen eines mapnik-tiles-server einstellen.
leider erstmal nur für ein einmalrendern. zum einspielen von diffs und nachrendern über mod-tile habe ich leider noch keine zeit gefunden.
ich brauchte auch erstmal eine offlineversion von kartentiles, da ich mich in einem intranet befinde.
vieles was man findet ist leider nicht von anfang bis ende durchführbar, so dass man ständig stückelt und alles zusammensuchen muss.

zum nächsten part einer ansehnlichen oberfläche mit openlayers und verarbeiten von daten, die dann auf der karte projeziert werden, würde ich dann auch noch kommen.

im moment bin ich in diesem bereich noch im spielerischen trieb, mit schon ganz gängigen erfolgen.
das openlayers framework ist schon ein großer brocken, mit dem ich mich auch teilweise sehr schwer tue etwas zu verstehen und zu kombinieren, trotz api-beschreibung.

aber: man wächst mit seinen erfolgen und gemeinsam macht man das augenscheinlich unmögliche, möglich.

erstmal paar tage urlaub und dann ab in die vollen.