Dividere tutte le linee nel livello ai vertici usando QGIS?


11

Voglio dividere automaticamente tutte le linee in un livello QGIS ai loro vertici (in questo modo ).

Ho fatto una ricerca su Google e ho trovato questo articolo , che è abbastanza vicino ma il flusso di lavoro è complicato. Poiché dovrò formare i miei colleghi (che non hanno familiarità con GIS) per utilizzare questo strumento, voglio qualcosa di semplice come un plugin o qualcosa che non richiede GRASS. Dal momento che è passato molto tempo dal 2010 - il tempo della risposta precedente , mi chiedo se esiste un modo migliore per ottenere lo stesso risultato?


È possibile utilizzare gli strumenti GRASS di QGIS al giorno d'oggi. Forse Vector-> Strumenti geometria-> Parti singole in multipart potrebbero essere d'aiuto. La cassetta degli attrezzi di Sextante dovrebbe avere "Esplodi il livello di linea" E c'è il plugin "funzione divisa"
simplexio

Penso che la risposta a cui hai fatto riferimento sia (ancora) la procedura corretta. Lo strumento vettoriale "Da singola parte a multipart" non farà ciò che desideri. Divide una multi-linestring sui nodi , non su ciascun vertice.
Micha,

@simplexio: con Sextante toolbox, ho ricevuto un messaggio di errore come nella risposta Bernd V. e non riesco a trovare il plug-in 'split feature' da nessuna parte sulla rete.
Cao Minh Tu

@Micha: quella procedura potrebbe essere corretta ma sarà troppo complessa per i miei colleghi - che non hanno familiarità con il GIS, quindi la considero l'ultima risorsa, quando tutto il resto fallì :)
Cao Minh Tu

@Cao Minh Tu: ho testato di nuovo 'Split feature' su Linux Master e su Win7 1.8 con un livello di linea appena creato, e lì funziona. Crea un livello di test da zero e applicalo lì. Forse ci sono errori nei livelli originali che devono essere risolti per primi !?
Bernd V.

Risposte:


17

Le linee esplose dalla Casella degli strumenti di elaborazione suddividono tutte le linee nei loro vertici in linee separate.

Elaborazione menu -> Casella degli strumenti. Digita "esplodi" nel campo di ricerca per trovare la funzione. Seleziona il tuo livello di linea dal menu a discesa e inizia. Questo produrrà un nuovo livello.

La selezione di una o più linee dal livello linea produrrà un livello diviso con solo queste caratteristiche, scartando il resto.

Nota: poiché QGIS si sta muovendo rapidamente, tutte le informazioni sottostanti sono già obsolete.

Penso che le linee di esplosione sarebbero la soluzione noob attraverso la cassetta degli attrezzi SEXTANTE . QGIS Geoalgorithms > Vector geometry tools > Explode lines. Sfortunatamente, al momento non sembra funzionare, ricevo solo un messaggio di errore.

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

Una soluzione funzionante è Split Feature-Plugin dal repository "contribuito", che fa il lavoro per me.

In generale preferisco le funzioni di sestante rispetto a plugin separati, perché il flusso di lavoro con sestante è molto più veloce e non produce file spazzatura di passaggi intermedi (purché funzioni).

EDIT: Sfortunatamente, molti plug-in non sono stati ancora spostati nel repository ufficiale dei plug-in, ma sono ancora disponibili solo tramite il repository "contribuito" del plug-in: http://pyqgis.org/repo/contributed , che è stato rimosso dai repository predefiniti elenco con versione 1.8.

Lì puoi scaricarli singolarmente e decomprimerli nella cartella .qgis / python / plugins O puoi aggiungere questo indirizzo al tuo repository di plugin: Plugins -> Fetch python plugins -> Tab "Repositories" -> Add ... -> enter a name and the url.


Puoi dirmi dove trovare il plugin 'Split Feature' - Non riesco a trovarlo nel repository ufficiale dei plugin? Con SEXTANTE Explode lines, ho ricevuto lo stesso messaggio di errore del tuo: qui c'è una segnalazione di bug: hub.qgis.org/issues/7157
Cao Minh Tu

@Cao Minh Tu: scusa, ho completamente dimenticato di aver aggiunto il vecchio repository al mio elenco, dove questo plugin risiede in modo esclusivo. vedi le mie modifiche.
Bernd V.

Ho provato il plug-in Split Feature, non c'è nessun messaggio di errore ma il livello di output non conteneva nulla.
Cao Minh Tu,

C'è solo un errore 404 su pyqgis.org/repo/contributed - l'URL è cambiato?
til_b,

@til_be guarda la mia modifica
Bernd V.

4
  1. Apri / Crea mapset GRASS (in modo da poter eseguire gli strumenti sui tuoi dati)
  2. Apri gli strumenti GRASS / Importa lo shapefile che vuoi dividere nel database GRASS
  3. Esegui v.split.vert (imposta il numero massimo di vertici = 2)

Questa soluzione mantiene i valori z nelle geometrie del segmento
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)
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.