Припустимо, що топологія ідеальна, створюючи поле "WKT" з виразом
geom_to_wkt( $geometry)
у вашому точковому шарі ви можете використовувати вираз:
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'))
у польовому калькуляторі шару труби, створюючи текстовий рядок.
- атрибут (особливість, атрибут_ ім'я) Повертає значення визначеного атрибуту з функції, тут, рік отриманої точки точки
.
- get_feature (шар, атрибут, значення) повертає першу особливість шару, що відповідає заданому значенню атрибута. Тут ми перевіряємо, чи можемо ми знайти точку з тими самими координатами (у форматі WKT), що
і вершини початку та кінця вашої лінії.
- start_point (геометрія) повертає перший вузол з геометрії. Ось перша вершина вашого рядка.
- end_point (геометрія) повертає останній вузол з геометрії. Ось остання вершина вашого рядка.
- geom_to_wkt (геометрія) повертає добре відомий текст (WKT) подання геометрії.
Ви навіть можете оновити його на:
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
щоб показати лише рік, якщо два пункти з тим самим роком пов’язані (отримуючи 200X замість 200X-200X).
Основна перевага цього методу полягає в тому, що якщо ваші дані змінюються у ваших точках, ви можете швидко оновити їх за допомогою одного калькулятора поля.
Ви можете навіть додати це правило як автополе для, коли створюєте нові рядки.
Ура,