Mapnik-Toolchain: Problem bei Ändern des Kartenstils

Hallo,

ich habe einen Tile-Server mittels mod-tile, renderd und mapnik unter Ubuntu 12.04LTS in Betrieb (gem. http://switch2osm.org/serving-tiles/building-a-tile-server-from-packages/)).
Ich versuche nun schon länger den deutschen Kartenstil zu verwenden (http://openstreetmap.de/germanstyle.html).
Dazu habe ich die Daten mit osm2pgsql -K unter Verwendung der hstore-Erweiterung neu importiert. Leider ist renderd bisher nicht mit der osm.xml einverstanden.
In der osm.xml wird beispielsweise auf “book-fonts” verwiesen, die auch in der fontset-settings.inc drin stehen (Schriftart ist auch installiert), nur scheint renderd nicht in die fontset-settings.inc zu schauen.
Daher habe ich einfach direkt in die osm.xml den konkreten Namen der Schriftart eingefügt > klappt, aber unnötiger Umweg?
Ich denke genau dasselbe Problem ist auch beim jetzigen Fehler (er meckert über inkorrekte SQL-Statements, die bei Datasource tablename stehen, wobei ich nicht verstehe, wieso dort nicht einfach wie beim Default-Style der Tabellenname wie planet_osm_lines etc. drinsteht)
Also was muss man tun, um auf den anderen Kartenstil umzustellen?
Hier nochmal meine Schritte, viellt. (definitiv fg) habe ich ja was vergessen:

  • Datenimport mit osm2pgsql -K und Verwendung des Style-Files
  • Kopieren der osm.xml und der Ordner /inc, /symbols und /atkis-symbols nach /etc/mapnik-osm-data
  • renderd neu starten…

Tja, und in der syslog stehen dann Fehlermeldungen wie:
osmsrv renderd[24828]: An error occurred while loading the map layer ‘default’: :#012ERROR: syntax error at or near “motorway”#012LINE 1: …umns WHERE f_table_name='_line where highway in (‘motorway’,…#012

Ich hoffe, ihr könnt mir weiterhelfen (oder mit ein geeigneteres Forum für diese Frage nennen, wenn sie hier fehl am Platz ist), macht nämlich eigentlich richtig Spaß.

Ron

Hallo Ron,

Du schreibst Ordner “/inc”, im osm-de.xml wird aber “inc-de” referenziert:


<!ENTITY % entities SYSTEM "inc-de/entities.xml.inc">

Könnte das evtl. das Problem sein? Klingt für mich schon danach, dass die inc Dateien gar nicht geladen werden.

Ansonsten kümmert sich momentan Sven Geggus um den deutschen Stil, ihn erreichst Du vermutlich eher auf der talk-de Mailingliste.

Gruß,
Norbert

Danke! Ich hatte natürlich blindlings alles ins vorhandene inc rein kopiert. Jetzt versteht renderd fast alles… fast :wink:
Neue Fehlermeldung (syslog) lautet:

An error occurred while loading the map layer 'default': XML document not well formed: #012Entity 'layer-amenity-points' not defined (encountered in file '/etc/mapnik-osm-data/osm-de.xml' at line 4130)

Das layer-amenity-points.xml.inc ist vorhanden (ist ja aus dem svn kopiert) und hat auch jeder Zugriff (da es nichtmal der erste Aufruf einer Datei aus inc-de ist, somit die anderen Dateien also gelesen worden sind, muss hier irgendwas anderes faul sein).
Meine Vermutung: Viellt. habe ich die Konfiguration schon völlig durcheinander gebracht. Werde die Tage die Start-VM neu hernehmen und dort nochmal von Anfang den neuen Style übernehmen. Ich teste das alles erst in der VM durch, bevor ich es auf dem Produktivsystem anwende (zu Recht, wie man sieht…).
Das Vorgehen so ist aber richtig?:
**- Daten-Import osm2pgsql mit hstore und -K und Verwendung des Style-Files

  • Kopieren von /inc-de, osm-de.xml, /symbol und /atkis-symbols nach /etc/mapnik-osm-data
  • Anpassen der renderd.conf (Verwenden von osm-de.xml statt osm.xml)
  • Neustart renderd**

Da die Karte für Autonavigation per Smartphone gedacht ist (Mono-Framework), wäre der deutsche Kartenstil schon super, da hier die Straßen dominanter dargestellt werden.
Vielen Dank auf jeden Fall schonmal für die schnelle Hilfe! Das habe ich natürlich übersehen…

Schön, dass Du wenigstens etwas weitergekommen bist.

Bezüglich der Reihenfolge bin ich mir nicht so sicher, evtl. kannst Du noch folgendes prüfen:

  1. &layer-amenity-points; in osm-de.xml auskommentieren, um zu sehen, ob noch weitere Fehler kommen
  2. Verweise prüfen, evtl. sind Dateien aus beiden Stilen vermischt:
    osm-de.xml > inc-de/entities.xml.inc > layers.xml.inc > layer-amenity-points.xml.inc

Sonst kann ich leider nicht weiterhelfen, da ich den aktuellen Stil (mit hstore und -K) und die Packages mit renderd noch nicht verwendet habe.

Mir fällt gerade noch ein:

Bei generate_xml.py muss man mit dem Parameter --inc das inc Verzeichnis angeben, falls es nicht “inc” lautet. Evlt. muss man das auch bei renderd konfigurieren, falls Du jetzt inc-de verwendest.

Alternativ Verzeichnis “inc-de” nach “inc” umbenennen und in der osm-de.xml wieder anpassen.

Ich habe es endlich hinbekommen, verstehe aber den letzten Fehler nicht ganz.
Wenn ich die Zeile 4130 drin lasse, dann bricht renderd weiterhin mit dem Fehler:

An error occurred while loading the map layer 'default': XML document not well formed: #012Entity 'layer-amenity-points' not defined (encountered in file '/etc/mapnik-osm-data/osm-de.xml' at line 4130)

ab. Alle anderen Dateien akzeptiert er aber ohne Murren. Zum Glück ist das ja nur eine Import-Anweisung, also einfach selbst den Inhalt der layer-amenity-points.xml.inc rauskopiert und an Stelle der Anweisung in Zeile 4130

&layer-amenity-points;

in die osm-de.xml eingefügt, fertig. Endlich sieht das aus wie der Shell-Atlas - vielen Dank nochmal :wink:
Jetzt steht eigentlich nur noch der Wechsel von renderd zu tirex an oder gibt`s da mittlerweile was besseres?

Wobei ich jetzt beim genaueren Anschauen der Karte leider feststellen muss, dass da doch noch nicht alles rund läuft. Irgendwie ist da ganz schön viel türkis, sodass es nach Überflutung ausschaut. Wo könnte da nun wieder der Fehler liegen?
Hier mal ein Screenshot (Karte Sachsen):

Jetzt aber! Der Fehler war, dass ich land_polygons mit der falschen Projektion genutzt habe (WGS84 statt Mercator).

Schön, dass es jetzt geklappt hat und Danke für’s Feedback.

Das layer-amenity-points Problem ist schon seltsam. Keine Idee was da schief läuft, aber Du hast ja 'ne Lösung gefunden.

Nicht dass ich wüsste, aber kommt halt wie immer auch auf den Anwendungsfall an. Für rein lokale Verwendung würde es anstatt Apache + mod_tile + renderd/tirex auch ein ganz einfacher Server wie TileLite tun. Für ganz große Anwendungen hat MapQuest was eigenes mit verteiltem Rendering entwickelt, siehe Blog-Einträge von Jochen Topf:

Tile Server Software
Using the MapQuest Render Stack for Multilingual Maps

Danke für die Links, mit dem MapQuest Render-Stack sollte dann auch höchsten Leistungsansprüchen entsprochen werden können. Glücklicherweise reicht die jetzige Konfiguration schon aus. Und hardwaremässig ist auch noch einiges drin :wink:

Wieso der Wechsel von renderd zu tirex?

Ohne Frage, es gibt Situationen wo Tirex besser als renderd ist, aber fuer den standard tileserver halte ich renderd nach wie vor fuer einfacher und besser. Insofern wuerde mich interessieren welche features Leute benoetigen die Tirex bietet und renderd nicht?

MapQuest’s render stack is gut wenn man so viel Performance benoetigt das man auf vielen Servern rendern muss (wobei selbst das renderd kann) aber selbst der haupt OSM tile server benoetigt diese Performance dezeit nicht.

Ich habe mich noch nicht näher mit den Funktionen von tirex befasst - bisher, vor allem nach Vornehmen optimierter Einstellungen für PostgreSQL, läuft der Server sehr gut, obwohl die Hardware verbesserungswürdig ist. Da wäre also, wenn Performance-Probleme auftreten, der erste Ansatzpunkt. Der nächste wäre das Vorschalten eines Proxies. Das dürfte aber momentan sowieso noch nicht benötigt werden, da die einzigen Clients Smartphones sind und da ist der Bildschirm schon mit 4 Kacheln ausgefüllt. Selbst auf meinem 24" Monitor geht das bei nicht vorgerenderten Zoomstufen schon sehr schnell.
Solange das so bleibt, wird nix geändet: Never change a running system :wink: