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”

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’

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!!!

Buon lavoro
ConQGIStando
video:
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""Mi piace"
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""Mi piace"
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""Mi piace"
Ciao! Se invece volessi spezzare una linea in vari punti, nella versione 3.2 non c’è più l’editing avanzato come nella versione 2.18 dove potevo spezzare liberamente la linea, come potrei fare evitando di spostare manualmente tutti i vertici?
"Mi piace"Piace a 1 persona
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""Mi piace"
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""Mi piace"
Ciao,
cerca negli strumenti di Processing l’algoritmo Dividi con linee: se il layer è uno solo inserisci due volte lo stesso layer.
"Mi piace""Mi piace"