Ich habe viele Fragen gesehen, bei denen es darum ging, eine Linie mithilfe einer Punktebene zu teilen.
Ich möchte eine Linie in Bruchteile ihrer Länge aufteilen.
Zum Beispiel habe ich eine Linie mit 400
einer Länge von Metern, die ich in vier Linien mit einer Länge von jeweils 100 Metern aufteilen möchte.
Es gibt v.split
das Grasmodul, aber ich erhalte eine Fehlermeldung, wenn ich es über die qgis-Toolbox starte:
*"TypeError: object of type 'NoneType' has no len()"*
Ich bin mir also nicht sicher, ob es funktioniert, wenn dies eine Lösung wäre.
qgis
line
digitizing
Gilles
quelle
quelle
Antworten:
Die Funktion v.split.length von GRASS sollte genau das tun, was Sie möchten, indem Sie die Linie in gleiche Segmente aufteilen, die vom Benutzer definiert wurden, ohne dass eine Punktebene erforderlich ist. Hier ist ein einfaches Beispiel für eine gerade Linie (sie funktioniert auch bei nicht geraden und mehreren Linien):
Ich habe eine Spalte hinzugefügt, um ihre Länge mit
$length
dem folgenden Ausdruck zu berechnen :Mit der Funktion v.split.length von GRASS über die Processing Toolbox habe ich die Linie in 25 m lange Segmente aufgeteilt, die insgesamt 4 Teile umfassen sollen:
Ich habe dann die Längenspalte der Ausgabeebene aktualisiert und den gleichen Befehl wie oben verwendet, um die Länge neu zu berechnen:
Sie sind sich nicht sicher, warum Sie den Fehler erhalten. Können Sie Ihre Linienebene für Testzwecke freigeben?
quelle
Nehmen wir an, es gibt eine Polylinienebene namens
"lines"
.Ich kann vorschlagen, eine "virtuelle Schicht" durch zu verwenden
Layer > Add Layer > Add/Edit Virtual Layer...
Es gibt mehrere mögliche Fälle:
Fall 1. Aufteilen der Linie in gleiche Segmente, im Grunde gleiche Länge, die vom Benutzer definiert wird.
Mit der folgenden Abfrage ist es möglich, das Ergebnis zu erzielen. Um die Segmentlänge zu erhöhen / zu verringern, stellen Sie bitte den Eingang
1000 AS step_length
ein-- configurations
.Die virtuelle Ausgabeebene sieht wie folgt aus
Hinweis: Wenn 'Delta' (z. B. das letzte kürzeste Segment) nicht enthalten sein soll, fügen Sie es
WHERE sec_length >= step_length
ein-- query
, siehe untenFall 2. Aufteilen der Linie in eine bestimmte Anzahl von Segmenten
Mit der folgenden Abfrage ist es möglich, das Ergebnis zu erzielen. Um die Anzahl der Segmente zu erhöhen / zu verringern, passen Sie bitte den Eingang
8 AS sections
an-- configurations
.Die virtuelle Ausgabeebene sieht wie folgt aus
quelle