Supponendo che la topologia sia perfetta, creando un campo "WKT" con l'espressione
geom_to_wkt( $geometry)
nel tuo livello punti, puoi usare l'espressione:
min( attribute( get_feature('points','WKT', geom_to_wkt(start_point($geometry) )),'year'),attribute( get_feature('points','WKT', geom_to_wkt(end_point($geometry) )),'year'))||'-'|| max( attribute( get_feature('points','WKT', geom_to_wkt(start_point($geometry) )),'year'),attribute( get_feature('points','WKT', geom_to_wkt(end_point($geometry) )),'year'))
nel calcolatore di campo del layer pipe, creando una stringa di testo.
- attributo (feature, nome_attributo) Restituisce il valore di un attributo specificato da una funzione, qui, l'anno della funzione punto
ottenuta.
- get_feature (layer, attributo, valore) restituisce la prima funzione di un layer corrispondente a un determinato valore di attributo. Qui controlliamo se possiamo trovare un punto con le stesse coordinate (in formato WKT) di
quelle dei vertici di inizio e fine della linea.
- start_point (geometria) restituisce il primo nodo da una geometria. Ecco il primo vertice della tua linea.
- end_point (geometria) restituisce l'ultimo nodo da una geometria. Ecco l'ultimo vertice della tua linea.
- geom_to_wkt (geometria) restituisce la rappresentazione del testo ben noto (WKT) della geometria.
Potresti anche aggiornarlo a:
CASE
WHEN attribute( get_feature('points','WKT', geom_to_wkt(start_point($geometry) )),'year') = attribute( get_feature('points','WKT', geom_to_wkt(end_point($geometry) )),'year')
THEN attribute( get_feature('points','WKT', geom_to_wkt(end_point($geometry) )),'year')
ELSE min( attribute( get_feature('points','WKT', geom_to_wkt(start_point($geometry) )),'year'),attribute( get_feature('points','WKT', geom_to_wkt(end_point($geometry) )),'year'))||'-'|| max( attribute( get_feature('points','WKT', geom_to_wkt(start_point($geometry) )),'year'),attribute( get_feature('points','WKT', geom_to_wkt(end_point($geometry) )),'year'))
END
per mostrare solo un anno se sono collegati due punti con lo stesso anno (ottenendo 200X anziché 200X-200X).
Il vantaggio principale di questo metodo è che se i tuoi dati cambiano nei tuoi punti, puoi aggiornarli molto velocemente con un solo calcolatore di campo.
Puoi anche aggiungere questa regola come Autofield quando crei nuove linee.
Saluti,