Предполагая, что топология идеальна, создаем поле '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'))
в полевом калькуляторе слоя трубы, создающего текстовую строку.
- attribute (feature, attribute_name) Возвращает значение указанного атрибута из объекта, здесь - год получения точечного объекта
.
- get_feature (layer, attribute, value) возвращает первый элемент слоя, соответствующий данному значению атрибута. Здесь мы проверяем, можем ли мы найти точку с теми же координатами (в формате WKT), что
и у начальной и конечной вершин вашей линии.
- start_point (geometry) возвращает первый узел из геометрии. Здесь первая вершина вашей линии.
- end_point (geometry) возвращает последний узел из геометрии. Здесь последняя вершина вашей линии.
- geom_to_wkt (geometry) возвращает представление геометрии "Хорошо известный текст" (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).
Основным преимуществом этого метода является то, что если ваши данные меняются в ваших точках, вы можете очень быстро обновить их с помощью только одного полевого калькулятора.
Вы даже можете добавить это правило в качестве автоматического поля при создании новых строк.
Ура,