トポロジーが完全であると仮定し、次の式でフィールド「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)は、ジオメトリのWell-Known Text(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
同じ年の2つのポイントが接続されている場合に1年のみを表示するため(200X-200Xではなく200Xを取得)。
この方法の主な利点は、ポイントでデータが変更された場合、1つのフィールド計算機で非常に高速に更新できることです。新しい行を作成するときのために
、このルールを自動フィールドとして追加することもできます。
乾杯、