Imagico.de

blog

lz_980
lz_980

Über die Darstellung von Landbedeckung bei kleinen Maßstäben

| 6 Kommentare

Was ich hier vorstelle ist eigentlich was, an dem zu arbeiten ich für das OSM-Hack-Weekend diesen Herbstes geplant hatte aber ich habe beim ersten Vorbereiten davon recht schnell gute Fortschritte gemacht so dass ich entschieden habe gleich weiterzumachen. Wen das Thema interessiert der kann natürlich trotzdem gerne beim Hack-Weekend vorbeischauen um darüber zu reden.

In vielerlei Hinsicht knüpft dies an meine Arbeit vom letzten Jahr an der Darstellung der Wasserflächen bei den niedrigen Zoomstufen an, etwas, was bis jetzt leider noch keine weitere Verbreitung gefunden hat, vermutlich weil das Ganze für den typischen Karten-Entwickler ein ziemlich merkwürdiger und verwirrender Ansatz ist und ich mir auch nie die Mühe gemacht habe, eine echte Demonstration aufzusetzen. Auf der technischen Ebene ist das was ich hier vorstelle in gewisser Hinsicht eine Weiterentwicklung der Arbeit an den Wasserflächen, allerdings auch kombiniert mit einigen Gestaltungs-Ideen, die mir die letzten Monate gekommen sind.

Wasserflächen-Darstellung vom letzten Jahr

Die Erfassung von Landbedeckung (und ich verstehe als solche hier alles, wo in OSM ein Teil der Erdoberfläche aufgrund seiner physikalischen Eigenschaften oder seiner primären menschlichen Nutzung erfasst wird – Wälder, Ackerland, bebaute Flächen und so weiter) ist ein wichtiger Teil von OpenStreetMap und ein bedeutendes Alleinstellungsmerkmal des Projektes. Daten für Dinge wie Gebäude, Straßen oder Adressen sind – auch wenn es dies alles natürlich in OpenStreetMap gibt – in weiten Teilen der Welt auch aus anderen Quellen erhältlich und oft sogar in vergleichbarer Qualität. Alternative Quellen für Landbedeckungs-Daten von außerhalb von OSM jedoch sind gewöhnlich entweder ziemlich veraltet, basieren auf automatischer Klassifikation von Satellitendaten, was nicht immer zuverlässig funktioniert und worüber viele Unterschiede nicht erfassbar sind, oder die Daten stellen einen Soll-Zustand aus Perspektive lokaler Behörden und weniger einen Ist-Zustand dar.

Viele Karten auf OSM-Basis stellen Landbedeckung bei den hohen Zoomstufen dar – entweder in einheitlicher Farbe oder über Muster. Bei kleineren Maßstäben ist die Darstellung der Landbedeckung auch oft nützlich, insbesondere um urbane und ländliche Gebiete abzugrenzen und damit der Kartennutzer verschiedene Naturräume identifizieren kann, gerade auch dann wenn die Karte kein Relief darstellt. Bei kleinen Maßstäben geht es dabei meist nicht um die konkrete Form eines einzelnen Landbedeckungs-Polygons, sondern um die allgemeine Verteilung der verschiedene Flächen-Klassen. Und durch den variablen Maßstab der Mercator-Projektion treten bestimmte Anforderungen an die Darstellung bei recht unterschiedlichen Zoomstufen auf, je nachdem wo auf der Erde man hinschaut.

Auf Grundlage dieser Anforderungen gibt es bei der Darstellung in einheitlicher Farbe dann mehrere Möglichkeiten, wie man beim Herauszoomen vorgehen kann:

  1. Man lässt sukzessive einzelne Klassen der Landbedeckung weg. Dies ist was der OSM-Standardstil seit langem macht. Wasserflächen und Gletscher werden ab z6 gezeigt, Wälder ab z8 und die meisten übrigen Klassen ab z10. Das ist hochproblematisch aufgrund der subjektiven geographischen Präferenzen, die dadurch zum Ausdruck kommen. Auch wird durch das Weglassen die Lesbarkeit nicht unbedingt besser, insbesondere wenn die lokal dominierenden Landbedeckungen nicht weggelassen werden.
  2. Man lässt die Farben verblassen (vorzugsweise in einer farbneutralen und gleichmäßigen Form – nicht wie neuerdings in OSM-Carto) – ich würde sagen das ist das kartographische Equivalent zu give up and use tables.
  3. Man führt eine geometrische Generalisierung der Flächen durch. Dies ist schwierig, wenn das Ergebnis gut aussehen soll, insbesondere auf den sehr niedrigen Zoomstufen und wenn man eine größere Anzahl von Landbedeckungs-Klassen darstellen möchte und es ist letztendlich eine recht subjektive Darstellungsform und unvermeidbar recht spezifisch für den jeweiligen Verwendungszweck der Karte. Hier ein Beispiel einer rudimentären Visualisierung generalisierter Wald- und Siedlungsflächen sowie Gewässer.

Beispiel für generalisierte Landbedeckungs-Flächen

  1. Man stellt die Landbedeckung weiter genau wie auf den hohen Zoomstufen dar.
  2. Man kann die Landbedeckungs-Klassen für die niedrigen Zoomstufen in eine geringere Anzahl von Klassen zusammenfassen.

Die letzten beiden Möglichkeiten sind das, was ich hier demonstrieren möchte. Dies sind im Grunde keine praktisch verwendbaren Möglichkeiten, wenn man mit Mapnik oder vergleichbaren Renderern arbeitet, da man hierbei bei den niedrigen Zoomstufen sukzessive Probleme mit der Performance der Berechnung und mit Darstellungs-Artefakten bekommt (wie ich letztes Jahr im Zusammenhang mit den Wasserflächen erläutert habe). Man kann natürlich auch mit Mapnik & Co. ein Ergebnis für einen solchen Ansatz erhalten, das ist dann jedoch nicht wirklich noch eine Visualisierung der Daten, sondern das abstrakte Ergebnis eines Algorithmus, welcher für etwas verwendet wurde, wofür er eigentlich nicht gedacht ist.

Die Demonstration, die ich hier vorstelle, stellt die Landbedeckungs- und Gewässer-Flächen separat mit einer eigens dafür entwickelten Methode dar und ich kombiniere das dann mit dem separat und konventionell gerendertem Rest der Karte. Das ganze funktioniert nicht direkt, denn verschiedene Techniken im OSM-Standard-Kartenstil funktionieren nur, wenn auch die Landbedeckung in der selben Darstellung produziert wird. Ich musste deshalb einige Änderungen vornehmen, insbesondere verwende ich vorverarbeitete Daten für die Grenzen – was es auch erlaubt, endlich auf die Natural-Earth-Daten bei den ganz niedrigen Zoomstufen zu verzichten und die falschen Grenzen am 180-Grad-Meridian zu entfernen.

Landbedeckungs- und Wasser-Flächen allein in OSM-Carto-Farben bei z9

Die Karte zeigt die Zoomstufen 1 bis 9. Von z10 aufwärts stellt der Standardstil die meisten Landbedeckungen aus OSM dar obwohl die aktuelle Version dies unschön in verblassten und verzerrten Farben tut – eine Version ohne diese verblasste Darstellung bekommt man bei der Geofabrik. Für den alternative-colors-Stil hab ich derzeit keine Demo für die höheren Zoomstufen.

Ich könnte noch eine ganze Menge zu den Unterschieden im alternative-colors-Stil sagen, aber das würde hier ein bisschen am Thema vorbeigehen – vielleicht ein Thema für einen zukünftigen Beitrag. Für die Landbedeckung verwendet dieser Stil den Ansatz, beim Herauszoomen Landbedeckungs-Klassen zusammenzufassen. Hier eine Illustration dieses Zusammenfassungs-Schemas:

Wie die Landbedeckungs-Klassen zusammengefasst werden

Bei z9 und darunter gibt es vier Landbedeckungs-Klassen (zusätzlich zur Hintergrundfarbe für Gegenden ohne Landbedeckungs-Daten natürlich). Dazu zwei Gletscher- und drei Wasserflächen-Farben. Daneben noch die Farbe für Watt-Bereiche im Meer, welche separat dargestellt werden. Die Zusammenfassung der Klassen geschieht natürlich letztendlich nach subjektiven Maßstäben und was für Klassen in eine neue Über-Klasse eingehen ist oft keine einfache Entscheidung. Ich habe Friedhöfe zum Beispiel bei niedriger Vegetation eingeordnet auch wenn solche auch mit Bäumen bewachsen oder vegetations-frei eine können.

Da ich die Darstellung in separaten Ebenen produziert habe kann man die einzelnen Ebenen an und ausschalten und so die verschiedenen Varianten mit und ohne Landbedeckungs-Darstellung betrachten.

Landbedeckungs- und Wasserflächen für den alternative-colors-Stil

Mit Linien und Beschriftungen

Es gibt daneben auch eine Fallback-Ebene für die Landbedeckung im alternative-colors-Stil auf Basis der Green-Marble-Vegetationskarte. Diese Darstellung passt natürlich nicht perfekt zu der Definition der zusammengefassten Landbedeckungs-Klassen aber sie ist recht nahe dran. Dort wo die Landbedeckungs-Erfassung in OSM Lücken aufweist kann man diese Ebene zur Ergänzung nutzen und erhält so ein global gleichmäßigeres Kartenbild, welches weniger von der Vollständigkeit der Erfassung in OSM abhängt. Man könnte dies als potentielles Bild einer zukünftigen perfekten OSM-Datenbank interpretieren. Man sollte dabei jedoch beachten, dass die Landbedeckungs-Erfassung in OpenStreetMap nicht auf der Idee basiert, dass jeder Quadratmeter der Erdoberfläche in irgendeiner Form erfasst und klassifiziert werden soll – geschweige denn, dass alles was so erfasst wird auch sinnvoll in einer Karte wie dieser dargestellt werden könnte.

Normale Darstellung ausschließlich aus OSM-Daten

Mit Fallback-Ebene

Ich hab noch nicht über die technische Seite des Ganzen geschrieben, aber wie gesagt lässt sich diese Art der Darstellung nicht intern in Mapnik oder ähnlichen Programmen produzieren. Die Landbedeckung und Wasser-Flächen sind mit einem Supersampling-Ansatz gerendert, ein Verfahren, welches ich detaillierter schon bei den Wasserflächen erläutert habe. Das Verfahren ist im Grunde ein Gegenpol zur konventionellen Darstellung mit Programmen wie Mapnik – es funktioniert dort sehr gut wo etwas mit Mapnik extrem schwierig oder unmöglich ist während dort wo Mapnik glänzt dieser Ansatz meist nicht besonders geeignet ist. Das schöne an diesem Ansatz ist daneben, dass der aufwändige Teil des Darstellungs-Prozesses, das Erstellen des Sample-Caches, generisch ist, d.h. unabhängig ist von der eigentlichen Gestaltung mit den Farben und unabhängig von der Zoomstufe. Die beiden unterschiedlichen Farb-Schemata sind für alle Zoomstufen auf Grundlage des selben Renderings produziert. Ich habe im Moment keinen Veröffentlichungs-fähigen Code, denn die Implementierung ist recht rudimentär ohne eine wirkliche Schnittstelle, über die man die Parameter des Stils definieren kann. Einen Aspekt sollte ich noch erwähnen – da die Landbedeckungs-Daten mit Osmium verarbeitet wurden fehlen eine ganze Reihe defekter Geometrien, welche normalerweise in einer Darstellung aus einer osm2pgsql-Datenbank vorhanden wären.

Zur Demo-Karte – am Ende ist das natürlich für die meisten Anwendungen keine wirklich tolle Karte – dafür versucht sie, wie der OSM-Standardstil auf dem sie basiert auch – einfach zu viele Dinge gleichzeitig zu tun. Der Hauptzweck ist hier, eine Implementierung der Ansätze 4 und 5 in der Liste oben in solider Qualität zu zeigen. Meine eigene Meinung ist, dass dies die Ansätze 1 und 2 mit Leichtigkeit schlägt, insbesondere in Hinblick auf die Rückmeldung an Mapper und eine neutrale und unvoreingenommene Darstellungsform aber letztendlich muss das jeder selbst entscheiden. Auf jeden Fall ist das Ergebnis jedoch besser als jeder Versuch, Ansatz 4 oder 5 durch irgendwelche Tricks mit Mapnik zu implementieren.

Um die Demo-Karte zu sehen kann man auf jedes der gezeigten Beispiele klicken und kommt so zu der Karte in der jeweils im Beispiel sichtbaren Ebenen-Konfiguration. Da die Karte aus mehreren teiltransparenten Ebenen aufgebaut ist, müssen für die Anzeige deutlich mehr Daten geladen werden als bei anderen Karten, so dass die Darstellung etwas langsamer sein dürfte.

6 Kommentare

  1. Das Ergebnis kann sich jedenfalls sehen lassen. Auch die Landbedeckungsklassifizierung ist sehr gut gewählt. Was es jedenfalls zeigt – auch in den OSM-Carto Farben – ist, dass einem derzeit eine unglaubliche Vielfalt und Schönheit der Karte in den unteren Zoomstufen entgeht.

    • Danke.

      Wobei das Weglassen von Dingen natürlich schon von zentraler Bedeutung für kleinmaßstäbliche Karten ist. Aber für die Rückmeldung an Mapper muß man natürlich schon intensiv darüber nachdenken, was man weglassen sollte. Und dass einem zum Beispiel die falschen Parks in Kanada und Island erst in so einer Darstellung ins Auge springen ist ein deutliches Indiz dafür, dass da im Standardstil was nicht optimal ist.

  2. Der Ansatz der alternativen Farben hat, gegenüber dem Osm-Carto-Ansatz, das grundsätzliche (und meines Erachtens kaum lösbare) Problem der Scheingenauigkeit.

    • Danke für den Kommentar, Ich verstehe diese Bemerkung jedoch inhaltlich nicht, kann also dazu nicht Stellung nehmen. Bitte ggf. noch mal detaillierter erklären, was damit gemeint ist.

      • Ein Beispiel macht es vermutlich deutlicher: Die Karte weist in Z9 eine exakt umrissene hellgrüne Fläche aus. Umgeben von blauen (Wasser), graunen (Besiedlung) und weissen (Nichts) Flächen. Der Betrachter vermutet “Grünland”. In den Zommstufen 11/12 teilt sich die Fläche plötzlich in Ackerland, Campingplatz und Weiteres auf. Diese Flächen erhalten andere Farben, “Grünland”" bleibt aber hellgrün. Das heißt, in Z9 war die Karte nur schinbar genau. Der Betrachter ist irritiert. Oder anders ausgedrückt: Der Ansatz der alternativen Farben differenziert entweder zuwenige oder zuviele Farben. Im ersten Fall (zuwenige Farben) wäre eine Korrektur in Richtung des OSM-Carto-Ansatzes erforderlich. Im zweiten Fall (zuviele Farben) wäre man eigentlich beim Fallback-Ansatz.

        • Ok, jetzt verstehe ich das Problem.

          Das hat meines Erachtens zwei Ursachen:

          • Die Farbpalette im Standardstil ist in dieser Hinsicht hochgradig inhomogen, was heißen soll, dass sie die Regel The difference in rendering between different types of features should foremost be based on their difference in meaning and purpose for the target map users (siehe hier) verletzt. Es gibt im Grunde zwei Farblinien im Standardstil für bewachsene Flächen, eine grüne und eine braune. Der Bedeutungsunterschied zwischen landuse=meadow und landuse=farmland ist minimal, man könnte sogar sagen, dass beide überlappen, dennoch ist der farbliche Abstand zwischen beiden erheblich. Deshalb gibt es hier einen relativ starken farblichen Sprung bei der Zusammenfassung, deutlich stärker als bei der Zusammenfassung von forest/scrub/orchard.
          • Die Besonderheiten der Farbpalette in OSM-Carto sind etwas, woran sich Kartennutzer und Mapper über die Jahre gewöhnt haben, weshalb eine deutlich abweichende farbliche Gestaltung irritierend wirken kann und der farbliche Sprung als falsch wahrgenommen wird.

          Die Beobachtung “Grünland” bleibt aber hellgrün ist jedoch falsch, die Farbe für die aggregierte niedrige Vegetation ist zwar ein bisschen näher an @grass als an @farmland, aber nicht so viel näher, dass man den Unterschied nicht sehen kann.

          Man könnte die Sache jetzt dadurch lösen, dass man die zwei Farblinien aus der OSM-Carto-Palette bei den niedrigen Zoomstufen beibehält und eine vierte Farbe einführt. Dies würde aber dann zwangsläufig dazu führen, dass sehr ähnliche Dinge (meadow und farmland) unterschiedlich dargestellt werden, sehr unterschiedliche Dinge auf der anderen Seite jedoch gleich.

Hinterlassen Sie eine Antwort

Pflichtfelder sind mit * markiert.

*

CAPTCHA

*