x

Mapnik:Individuelle Einfärbung einzelner Gebäude gelingt nur begrenzt.


Geschrieben von lakul (Gast) am 15. Februar 2013 10:32:11: [flux]

Hallo,

ich bin mir nicht ganz sicher, ob ich mit meiner Frage hier richtig bin, aber ich versuche es einfach mal.

Ich habe einen Tile Server aufgesetzt und mit osm2psql (inkl. hstore) Sachsen eingelesen. Jetzt rendere ich die Karten mit Mapnik. Das funktioniert auch alles wunderbar.
Jetzt malträtiere ich gerade die XML Dateien, welche für die Farbgestaltung bei Mapnik verantwortlich sind, denn wir möchten gerne die Gebäude der TU Dresden farblich hervorheben. Soweit klappt das auch recht gut. Du meisten Gebäude fange ich über den Tag "operator" ab und dort wo der Tag nicht vorhanden ist, oder der "operator" nicht die TU Dresden ist (z.B. bei angemieteten Gebäuden), nutze ich z.B. addr:housename oder andere markante Tags.
Mein Problem ist, dass es Gebäude gibt, welche Gebäudeteile haben, wie z.B. das Hauptgebäude der TU Dresden, der Beyer-Bau. Die Multi Relation konnte ich problemlos einfärben. Aber, der Turm welcher nur aus building:part = yes und roof:shape = dome besteht bleibt im ursprünglichen OSM braun. Diese Tags sind einfach zu allgemein um sie zum Einfärben zu nutzen, ich würde ja quasi alle anderen Polygone, welche ebenfalls die Tags besitzen ebenfalls einfärben. Somit kommen wir zu meiner ersten Frage. Ich brauche diese Gebäudeteile eigentlich gar nicht. Wie kann ich erreichen, dass Mapnik diese ganz und gar ignoriert, oder kann ich sie doch irgendwie einfärben?
Ich habe in meiner bisherigen google Suche herausgefunden, dass Mapnik derartige Dinge ignoriert. Diese Aussage ist zumindest in der Default Config von Mapnik korrekt. Allerdings kann man Mapnik eigentlich mit allem füttern, vorausgesetzt die Daten sind in der PostgreSQL DB vorhanden und man hat die SQL Abfragen in Mapnik entsprechend ergänzt. So habe ich z.B. den Tag operator hinzugefügt und kann diesen jetzt auch für die Einfärbung nutzen. Ich weiß aber einfach bei den Gebäudeteilen nicht mehr weiter.
Weiterhin ist mir bekannt, das osm2psql keine Site Relationen kennt, was ebenfalls ein Problem ist, denn somit kann ich diese Gebäude ebenfalls nicht über markante Tags ansprechen. Die markanten Tags wie operator oder addr:housname oder name sind eben der Site Relation zugeordnet und daher für mich nicht ansprechbar. Die einzelnen Gebäudeteile haben meist nur building = yes und das reicht natürlich nicht.
Meine erste Lösungsidee ist es osm2pgsqlumzuschreiben und der Software das beizubringen, was ich will (vermutlich aufwändig) und löst auch das Problem mit den Gebäudeteilen nicht. Site Relationen kann ich osm2pgsql sicher beibringen, aber die Gebäudeteile bekommen ja nicht plötzlich mehr Informationen durch die Anpassung.
Meine zweite Idee wäre es osm2pgsql zu sagen, dass es bestimmten Polygonen, Relationen etc. einen zusätzlichen Tag (z.B. color_rendering = yes) beim Import verpasst an wenn das Polygon in einem bestimmten Koordinatenbereich liegt. Ist ebenfalls sehr aufwendig, weil ich alle Koordinaten für jedes einzelne Gebäude raussuchen und übergeben müsste, denn es kann durchaus mal passieren, dass auf dem Campus Gebäude liegen, die nicht eingefärbt werden soll. Weiterhin würde ich ja sonst auch Straßen etc. erwischen.

So genug Brainstorming für mich alleine gemacht 😉.
Hat jemand von euch bereits Erfahrungen auf dem Gebiet sammeln können und einen Tipp für mich?

Vielen Dank!

lakul


Antworten: