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:

 

Annunci

3 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

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

w

Connessione a %s...