Teilen aller Linien in einer Ebene an Scheitelpunkten mit QGIS?


11

Ich möchte automatisch alle Linien in einer QGIS-Ebene an ihren Scheitelpunkten teilen ( so ).

Ich habe eine Google-Suche durchgeführt und diesen Artikel gefunden , der ziemlich nah ist, aber der Workflow ist kompliziert. Da ich meine Mitarbeiter (die mit GIS nicht vertraut sind) für die Verwendung dieses Tools schulen muss, möchte ich etwas so Einfaches wie ein Plugin oder etwas, das kein GRASS benötigt. Da es seit 2010 eine lange Zeit her ist - die Zeit der vorherigen Antwort - , frage ich mich, ob es einen besseren Weg gibt, um das gleiche Ergebnis zu erzielen?


Sie können heutzutage GRASS-Werkzeuge von QGIS verwenden. Möglicherweise können Vektor-> Geometrie-Werkzeuge-> Einzelteile zum mehrteiligen Arbeiten hilfreich sein. Sextante Toolbox sollte "Explode Line Layer" haben und es gibt Plugin "Split Feature"
Simplexio

Ich denke, dass die Antwort, auf die Sie sich bezogen haben, (immer noch) das richtige Verfahren ist. Das Vektorwerkzeug "Single Part to Multipart" macht nicht das, was Sie wollen. Es teilt einen Multi-Linestring an den Knoten , nicht an jedem Scheitelpunkt.
Micha

@simplexio: Mit der Sextante-Toolbox habe ich eine Fehlermeldung wie in Bernd V erhalten. Antwort und ich kann das Plugin 'Split Feature' nirgendwo im Netz finden.
Cao Minh Tu

@Micha: Dieses Verfahren mag korrekt sein, aber es wird für meine Kollegen, die mit GIS nicht vertraut sind, zu komplex sein. Ich werde es als letzten Ausweg betrachten, wenn alles andere fehlgeschlagen ist :)
Cao Minh Tu

@Cao Minh Tu: Ich habe 'Split Feature' erneut unter Linux Master und Win7 1.8 mit einer neu erstellten Linienebene getestet und dort funktioniert es. Bitte erstellen Sie eine Testebene von Grund auf neu und wenden Sie sie dort an. Vielleicht gibt es Fehler in Ihren ursprünglichen Ebenen, die zuerst behoben werden müssen !?
Bernd V.

Antworten:


17

Durch das Auflösen von Linien aus der Verarbeitungs-Toolbox werden alle Linien an ihren Scheitelpunkten in separate Linien aufgeteilt.

Menüverarbeitung -> Toolbox. Geben Sie "explode" in das Suchfeld ein, um die Funktion zu finden. Wählen Sie Ihre Linienebene aus der Dropdown-Liste aus und starten Sie. Dadurch wird eine neue Ebene erstellt.

Wenn Sie eine oder mehrere Linien aus der Linienebene auswählen, wird eine geteilte Ebene mit nur diesen Merkmalen erzeugt, wobei der Rest verworfen wird.

Hinweis: Da sich QGIS schnell bewegt, sind alle folgenden Informationen bereits veraltet.

Ich denke, Explosionslinien wären die Noob-Lösung über die SEXTANTE-Toolbox . QGIS Geoalgorithms > Vector geometry tools > Explode lines. Leider scheint es im Moment nicht zu funktionieren, ich bekomme nur eine Fehlermeldung.

Traceback (most recent call last):
  File "path/.qgis//python/plugins\sextante\core\GeoAlgorithm.py", line 145, in execute
    self.processAlgorithm(progress)
  File "path/.qgis//python/plugins\sextante\algs\Explode.py", line 58, in processAlgorithm
    features = QGisLayers.features(layer)
NameError: global name 'layer' is not defined

Eine funktionierende Lösung ist das Split Feature-Plugin aus dem "beigetragenen" Repository, das die Arbeit für mich erledigt.

Im Allgemeinen bevorzuge ich Sextante-Funktionen gegenüber separaten Plugins, da der Workflow mit Sextante so viel schneller ist und keine Junk-Dateien mit Zwischenschritten erzeugt (vorausgesetzt, es funktioniert).

BEARBEITEN: Leider wurden viele Plugins noch nicht in das offizielle Plugin-Repository verschoben, sind aber immer noch nur über das Plugin-Repository "beigetragen" verfügbar: http://pyqgis.org/repo/contributed , das aus den Standard-Repositorys entfernt wurde Liste mit Version 1.8.

Dort können Sie sie einzeln herunterladen und in Ihrem Ordner .qgis / python / plugins entpacken ODER Sie fügen diese Adresse Ihrer Plugins-Repository-Liste hinzu: Plugins -> Fetch python plugins -> Tab "Repositories" -> Add ... -> enter a name and the url.


Können Sie mir sagen, wo sich das Plugin "Split Feature" befindet - ich kann es nicht im offiziellen Plugin-Repository finden? Mit SEXTANTE Explode-Zeilen erhielt ich dieselbe Fehlermeldung wie Ihre - hier gibt es einen Fehlerbericht: hub.qgis.org/issues/7157
Cao Minh Tu

@Cao Minh Tu: Entschuldigung, ich habe völlig vergessen, dass ich das alte Repository zu meiner Liste hinzugefügt habe, in der sich dieses Plugin ausschließlich befindet. siehe meine Änderungen.
Bernd V.

Ich habe das Split Feature Plugin ausprobiert. Es gibt keine Fehlermeldung, aber die Ausgabeebene enthielt nichts.
Cao Minh Tu

Es gibt nur einen 404-Fehler unter pyqgis.org/repo/contributed - hat sich die URL geändert?
Bis zum

@til_be siehe meine Bearbeitung
Bernd V.

4
  1. Öffnen / Erstellen eines GRASS-Mapsets (damit Sie die Tools für Ihre Daten ausführen können)
  2. Öffnen Sie die GRASS-Werkzeuge / Importieren Sie das Shapefile, das Sie in die GRASS-Datenbank aufteilen möchten
  3. Führen Sie v.split.vert aus (setzen Sie die maximale Anzahl von Scheitelpunkten = 2).

Diese Lösung hält z-Werte in den Segmentgeometrien
Tamas Kosa

1
    segment_list = []
    for feature in feature_list:
        vertices = feature.geometry().asPolyline() # returns list of vertices comprising polyline
        for point in range(len(vertices)-1):
            segment = QgsFeature()
            segment.setGeometry(QgsGeometry.fromPolyline([vertices[point], vertices [point+1]]))
            segment.setAttributes(feature.attributes())
            segment_list.append(segment)
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.