Ich möchte QGIS verwenden, um Punkte entlang der Linie zu erstellen, aber in einem bestimmten Abstand. Ich habe zwei GRASS-Tools in der SEXTANTE Toolbox gefunden:
- v.zu.Punkten
- v.segment
Ich habe v.to.points ausprobiert und den maximalen Abstand zwischen Punkten in Karteneinheiten auf 100 gesetzt.
Das zweite Foto zeigte einen genauen Blick vom oberen. Das Ergebnis war das, was ich wollte, aber ich möchte weniger Punkte bekommen , aber selbst wenn ich die maximale Entfernung auf 1000 oder 1000000 festlegte, war das Ergebnis das gleiche.
Ich habe versucht, v.segment zu verwenden , aber ich hatte keine Datei mit Segmentregeln.
Underdark gab mir einige Ratschläge und ich versuchte, Geometrien mit einem vorgegebenen Intervall zu verdichten . Zuerst habe ich ein Polylinien-Shapefile erhalten, wie ich es eingegeben habe, und dann habe ich mithilfe von Extraktionsknoten versucht, diese Punkte zu erhalten. Das Ergebnis war jedoch dasselbe wie bei der Verwendung von v.to.points , unabhängig davon, welches Entfernungsintervall ich eingestellt habe.
Wie kann ich Punkte entlang der Linie und in der angegebenen Entfernung erstellen?
quelle
Antworten:
In der Python-Konsole:
Sie können das Shapely- Modul (wie in So erstellen Sie Punkte mit gleichem Abstand in QGIS? ) mit der Funktion verwenden
point = line.interpolate (aktuelle Entfernung)
Die neue Python-API der Master-Version (1.9) verfügt über einen entsprechenden Befehl (wie unter Generieren von Chainage-Knoten (Distanzknoten) in QGIS von Nathan Woodrow).
point = geom.interpolate (aktuelle Entfernung)
oder Sie können Vektoralgebra und Richtungskosinus verwenden (wie in PyQGIS: Geometrien, Vektoren, Vektoralgebra oder Richtungskosinus, Anwendungsbeispiele , in Französisch)
1) erstelle eine Memory Layer Klasse (komplette Klasse (ohne Attribute) bei crea_mem_layer.py )
2) Vektoralgebra-Funktionen (aus algèbre_vect_PyQGIS.py )
3) Richtungskosinus
4) Prozesslinie oder Liniensegmente
Ergebnisse
Polylinie, Punkt mit gleichem Abstand mit Shapely oder PyQGIS2, mit Richtungskosinus
Dann einfach das Intervall einstellen
quelle
Es gibt jetzt ein Plugin namens QChainage, das genau das macht, was Sie wollen. Sie geben einen Intervallabstand an und das Plugin erstellt Punkte entlang Ihrer Linie im angegebenen Intervall.
quelle
Ich habe ein Skript geschrieben, das das Werkzeug "Sextante-Geometrien verdichten" so ändert, dass es einen bestimmten Abstand akzeptiert. Es heißt Geometrien in einem bestimmten Intervall verdichten .
Nach dem Ausführen von Verdichten können Sie die Punkte mit dem Werkzeug Knoten extrahieren extrahieren .
Sie können es von Github bekommen und Installationsanweisungen finden Sie auf meinem Blog .
quelle
Wenn Sie nicht mit Python-Skripten herumhüpfen möchten, können Sie einfach das Plugin "Profil von Zeile" installieren und verwenden und die Rasterwertspalte ignorieren / löschen. Die Verkettung entspricht dem eingestellten Abtastintervall.
quelle
Nun, ich bin mir nicht sicher, ob dies in der stabilen Version ist, aber in der Sextante-Toolbox auf 1.9 Alpha unter Geoalgorithmus-> Vektor ist die Option "Linien in Punkte konvertieren". Funktioniert hervorragend, wenn auch ein Feld für die Entfernung entlang der Linie hinzugefügt wird.
Interessanterweise wurde das Feld NAME aus meiner Vektorebene hinzugefügt.
Ich habe versucht, das Python-Skript von Nathan Woodrow zum Laufen zu bringen, aber ich lutsche mit Python. Und mit Code im Allgemeinen scheint es.
quelle
Ich habe lange mit diesem Problem gekämpft, aber irgendwann mehr oder weniger das bekommen, wonach ich mit QChainage gesucht habe. Was ich teilen möchte, ist etwas, das anderen helfen kann. Wenn Sie das Geoverarbeitungswerkzeug SAGA für die Linie verwenden, führt QChainage zu falschen Ergebnissen. Die Verwendung eines anderen Auflösungswerkzeugs führt dazu, dass es einwandfrei funktioniert.
quelle