假设拓扑是完美的,则使用表达式创建字段“ 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)。
此方法的主要优点是,如果您的数据在点中发生变化,则只需一个字段计算器就可以非常快速地更新它。
您甚至可以在创建新行时将此规则添加为自动字段。
干杯,