สมมติว่าโทโพโลยีนั้นสมบูรณ์แบบสร้างฟิลด์ '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 (คุณสมบัติ, attribute_name) ส่งคืนค่าของคุณสมบัติที่ระบุจากสถานที่ที่นี่ปีของคุณลักษณะจุดที่
ได้รับ
- get_feature (layer, attribute, value) ส่งกลับคุณสมบัติแรกของ layer ที่ตรงกับค่า attribute ที่กำหนด ที่นี่เราตรวจสอบว่าเราสามารถหาจุดที่มีพิกัดเดียวกัน (ในรูปแบบ 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)
ข้อได้เปรียบหลักของวิธีนี้คือถ้าข้อมูลของคุณเปลี่ยนแปลงในคะแนนคุณสามารถอัปเดตได้อย่างรวดเร็วด้วยเครื่องคิดเลขฟิลด์เดียว
คุณสามารถเพิ่มกฎนี้เป็นAutofield ได้เมื่อคุณสร้างบรรทัดใหม่
ไชโย