Mehr

Gibt es einen Unterschied in den Ergebnissen zwischen dem Vereinfachen einer Geometrie durch verschiedene Projektionen?

Gibt es einen Unterschied in den Ergebnissen zwischen dem Vereinfachen einer Geometrie durch verschiedene Projektionen?


Wir haben Geometrien in einer PostGIS-Datenbank, die in srid 4326 projiziert wurde. Diese Geometrien müssen mit ST_SimplifyPreserveTopology vereinfacht werden.

Meine Frage ist, ob diese Geometrie in eine andere Projektion umgewandelt werden muss - wie 3400 in Alberta, Kanada -, um sie in Metern statt in Grad genau zu vereinfachen: Wenn sie in Grad vereinfacht würde, würden Punkte häufiger auf den Teilen der Geometrie weiter vom Äquator entfernt (wegen der Art und Weise, wie sich Grad um die Erde biegen)?

Oder würde die Funktion unabhängig von der Projektion Punkte in der gleichen Frequenz und Position entfernen, wenn die gleiche Region als Test verwendet wird?


Da der Douglas-Peucker-Algorithmus so funktioniert, dass er iterativ die Punkte, die innerhalb einer bestimmten Toleranz liegen, von einer Linie zwischen zwei anderen Punkten in einer bestimmten Eingabeeinheit entfernt, können Sie davon ausgehen, dass Sie bei einer Geometrie, die eine große Nord-Süd-Entfernung abdeckt, erhalten größere Vereinfachungen für eine gegebene Toleranz in Grad, wenn Sie sich weiter nach Süden bewegen. Ich glaube, dass dies ungefähr mit der Sekante skaliert wird, wie beim Skalierungsfaktor in einer Mercator-Projektion, denn im Wesentlichen verhält sich der Algorithmus, wenn Sie Grad auf diese Weise verwenden, so, als ob die Eingabe als Abstände projiziert wird, die zur Berechnung der Toleranz von a . verwendet werden Punkt von einer Linie zwischen zwei anderen Punkten ist euklidisch.

Also, ja, Sie sollten besser ein projiziertes Koordinatensystem verwenden. Ich weiß nicht viel über die 3400-Projektion, aber ich habe mit der britischen 27700 gearbeitet, die ebenfalls Transverse Mercator ist und daher eine konstante Skalierung in Nord-Süd-Richtung und eine zunehmende (aber kleine) Verzerrung auf beiden Seiten der Mitte aufweist Meridian der Projektion wäre ideal -- also ideal für ST_Simplify.

Etwas wie:

WÄHLEN Sie ST_SimplifyPreserveTopology(ST_Transform(geom, 3400), Toleranz) VON einer Tabelle aus;

sollte arbeiten.

Letztendlich können Sie den Unterschied jederzeit mit Maßnahmen wieST_BereichoderST_Npointseine mit 4326 und eine mit 3400, um ein Gefühl für die Unterschiede zu bekommen.

Nebenbei bemerkt gibt es einen alternativen Vereinfachungsalgorithmus, an dem Sie interessiert sein könnten, genannt visvalingam-whyatt, der für Sie von Interesse sein könnte. Die obigen Links zum Quellcode stammen von Mike Bostock, dem Schöpfer von D3.js. Auch so Mapshaper für ein funktionierendes Beispiel.