Sto cercando di utilizzare QGIS 2.14 per agganciare una rete stradale a una griglia esagonale, ma sto ottenendo strani artefatti.
Ho creato una griglia esadecimale con MMQGIS , le celle misurano circa 20 x 23 m. Ho bufferizzato la rete stradale di 1 metro e l' ho densificata in modo che ci sia un nodo ogni pochi metri. Di seguito puoi vedere cosa sto cercando di ottenere. Come puoi vedere, posso farlo funzionare in alcuni casi: -
- blu è la strada densificata (una linea tamponata)
- il rosso è la versione "esadecimale" - questo è quello che voglio trovare
- il grigio è la griglia esadecimale
Ho quindi usato la nuova funzione Geometrie snap per agganciare i nodi all'angolo esagonale più vicino. I risultati sono promettenti, ma sembrano esserci alcuni casi limite in cui la linea si espande per riempire l'esagono (o parte di esso): -
Il motivo del buffer è che le geometrie Snap non consentono di eseguire lo snap su un livello la cui geometria è diversa. Ad esempio, non è possibile agganciare i nodi su un livello LINE ai punti su un livello POINT). Sembra essere il più felice che fa scattare POLYGON in POLYGON.
Sospetto che le strade si espandano quando un lato della linea tamponata salta su un lato della cella esadecimale e l'altro lato salta sull'altro lato della cella esadecimale. Nel mio esempio, le strade che attraversano ovest-est ad angolo acuto sembrano essere le peggiori.
Cose che ho provato, senza successo: -
- buffering della rete stradale di una piccola quantità, quindi rimane un poligono ma è molto sottile.
- densificare le celle esadecimali (quindi ci sono nodi lungo i bordi, non solo agli angoli)
- variando la distanza massima di scatto (questo ha l'effetto più grande, ma non riesco a trovare un valore ideale)
- usando i livelli LINE, non POLYGONs
Trovo che se cambio a usare solo i livelli LINE, funziona per un po ', quindi si blocca. Sembra salvare il suo lavoro mentre procede - alcune linee sono state parzialmente elaborate.
Qualcuno conosce un altro modo per agganciare punti su una linea al punto più vicino su un'altra linea / strato poligonale, idealmente senza la necessità di usare Postgres / Postgis (anche se sarebbe gradita anche una soluzione con Postgis)?
MODIFICARE
Per chiunque volesse provare, ho messo un progetto QGIS di partenza qui su Dropbox . Ciò include i livelli Griglia esadecimale e Linee densificate. (La rete stradale proviene da OSM, quindi può essere scaricata utilizzando QuickOSM, ad esempio se è necessario ottenere l'originale per non compensare le strade).
Si noti che è in OSGB (epsg: 27700) che un UTM localizzato per il Regno Unito, con unità in metri.