การเข้าร่วมคุณสมบัติจากจุดที่ใกล้ที่สุดใน QGIS?


29

ฉันมีสองเลเยอร์ที่มีคะแนนเรียกพวกเขาว่า A และ B แต่ละคนมีคุณสมบัติที่แตกต่างกัน

สำหรับแต่ละจุดใน AI ต้องการที่จะเข้าร่วมคุณสมบัติทั้งหมดจากจุดที่ใกล้ที่สุดใน B

โดยหลักการแล้วสิ่งนี้จะรวมถึงสนามที่วัดระยะทางระหว่างจุดทั้งสองด้วย

ฉันรู้วิธีการดังกล่าวใน ArcGIS: คลิกขวาเลเยอร์ A> เชื่อมโยงและเชื่อมโยง> เข้าร่วมแล้วเข้าร่วมข้อมูลตามตำแหน่งเชิงพื้นที่และเลือกที่จะเข้าร่วมแอตทริบิวต์จากจุดที่ใกล้ที่สุด

ฉันไม่พบฟังก์ชันการทำงานที่คล้ายกันใน QGIS ตัวชี้ใด ๆ

คำตอบ:


26

ใช้ "Distance Matrix" คุณสามารถคำนวณจุดที่ใกล้ที่สุด ตรวจสอบให้แน่ใจว่าเลเยอร์ทั้งสองอยู่ใน CRS เดียวกัน! จากนั้นคุณสามารถโหลดผลลัพธ์และใช้เพื่อเข้าร่วมตาราง A และ B

ใน "Distance matrix" เลือก: "Linear distance matrix" และ "ใช้เฉพาะจุดเป้าหมาย k ที่ใกล้ที่สุด: 1"

ป้อนคำอธิบายรูปภาพที่นี่

โหลด CSV โดยใช้ "เพิ่ม Vector Layer" และเข้าร่วมชั้นในคุณสมบัติเลเยอร์ของ Layer A - เข้าร่วมแท็บ

ป้อนคำอธิบายรูปภาพที่นี่

และผลลัพธ์:

ป้อนคำอธิบายรูปภาพที่นี่


หากคุณต้องการมีระยะทางระหว่างจุดภายในเลเยอร์โดยใช้เมทริกซ์ระยะทางคุณควรเปลี่ยน k = 2 เนื่องจากปัญหาที่ทราบนี้: hub.qgis.org/issues/4761
Celia

1
@underdark ดูเหมือนว่าวิธีนี้จะไม่ทำงานอีกต่อไป ฉันสามารถสร้าง matrix.csv และเข้าร่วมกับชั้นแรกของฉัน ในตัวอย่างของคุณคุณเพิ่มการเข้าร่วมครั้งที่สองที่คุณแนบเลเยอร์ที่สองเข้ากับชั้นแรกโดยยึดตาม TargetID จากเมทริกซ์ แต่เขตข้อมูลที่เข้าร่วมจะไม่แสดงให้ฉันเห็นในกล่องโต้ตอบดังนั้นฉันจึงไม่สามารถเลือก TargetID แน่นอนฉันสามารถแรก Save_as ชั้นแล้วทำสองเข้าร่วม ...
แบร์นโวลต์

13

NNJoinปลั๊กอินควรทำงาน สำหรับแต่ละฟีเจอร์ของเลเยอร์อินพุทจะเพิ่มแอททริบิวต์ทั้งหมดของฟีเจอร์ที่ใกล้ที่สุดในเลเยอร์การเข้าร่วมและยังเพิ่มแอททริบิวต์ระยะทางด้วยระยะห่างจากฟีเจอร์นี้


ทำงานได้อย่างสมบูรณ์แบบ เร็วกว่าคำตอบที่ยอมรับ โปรดทราบว่าคำตอบที่ยอมรับถ้าจาก 2011
juminet

อย่างน้อยวันนี้ดีกว่าคำตอบที่ยอมรับ เร็วขึ้นมาก
cag

4

ถ้าคุณสามารถมีชีวิตอยู่มีเพียงการเข้าร่วมแอตทริบิวต์เดียวจาก "B" ของคุณชั้นจะดูที่ "ฮับระยะทางเครื่องมือ" จากที่ปลั๊กอิน mmqgis

หากคุณต้องการแอตทริบิวต์ "B" ที่เหลือคุณควรจะสามารถเข้าร่วมแอตทริบิวต์ "B" ที่เหลือของคุณกลับไปที่เลเยอร์นี้ได้

คุณยังสามารถสร้างบรรทัดจาก A ถึง B ได้หากต้องการ สิ่งนี้มีประโยชน์สำหรับการแสดงระยะทางและทิศทางระหว่างคุณลักษณะที่เกี่ยวข้อง


0

อีกวิธีหนึ่งในการใช้ปลั๊กอินrefFunctions

(1) ชุดข้อมูลตัวอย่าง

ป้อนคำอธิบายรูปภาพที่นี่

(2) เปิดตารางคุณลักษณะของเลเยอร์ที่มีคุณสมบัติเพิ่มเติม ( points_bเลเยอร์ในตัวอย่างนี้) เพื่อไม่ให้คู่ขาดหายไป สร้างเขตข้อมูลใหม่

  • ID ฟิลด์ของเลเยอร์อื่น ๆ : geomnearest('points_a', 'id_a')
  • สนามระยะทางของคู่ที่ตรวจพบ: geomnearest('points_a', '$distance')

ป้อนคำอธิบายรูปภาพที่นี่


-6

การใช้QGIS 1.7เวกเตอร์> การจัดการข้อมูล> เข้าร่วมคุณสมบัติตามตำแหน่ง

ป้อนคำอธิบายรูปภาพที่นี่


3
ฉันก็คิดถึงสิ่งนี้เช่นกัน แต่เมื่อฉันทดสอบมันมันใช้ได้กับการแข่งขันที่แน่นอนเท่านั้นเช่นจุดรูปหลายเหลี่ยม ไม่พบจุดที่ใกล้ที่สุดไปยังจุดอื่น ทดสอบใน v1.7
RyanDalton

1
ฉันได้นัดที่ศูนย์ สิ่งนี้ใช้ไม่ได้
Fred
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.