Ich versuche, mit QGIS 2.14 ein Straßennetz an einem hexagonalen Raster auszurichten, aber es treten merkwürdige Artefakte auf.
Ich habe mit MMQGIS ein Hex-Gitter erstellt , die Zellen sind ca. 20 x 23 m groß . Ich habe das Straßennetz um 1 m gepuffert und verdichtet , sodass alle paar Meter ein Knoten vorhanden ist. Sie können unten sehen, was ich zu erreichen versuche. Wie Sie sehen, kann ich es in einigen Fällen zum Laufen bringen:
- blau ist die verdichtete Straße (eine gepufferte Linie)
- rot ist die "hexifizierte" Version - das ist, was ich finden möchte
- Das Grau ist das Hex-Gitter
Anschließend habe ich die neue Funktion " Geometrien fangen" verwendet, um die Knoten an der nächstgelegenen Sechseckecke zu fangen. Die Ergebnisse sind vielversprechend, aber es scheint einige Randfälle zu geben, bei denen sich die Linie ausdehnt, um das Sechseck (oder einen Teil davon) auszufüllen:
Der Grund für den Puffer ist , dass Snap - Geometrien nicht , dass Sie auf eine Schicht schnappen sich lassen , deren Geometrie ist anders. Sie können beispielsweise keine Knoten auf einer LINE-Ebene an Punkten auf einer POINT-Ebene ausrichten. Es scheint am glücklichsten zu sein, POLYGON an POLYGON zu knipsen.
Ich vermute, die Straßen dehnen sich aus, wenn eine Seite der gepufferten Straßenlinie zur einen Seite der Hex-Zelle und die andere Seite zur anderen Seite der Hex-Zelle springt. In meinem Beispiel scheinen die Straßen, die sich in einem spitzen Winkel nach West-Ost kreuzen, die schlechtesten zu sein.
Dinge, die ich erfolglos versucht habe:
- Puffern des Straßennetzes um einen winzigen Betrag, so dass es ein Polygon bleibt, aber sehr dünn ist.
- Verdichtung der hexadezimalen Zellen (also gibt es Knoten entlang der Kanten, nicht nur an den Ecken)
- Variieren der maximalen Fangentfernung (dies hat den größten Effekt, aber ich kann scheinbar keinen idealen Wert finden)
- unter Verwendung von LINE-Ebenen, nicht von POLYGONen
Ich finde, wenn ich nur LINE-Ebenen verwende, funktioniert es eine Weile und stürzt dann ab. Es scheint seine Arbeit zu retten, da einige Zeilen teilweise verarbeitet wurden.
Kennt jemand eine andere Möglichkeit, um Punkte auf einer Linie zum nächsten Punkt auf einer anderen Linie / Polygonebene zu fangen, idealerweise ohne die Verwendung von Postgres / Postgis (obwohl eine Lösung mit Postgis auch wünschenswert wäre)?
BEARBEITEN
Für alle, die es ausprobieren möchten, habe ich hier auf Dropbox ein QGIS- Startprojekt eingestellt . Dies schließt die Ebenen Hex Grid und Densified lines ein. (Das Straßennetz stammt von OSM und kann mit QuickOSM heruntergeladen werden, z. B. wenn Sie das Original benötigen, um die Straßen zu verdichten.)
Beachten Sie, dass es sich bei OSGB (epsg: 27700) um eine lokalisierte UTM für Großbritannien mit Einheiten in Metern handelt.