Geeignetes Software Setup um hochauflösende Karten zu rendern

Hallo liebe Community,

ich bin seit einiger Zeit am versuchen OSM-Server-Software zum laufen zu bringen, hatte bis jetzt damit aber noch keinen Erfolg. Bevor ich nun die Community mit Detailfragen bombardiere, habe ich mir gedacht, ich Frage erst mal überhaupt nach dem richtigen Weg… es könnte ja sein das ich in der falschen Richtung und unnötig kompliziert unterwegs bin!

Zwar habe ich mich schon ziemlich gut im Wiki umgeschaut und auch schon vieles ausprobiert, aber bei all der spezialisierten Software (und dem Englisch) bleiben doch immer wieder so viele Fragezeichen offen, zumal ich in diversen Technologien auch kein Experte bin (Postgres mache ich z.B. zum ersten mal).

Die Grundanforderungen

Als Endergebnis wird eigentlich Karten in SVG gewüscht, was scheinbar sehr schwierig ist. Ich habe meinen Chef daher davon überzeugt, dass Pixelgrafiken mit hoher DPI Auflösung ja auch eine mögliche Lösung sein können. Denn das ganze muss für den Druck geeignet sein.

Dies ist auch schon der Grund weshalb ich wohl nicht auf existierende Server zurückgreifen kann. Die Tiles von Openstreetmap haben Web-Auflösung, was zum drucken ungeeignet ist. Auch wenn man mehrere solche Tiles zusammen nimmt und dann verkleinert, ergibt sich das Problem von sehr kleiner Schrift über Dörfern o.ä… also wäre das wohl eher kein so guter Weg. (Wobei man das wirklich noch probieren könnte!)
Auch die API oder XAPI der Server ist jeweils stark limitiert was die Anzahl Nodes angeht die man als Ergebnis zurück kriegen kann.

Aus diesem Grund dachte ich, es sei wohl eine gute Idee sich eine lokale Installation zuzulegen.

Ach ja, das ganze sollte möglichst gut als Toolchain automatisierbar sein. Von GUI-Tools braucht daher erst gar nicht die Rede zu sein.
(Der Betrieb für den ich arbeite pflegt die Opensource-Philosophie sehr gründlich und veröffentlicht selbst auch viel als Opensource, allerdings nicht im Kartenbereich)

Das Setup

Die vier großen Namen die ich in der Recherche im Wiki gefunden haben sind:

  • Postgres
  • PostGIS
  • Osmosis
  • Mapnik

Osmarenderer scheint ja leider nicht mehr supported und daher ist es wohl “gefährlich” auch nur daran zu denken damit überhaupt nur anzufangen… (was schade ist, rendert der doch SVG’s direkt aus osm-Daten). Oder sieht das jemand anders?

Ich habe bereits Versucht Osmosis mit Postgres zum laufen zu bringen, bin aber leider gescheitert. Auch verstehe ich nicht, ob ich PostGIS zwingend brauche. Oder was das überhaupt macht.
Daher würde ich gerne wissen was ich mit Postgres und Osmosis eigentlich so anstellen kann was mein Ergebnis angeht. Scheinbar ist dies ja doch das beste Setup?

Mit Mapnik habe ich mich noch kaum auseinandergesetzt. Meine Hoffnung hier ist, dass man damit Bilder mit viel DPI rendern kann? Kann man Mapnik auch auf Postgres ansetzten? Oder ist dann Osmosis hier das Verbindungsstück?
Wenn ich richtig verstanden habe ist ja Osmosis quasi das Abfrage-Tool um z.B. sog. bbox’es (also Areale mit Koordinaten) aus der DB abzufragen…

Na ja ihr seht. Ich habe da etwas Mühe und komme nicht weiter weil jeder Versuch einer Installation bisher gescheitert ist - ich gleichzeitig aber nicht weiß wie viel Energie ich überhaupt in die Installation stecken sollte, da ich nicht weiß ob da am Schluss das rauskommt was ich möchte.

Ach ja, Overpass API habe ich auch schon probiert, bin aber gescheitert: http://forum.openstreetmap.org/viewtopic.php?id=17325

Als System habe ich ein Ubuntu Lucid 10.04 LTS als virtueller Server bei hosteurope.de. Ich kenne mich gut mit Unix/Linux und scripting aus. Aber Karten-Rendering-Kentnisse habe ich nicht wirklich viel…

Statt Detail-Lösungen würde ich mich jetzt erst mal wirklich freuen wenn mir irgend jemand den Weg weisen kann welches Setup sich überhaupt eignet.
Vielen Dank, falls sich jemand die Mühe macht diesen riesen-Post durchzulesen und darauf zu antworten!

Du kannst auch mit Mapserver rendern. Eine recht einfach gehaltene Anleitung gibts hier
http://trac.osgeo.org/mapserver/wiki/RenderingOsmDataUbuntu

Wie groß soll das Gebiet sein, das Du darstellen willst? Wenn es nicht all zu groß ist (oder Du vorfiltern willst), würde ich Dir Maperitive empfehlen. Das ist einfach zu bedienen, kann svg exportieren (sowohl “normal” als auch für AI) und mit dem scale Parameter kann man auch eine druckfreundliche Auflösung bei Pixelkarten hinbekommen

Ja, Maperitive wäre eine Möglichkeit.

Mapnik kann auch SVG:
https://github.com/mapnik/mapnik/wiki/OutputFormats

Hier kannst du den SVG-Export testen:
http://www.openstreetmap.org/export

Kann man dann auch mit Inkscape bearbeiten.

Gruß,
Mondschein

Stimmt, osmarender ist tot.

Ein klares und deutliches Jein :wink:
Du brauchst auf jeden Fall postgresql mit postgis zusammen. ohne geht fast nix bei osm.

Da du Rendern willst, solltest du den Tool osm2pgsql benutzen oder andere mir nicht so geläufige.
Der Weg mit Osmosis ist nicht so gut zum Rendern geeignet. Vergiss osmosis hier einfach.

Rendern kann man mit unterschiedlicher Software. Mapnik ist eine davon, Maperitive eine andere.

ja, ALLE Renderer - zumindest die geläufigen- verwenden die Postgresql/Postgis-DB. Osmosis brauchst du hier nicht.

Nee, total daneben. aber egal.

Die Overpass-Api ist nur ein bequemer Weg, schnell an Daten ranzukommen. Aber für ein “richtiges” Projekt, ganz besonders wenn gerendert werden soll, ist sie imho nicht gedacht.

Womit du am Ende wirklich renderst, hängt auch von den Anforderungen deines Chefs ab. Man kann übrigens mit guter GIS-Software auch Karten im SVG-Format erzeugen. QGIS wäre da mein Vorschlag.

Eventuell sagts du noch etwas über den Umfang des Projektes aus. Es ist schon ein Unterschied, ob man Kärtchen für eine Lokalzeitung, einen Online-Auftritt oder eine Europakarte herstellen soll. Da bestimmt die Datenmenge einiges.

Gruss
walter

Noch ein paar Hinweise:

Generelle Sammlung: http://wiki.openstreetmap.org/wiki/OSM_on_Paper

Praxis-verbunden: http://wiki.openstreetmap.org/wiki/L%C3%BCbeck/Fahrradstadtplan

Den dort für Lübeck erstellten Fahrradplan in Stadtplangröße hab ich schon in der Realität begutachten können: Hut ab!!

Sonst die Lübecker mal fragen wenn noch was hakt.

Thomas Eberth hat zusammen mit der Verbandsgemeinde Montabauer Stadtpläne auf Basis der OSM-Daten erstellt und im Wiki den Ablauf dokumentiert.

Edbert (EvanE)

Du kannst das auch ganz fix mit Tilemill machen. Das kann m.M. nach auch SVG rendern. Datenbank aufsetzen, Daten mit osm2pgsql importieren Tilemill installieren Kartenstil basteln oder Vorlage nehmen fertig.

Stimmt, aber mit der zunehmenden Menge an Handies und langsam auch Laptops mit hochaufloesenden Display (Retina display in Apples marketing Slang), wird dies auch im zunehmenden masse ausserhalb von Druck wichtig. In dem Zusammenhang kam das Thema auch gerade auf der dev-Liste zur Sprache ( http://lists.openstreetmap.org/pipermail/dev/2012-June/025139.html )

Frederik Ramm hat fuer Testzwecke desshalb einen Tileserver zusammengebastelt der die doppelte Aufloesung wie normal verwendet. Unter http://mull.geofabrik.de/hires.html kann man das Ergebniss betrachten und vergleichen (low-res und high-res layer)

Die Seite switch2osm.org (auf Englisch) hat ein paar detailierte Anleitungen wie man eigene Karten mit Mapnik rendern kann. Dort finden sich auch Ubuntu Packete um die Einrichtung deutlich zu erleichtern.

Moeglicherweise benoetigt man allerdings Mapnik 2 fuer hochaufloesendes Rendering, da wenn ich mich richtig erinnere einige Verbesserung bezueglich des scalings in Mapnik 2 eingeflossen sind. Es ist jedoch leichter das auf Ubuntu 12.04 LTS zu installieren als noch auf 10.04 LTS.

Also ich habs gestern mal mit Maperitive ausprobiert und das ging wirklich sehr einfach.
1.OSM Dump ziehen
2.Diesen mit Osmosis zuschneinden
3.In Meperitive laden
4.Darin den interessanten Ausschnitt wählen
5.Ausgeben lassen in gewünschtem Zoomlevel und Auflösung (bei Raster)

Ich hatte das seid dem Vorgänger (Kosmos) nicht wieder probiert, aber die Lösung ist echt flexibel!

@!i!
Warum die Schritte 1 und 2? Maperitive kann ja die OSM-Daten auch selber laden (STRG+Umschalt+D) - oder hat das einen speziellen Grund, der sich mir noch nicht ganz erschlossen hat?

Weil Maperitive Bereiche rendern kann die nicht über die API abgerufen werden können (zu große Datenmenge).
Für kleine Bereich reicht die API - ausserdem verwenden die meisten noch nicht die Beta-Versionen von Maperitive und erst dort ist das eigebaut!

Allerdings ist das ein Trugschluß einfach zu sagen ich las den Zoomlevel oder Auflösung exportieren.

das Problem der Hires Karten ist das auf der Anzeige (z.B. Retina display) einfach alles kleiner wird.
Für solche Ausgaben muss man 1 oder 2 Zoomstufen tiefer Rendern (statt bis Zoom 16 bis Zoom 17oder 18) allerdings muss man da im gegenzug die Rules (Darstellung der Objekte) anpassen. Da darf dann eine Strasse nicht nur 5 Pixel breit sein sondern muß 10 oder gar 15 pixel breit werden um noch auf dem Display ordentlich zu erkennen ist.

Sowas ähnliches verwendet Maperitive schon um Teilpixel azeigen zu können mit:

generate-tiles minzoom=10 maxzoom=16 subpixel=3

wird die Karte mit 10241024 Pixel berechnet und dann auf 256256 Pixel verkleinert.

wenn es intressiert: http://braincrunch.tumblr.com/post/13459650973/maperitive-beta-subpixel-accuracy

@tunnelbauer Genau wie mein Vorposter vermutete. Ich wollte Rostock rendern, was einfach zu viel für die API ist. Daher habe ich mir den Meck Pomm Dump besorgt und per Hand geschnitten, damit ich nicht unnütz rendere.

@quasilotte aber ich kann doch die Ausgabe-Auflösung bei Mapiritve unabhängig vom Zoomlevel einstellen? Also für Retina einfach mehr Pixel rendern bei gleichem Zoom, oder?

Für den Druck reicht es ja, dass SVG herauspurzelt und das darin alle gewünschten Details sind. Das rastern macht dann ja das (arme!) Drucksystem in der Zielauflösung.

Es wäre wohl eher sinnvoller, die Tiles als svg zu rendern und dann der Anwendung zu überlassen, wie groß er die skaliert, oder?

Können Mapnik oder Maperitive auch Icons im SVG-Format verarbeiten?

Die Ergebnisse unseres Standard-Stils sehen ja beim Vergrößern nicht so toll aus, weil zwar Straßenbreite und Schriftgröße skalieren, aber die Auflösung der Icons der ursprünglichen Größe entspricht. Falls man dem Renderer für die Apotheken und Spielplätze png-Bildchen verfüttert, muss man ihm vorher sagen, wie groß das Ergebnis werden soll. Und dann kann man auch gleich Rastergrafiken ausgeben lassen…

Grüße, Max

Links oben das Original, der Rest das auf 200% vergrößerte Bild:

Zumindest Mapnik 2 sollte das können, wie gut, kann ich dir nicht sagen, da ich das noch nicht ausprobiert habe.

Gruß,
Mondschein