Wie kann man Küsten verallgemeinern?

12

Ich habe eine große Anzahl von Datenpunkten, die im Wesentlichen die Küste der Welt darstellen. Ich kenne die genaue Auflösung nicht, aber ich würde sagen, es liegt in der Nähe von 5-10 m.

Stellen Sie sich eine Reihe von Punkten vor, die eine gezackte Küste darstellen. Bei einer Auflösung von 1 m sehen wir alle Details und benötigen 50 Datenpunkte, um die Küste korrekt darzustellen. Bei einer Auflösung von 10 km sieht die Küste jedoch wie eine gerade Linie aus und wir benötigen nur 2 Punkte.

Ich schreibe eine Kartenanwendung, bei der die Daten von "Full-Planet" -Auflösungen auf "Street" -Auflösungen skaliert werden müssen. Ich benötige Hilfe beim Reduzieren der Auflösung meiner Datenpunkte und anschließend der Datenmenge für größere Auflösungen.

Ich habe über Vector-Tiling gelesen und denke, dass dies die beste Lösung ist (ich mache bereits so etwas), aber bei den niedrigen Auflösungen ist mein Datensatz immer noch riesig, was bedeutet, dass das Rendern relativ lange dauert Zeit, wo wie die hohen Auflösungen schnell sind, weil der "effektive" Datensatz klein ist (Teilmenge des Ganzen).

Ich versuche herauszufinden, wie ich mein großes Dataset aufnehmen und verkleinern soll, damit die Kacheldaten meiner Gesamtplanetenansicht eine überschaubare Größe haben. Wie erstelle ich die Kachel-Unterdatensätze aus dem größeren vollständigen Datensatz?

Ich benutze gerne ein Tool, aber ich mache es lieber selbst, um zu lernen, wie es gemacht wird.

Stephan
quelle
1
Haben Sie die Antworten auf gis.stackexchange.com/questions/6585/… überprüft ? Bitte erläutern Sie, wenn Sie der Meinung sind, dass Ihre Frage anders ist.
Underdunkel
1
Anscheinend sollte die Frage nach Küsten statt nach "Punkten" lauten. Sollten kleine Inseln mit abnehmender Auflösung verschwinden? Ist es in Ordnung, Küsten um dünne Serpentineninseln zu überqueren?
Kirk Kuykendall
Wenn Sie nur einen passablen Job machen und weitermachen möchten, ist die Antwort von @R Thiede wahrscheinlich der beste Ausgangspunkt. Wenn Sie an der eigentlichen Herausforderung arbeiten und die Linienführung vereinfachen möchten, ohne die Bedeutung der Formen zu verlieren, lesen Sie die entsprechenden Fragen unter gis.stackexchange.com/questions/38/… und gis.stackexchange.com/questions/440/… .
Matt Wilkie

Antworten:

7

Wie Sie dieses Problem lösen, hängt vom Einzelfall ab und davon, wie wichtig die tatsächliche Topologie für Sie ist (im Vergleich zu nur der visuellen Darstellung / Renderzeit). Da es Ihr letztes Ziel ist, die Küsten zu verallgemeinern, können Sie einige nützliche Ideen zur Verallgemeinerung finden.

Ein Ansatz nutzt Pufferung, wie hier zu sehen . Ich hatte vor einiger Zeit auch ein ähnliches Problem und habe meine Lösung hier beschrieben .

Kurz gesagt, Sie können separate Vektordatensätze (oder zumindest separate Geometrien) verwenden, die auf verschiedene Ebenen verallgemeinert sind. Dies behebt Ihr Grundproblem, obwohl es keine Kacheln verwendet, aber Sie können diese natürlich trotzdem verwenden, wenn Sie möchten. Wenn Sie Ihr Dataset auf der Grundlage eines Rasters in Kacheln aufteilen möchten, müssen Sie zunächst eine Verallgemeinerung vornehmen, da sonst Lücken zwischen den Kacheln entstehen.

R Thiede
quelle
+1 für eine nachdenkliche Antwort. Willkommen auf unserer Seite, Rüdiger!
whuber
5

Sie sollten verschiedene verallgemeinerte Versionen Ihres Datensatzes für Zoomstufen "ganzer Planet" bis zum Nahzoom vorbereiten.

Ein klassischer Verallgemeinerungsalgorithmus ist der Douglas-Peucker-Algorithmus . Sie müssen die Punkte zuerst mit den Küstenlinien verbinden, wenn Sie dies noch nicht getan haben.

Underdunkel
quelle
2
In der GEOS-Bibliothek sind Douglas-Peucker-Algorithmen integriert, die Sie verwenden können, wenn Sie diese selbst codieren möchten. Sie sollten jedoch die Topologie in Betracht ziehen. In diesem Fall kann auch das Tool GRASS v.generalize Abhilfe schaffen.
Lagerratrobe
Hallo @lagerratrobe. Ich habe dieses Antwort-Community-Wiki erstellt, damit Sie es direkt bearbeiten und GEOS- und GRASS-Lösungen hinzufügen können.
Underdunkel