Ich erstelle eine Karte mit Informationen zu öffentlichen Verkehrsmitteln: Busse, Straßenbahnen usw. Die Karte enthält einen Layer, der beispielsweise die Straßenbahnlinien enthält. Jede Linie hat ihre eigene Farbe und wird durch eine Linienzeichenfolgengeometrie dargestellt.
Das Problem ist, dass viele der Linien überlappende Teile haben, wobei mehr als eine Straßenbahnlinie denselben Abschnitt abdeckt. Um dies dem Benutzer zu zeigen, möchte ich lieber, dass die Linien parallel zueinander verlaufen, anstatt übereinander gezeichnet zu werden. Sehen Sie sich als Beispiel an, wie Google Maps die New Yorker U-Bahnlinien anzeigt.
Ich vermute, dass dies ein häufiges Problem in der Kartografie ist, weiß aber nicht, nach welcher Terminologie ich suchen soll.
Ich verwende PostGIS / GeoServer / OpenLayers als meinen Stack, aber jede Open Source-Lösung wäre akzeptabel.
Antworten:
Wenn Sie mehr über diesen Bereich erfahren möchten, wird das Problem als kartografische Verschiebung und als ein Aspekt der kartografischen Verallgemeinerung bezeichnet .
Ein paar Artikel über Verschiebungen und Lösungsansätze für das Problem:
Bader, Matthias. 2001. Energieminimierungsmethoden für die Merkmalsverschiebung bei der Kartenverallgemeinerung.
Steiniger, S. Tefan S. und S. Iegfried M. Eier. Schlangen: Eine Technik zum Glätten und Verschieben von Linien in der Kartenverallgemeinerung: 1-11.
Ware, Mark J und Christopher B. Jones. 1998. Konfliktlösung bei der Kartenverallgemeinerung mit iterativer Verbesserung. GeoInformatica 2, Nr. 4: 383-407 +.
quelle
Dieses Problem ist sehr typisch für die kartografische Verallgemeinerung. Dafür gibt es automatisierte Methoden, aber es sind noch keine Implementierungen verfügbar.
Auf " Beams " und " Snakes " basierende Methoden liefern effiziente Ergebnisse zur Lösung dieser kartografischen Konflikte von Netzwerkdaten (siehe auch die Referenzen von scw ). Hier sind einige Ergebnisse der Beam-Algorithmen für Straßendaten:
Vor:
Nach:
Siehe auch dieses Dokument und diese Präsentation , in denen erklärt wird, wie diese Transformation durchgeführt wird .
EDIT: Ich habe es noch nie getestet, aber es scheint, dass es in GRASS etwas gibt, das mit Schlangen zu tun hat. Sehen Sie hier .
quelle
Ich kenne keine Lösung, aber ich denke, der Begriff, den Sie suchen, ist "Konfliktlösung" - ein Thema der Kartenverallgemeinerung. Eine Google-Suche zu "Kartenverallgemeinerungskonflikten" zeigt einige interessante Informationen - aber ich weiß nicht, dass es viel praktischen Nutzen gibt.
quelle
In aktuellen Implementierungen finden Sie häufig entweder "Versatz" oder "Versetzung". Unter Verwendung Ihres aktuellen Stacks ist es etwas schwierig, automatisch parallele Linien zu erstellen:
Um es zusammenzufassen: Der einfachste Weg, den ich kenne, wäre, UMN Mapserver und den Offset-Wert dort zu verwenden. Beispielstil für Ihr Mapfile:
quelle
Wenn Sie Linienebenen zeichnen, die sich überlappen, haben Sie verschiedene Optionen, damit der Betrachter alle Linien sehen kann.
Ich verwende GeoServer nicht, aber ich weiß, dass MapServer über die Funktionalität verfügt, um all diese Dinge zu erledigen. Es ist wahrscheinlich, dass GeoServer dies auch tut.
quelle