คุณยังสามารถทำสิ่งนี้ได้ใน Field Calculator ด้วยปลั๊กอิน refFunctions คุณสามารถใช้เครื่องคำนวณภาคสนามเพื่ออัปเดตรูปทรงเรขาคณิตของเลเยอร์และฟิลด์ refFunctions ให้ฟังก์ชัน "geomdistance" เพื่อค้นหาบรรทัดที่ใกล้ที่สุดภายในระยะทางที่กำหนด (หรือ "geomnearest" หากคุณไม่ต้องการขีด จำกัด ) และจะส่งคืนแอตทริบิวต์หรือเรขาคณิตและฟังก์ชัน "closest_point" จะค้นหาสิ่งที่ใกล้เคียงที่สุด ชี้ไปที่รูปทรงเรขาคณิตที่กำหนด สตริงพวกมันเข้าด้วยกันอย่างนั้นเพื่อคำนวณรูปทรงเรขาคณิตใหม่สำหรับเลเยอร์จุดของคุณ:
closest_point(geom_from_wkt(geomdistance('snap_lines','$geometry',10)) , $geometry)
แทนที่จะอัพเดทรูปทรงเรขาคณิตโดยตรงคุณสามารถคำนวณเขตข้อมูลด้วยรูปทรงเรขาคณิตที่จัดชิดแทน ฉันเก็บรูปทรงหลายรูปแบบเพื่อจับจุดระบายน้ำไปยังเลเยอร์สตรีมที่แตกต่างกันและฉันสามารถอัปเดตรูปทรงเรขาคณิตของจุดในฟิลด์เครื่องคิดเลขได้อย่างง่ายดายโดยขึ้นอยู่กับว่าฉันต้องการใช้สายข้อมูลใด
มีข้อ จำกัด บางประการเช่นนี้เลเยอร์ทั้งคู่ต้องเป็น CRS เดียวกันและฟังก์ชัน geomdistance จะให้ข้อผิดพลาดหากคุณมีมากกว่า 100,000 คะแนน แต่คุณสามารถเปลี่ยนข้อ จำกัด นี้ได้หากคุณแก้ไขไฟล์ปลั๊กอิน refFunctions