Visualizzazione delle linee generate al di fuori dell'estensione della mappa utilizzando QGIS?


12

Ho disegnato una mappa di flusso OD usando il generatore di geometrie QGIS, usando la seguente espressione:

make_line( centroid( $geometry ),
centroid( geometry( get_feature( 'Layer2', 'Attribute1', attribute(
           $currentfeature, 'Attribute2') ) ) ) )

Ho ottenuto tutto bene, definendo la larghezza delle mie linee in base agli attributi.

Ma quando ingrandisco l '"hub", le linee collegate a luoghi al di fuori della tela della mappa non vengono visualizzate. Immagino sia perché le funzionalità non dovrebbero apparire sulla mappa.

Ho provato a deselezionare l'opzione "Clip clips to canvas canvas" nel menu avanzato, sia nei livelli "Geometry generator" che nei livelli "Line", ma non viene ancora visualizzato.

Se ingrandito sull'hub

Quando non amato

Vorrei che venissero visualizzate tutte le mie linee, anche se ingrandite sull'hub.


Questo non sarà utile ... ma ho lo stesso problema con l'approccio di mappatura del flusso di Underdark. Deve essere qualcosa nel modo in cui viene resa la geometria densa ... l'unico suggerimento è giocare con la larghezza dell'attributo per la mappa del livello locale ... ridurre le larghezze?
Andrew Tice,

Magari puoi caricare i tuoi dati (shp ...) per poter replicare i tuoi passi e provare a ottenere una risposta.
César Arquero,

1
Shapefile viene da qui: IGN e il tavolo unito di INSEE
mamouthautapis

Forse segmentare la linea potrebbe essere un trucco per farla apparire sulla mappa, se le linee vengono mostrate solo se entrambe le estremità sono vicine all'estensione della mappa. Lo strumento Grass "v.split.length" forse fa il lavoro.
Giuliano

1
È lo stesso problema che ho avuto (se lo è, è un modo semplice per capire questo problema - in caso contrario, ignorami): volevo mostrare un set di dati punto con l'intero set di punti generati spostati di 300 km a est e 600 km nord rispetto ai punti reali. Funziona, ma solo quando viene ingrandito in modo che i punti originali si trovino all'interno dell'area di disegno della mappa. Non appena si esegue lo zoom sull'insieme di punti generati (spostando le posizioni dei punti effettivi all'esterno dell'area di disegno) i punti generati scompaiono. (QGIS 2.14)
Rostranimin,

Risposte:


2

Il problema qui è che non ci sono dati reali che dicono "c'è una linea qui". La tua espressione fa parte dello styling dei livelli e viene rilevata nel processo di rendering solo quando vengono renderizzati anche due punti applicabili.

Prova a utilizzare lo strumento Distanza dall'hub più vicino , disponibile nella casella degli strumenti di elaborazione in Strumenti di analisi vettoriale. Noto che stai selezionando particolari poligoni per i tuoi raggi e che modifichi le linee secondo altri attributi. Questo è possibile, ma dovrai fare alcune cose per prepararti. Per fortuna, lo strumento utilizza automaticamente i centroidi quando vengono scelti gli input poligonali.

  1. Strumenti di selezione vettoriale > Estrai per attributo
    • Livello di input: "LAYER_1"
    • Attributo di selezione: "ATTRIBUTE_1"
    • Operatore: =
    • Valore: "valore riferito al poligono hub"
    • Estratto (attributo): 'HUB'

  2. Strumenti di selezione vettoriale > Estrai per attributo
    • Livello di input: "LAYER_1"
    • Attributo di selezione: "ATTRIBUTE_2"
    • Operatore: scelto secondo necessità
    • Valore: "valore / i riferito a poligoni di raggio"
    • Estratto (attributo): "RAGGI"

  3. Strumenti di analisi vettoriale > Distanza dall'hub più vicino
    • Livello punti sorgente: "RAGGI"
    • Livello hub di destinazione: "HUB"
    • Attributo nome livello hub: crea un campo "Nome hub" nell'output in base all'attributo scelto, nel caso in cui siano specificati più hub nel livello input
    • Tipo di forma dell'uscita: linea all'hub
    • Unità di misura: metri
    • Distanza hub: "OUTPUT_LAYER_NAME"

L'output risultante conserva tutti gli attributi dell'input di livello "RAGGI", quindi gli attributi necessari per lo stile della linea saranno ancora presenti. Come proprio livello vettoriale, le linee rimarranno visibili a tutti i livelli di zoom, indipendentemente dalla visibilità di entrambi gli endpoint.

Se ti senti a tuo agio con Graphical Modeler, potresti persino creare questi passaggi in un unico processo in modo da non ingombrare lo spazio di lavoro con livelli non necessari.


3

Trovate le seguenti soluzioni alternative : utilizzate un livello virtuale aggiuntivo anziché un generatore di geometria per visualizzare le linee.

Definizione del livello virtuale:

select m.FID, make_line(.....) as geometry from my_layer m

(la geometria originale può essere referenziata usando m.geometry)

Per assicurare che il layer virtuale si aggiorni quando my_layer viene modificato, vai alle proprietà del layer | dipendenze e assicurati che my_layer sia selezionato (che è disattivato per impostazione predefinita).

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.