QGIS: SPEZZARE UNA LINEA CON DEI PUNTI

Un quesito che leggo spesso sia nelle mailing list del settore che in facebook:

come spezzare una linea in corrispondenza di punti (sovrapposti o vicini)?

Il problema non è affatto banale in quanto i punti non hanno dimensione e le linee hanno solo una dimensione, quindi non è possibile utilizzare semplici algoritmi del geoprocessing come intersezione, taglia oppure differenza.

Per risolvere il quesito occorre appoggiarsi a un DBMS come PostGIS o SpatiaLite e usare la funzione ST_Split() che e’ fatta apposta per “affettare” le geometrie, ma occorre un po’ di conoscenza dei database e del linguaggio SQL.

Una soluzione semplice ed immediata è l’uso del plugin Networks di CEREMA Nord-Picardie :

“Manage linear networks. Several functionalities as generating a graph from a linear layer, invert and split polylines, and connect point to a linear objects, and perform a linear-based deterministic interpolation for accessibility maps”

N1
Plugin

nel nostro caso specifico dobbiamo usare l’opzione ‘Connect’:

questo strumento consente di collegare gli oggetti dello strato punti con gli oggetti strato linea. Ogni punto sarà collegato alla polilinea più vicina, se la distanza più breve della polilinea è inferiore al raggio di ricerca, la polilinea verrà suddivisa in due parti da ciascun lato del punto di connessione, al fine di preservare la topologia di rete. NB: i multilinee sono ignorati. [ estratto da qui]

Selezionare il layer lineare (nella TOC) e avviare lo strumento ‘Connect’

N5
strumento Connect

da menu a tendina selezionare il layer puntuale, definire il raggio di ricerca e poi OK.

NB: verrà modificato il layer lineare senza nessun messaggio; verrà messo in editing in automatico, poi sta a voi salvare le modifiche!!!

 

N6
esempio

 

Buon lavoro

ConQGIStando

video:

 

11 pensieri su “QGIS: SPEZZARE UNA LINEA CON DEI PUNTI

  1. ciao Salvatore, stavo cercando un plugins che mi spezzasse una linea in n punti che generino tratti proporzionali o che distino sulla linea in funzione di un valore che mi ritrovo in tabella parametrato alla lunghezza totale della linea stessa. Non ho il pc con QGIS sotto mano e volevo chiederti, a memoria, se il comando “split” del menù del plugin Networks potesse fare al caso mio.
    Altrimenti, hai conoscenza di altre funzioni simili?
    Grazie per ogni info in merito.
    Alberto

    "Mi piace"

    1. Ciao,
      il problema di spezzare una linea in n parti proporzionali si traduce nel creare i punti lungo la line., poi spezzare la linea è un problema risolvibile.
      Per creare i punti nel modo che desideri l’unica cosa che mi viene in mente è usare la funzione line_interpolate_point del calcolatore di campi di QGIS.
      Negli strumenti di processing trovi alcuni algoritmi che dividono le linee ma come hai descritto tu non credo ci siano.

      "Mi piace"

  2. ciao, alla fine ho risolto col qchainage plugin che mi genera, lungo la linea, un punto sia in funzione della misura data sia un funzione del numero di punti necessari. Grazie comunque per l’aiuto.

    "Mi piace"

    1. Ciao,
      l’editing avanzato esiste anche nella 3.2
      cerca bene, oppure devi semplicemente attivarlo: vai in impostazioni | personalizzazione interfaccia e nel gruppo ToolBars cerca ‘mAdvancedDigitizeToolBar’

      "Mi piace"

  3. Ciao Salvatore, Come si potrebbe invece spezzare una linea ad ogni intersezione? esiste un tool massivo? Grazie mille per l’aiuto e i contenuti che pubblichi.

    "Mi piace"

  4. ciao , penso che la tua guida dovrebbe risolvere il mio problema, ma il plugin networks sembra essere cambiato rispetto alla tua guida, oltre che non compare neppure tra i tab VETTORE , potresti aiutarmi ? grazie

    Piace a 1 persona

      1. grazie per l’info , ma purtroppo non so perché non sta funzionando, comunque se le posso chiedere un altra cortesia, potrei risolvere il mio problema con un altra soluzione , cioè i pratica ho varie linee , dal punto A al punto B, dal punto B al punto C e cosi via, ma le linee NON sono formate da un unico elemento ma da pezzi che sono attaccati mentre in corrispondenza dei punti non ci sta più continuità delle linee. ci sarebbe il modo da creare un unica linea e quindi mettere insieme i soli pezzi tra la tratta A-B e quindi per il resto della tratte ? in pratica da avere una solo linea continua per ogni tratta (A-B, B-C, C-D), grazie per l’aiuto

        "Mi piace"

Scrivi una risposta a Totò Cancella risposta

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.