การเข้าร่วมหลายระเบียนในฟีเจอร์เดียวโดยใช้ QGIS


25

ฉันพยายามที่จะสร้างการเข้าร่วม / ความสัมพันธ์ใน QGIS ที่ฉันมีรูปร่างของอาคารและฉันต้องการที่จะเข้าร่วมตารางที่ไม่ใช่เชิงพื้นที่ (.csv) ที่มีคนที่ทำงานในแต่ละอาคาร ดังนั้นฉันจึงมีหลายระเบียนในตารางของฉันที่ฉันต้องการที่จะสามารถเข้าร่วมคุณสมบัติเดียวของฉันใน shapefile ของฉัน ฉันสามารถเรียกใช้การเข้าร่วมใน QGIS ที่มีการเข้าร่วมระเบียนแรกกับคุณสมบัติรูปร่างไฟล์ (เช่นการสร้าง) แต่การบันทึกที่ตามมาจะถูกลบออก

มีคนช่วยให้ฉันรู้วิธีที่จะเสร็จสมบูรณ์เข้าร่วม / เกี่ยวข้องใน QGIS?


ฉันมีคำถามที่คล้ายกันที่นี่gis.stackexchange.com/questions/5797/ … RT ปลั๊กอินเลเยอร์ SQL และปลั๊กอิน eVis ถูกแนะนำ ฉันใช้ปลั๊ก eVis แต่มันไม่ใช่ทางออกที่ดีที่สุด
Ando

2
ฉันมีปัญหาเดียวกันและแน่นอนการเข้าร่วมตารางทำงาน เคล็ดลับคือการเข้าร่วมตารางที่มีหลายค่าไปยังตารางด้วยค่าเดียว (ที่นี่จากคนสู่สิ่งปลูกสร้างแทนที่จะเป็นวิธีอื่น ๆ ) ปัญหาเท่าที่ฉันพบคือการทำเช่นนี้คุณไม่สามารถค้นหาและส่งออกผลลัพธ์เป็นไฟล์อ้างอิงทางภูมิศาสตร์ซึ่งเป็น bugger (อย่างน้อยสำหรับฉัน) มีวิธีหลีกเลี่ยงปัญหานี้หรือไม่? รายการ MARC

ผลลัพธ์สุดท้ายที่คุณต้องการบรรลุคืออะไร? แม้ว่าคุณจะทำการเข้าร่วมคุณต้องการแสดงบนแผนที่หรือไม่? ทำสถิติ? ขึ้นอยู่กับว่าเวิร์กโฟลว์ที่แตกต่างกันอาจถูกติดตาม แต่การใช้ฐานข้อมูลมักจะเป็นความคิดที่ดีถ้าคุณต้องการที่จะเข้าร่วม
johanvdw

คำตอบ:


15

ฉันแก้ไขปัญหานี้โดยใช้ QGIS 1.7.0 โดยการบันทึกเลเยอร์เวกเตอร์เป็นตารางที่คั่นด้วยเครื่องหมายจุลภาค (CSV) ก่อนโดยที่ฟิลด์เรขาคณิตถูกแปลงเป็นข้อความที่รู้จักกันดี ในการทำเช่นนี้ฟิลด์เลเยอร์ของกล่องโต้ตอบ "บันทึกเลเยอร์เวกเตอร์เป็น ... " จะต้องอ่าน GEOMETRY = AS_WKT เพื่อสร้างฟิลด์ข้อความที่รู้จักกันดีของรูปทรงเรขาคณิตที่มีคอลัมน์ชื่อ WKT

จากนั้นไฟล์เรขาคณิต CSV ถูกรวมเข้ากับตารางแอ็ตทริบิวต์ที่ไม่ใช่รูปทรงเรขาคณิตในการเข้าร่วมแบบหนึ่งต่อกลุ่มภายใต้แท็บคุณสมบัติรวมของตารางแอตทริบิวต์ที่ไม่ใช่รูปทรงเรขาคณิต

การรวมผลลัพธ์ถูกบันทึกเป็นไฟล์ CSV เรขาคณิตอื่น

เมื่อตารางนี้เปิดใน QGIS แต่ละแอตทริบิวต์ของเรกคอร์ดจะถูกแทนด้วยเรขาคณิตเวกเตอร์ที่เหมาะสม

ในการทำทั้งหมดนี้ฉันค้นพบว่าไม่จำเป็นต้องใช้ปลั๊กอินข้อความตัวคั่นเพื่อเปิดไฟล์เรขาคณิต CSV หากตัวคั่นเป็นเครื่องหมายจุลภาคและเขตข้อมูลรูปทรงเรขาคณิต WKT ชื่อ WKT

สำหรับรายละเอียดเกี่ยวกับวิธีการนี้จะทำโปรดดูที่การกวดวิชาของฉันที่http://georgiawildlife.com/node/2849


วิธีการที่ดีฉันทำสิ่งที่คล้ายกันเพียงแค่ใช้ogr2ogrในการสร้างไฟล์ CSV จาก Shapefiles จากนั้นสคริปต์ R แบบง่าย ๆ เพื่อรวมไฟล์ในฟิลด์ทั่วไปที่ฉันต้องการและเขียนกลับไปเป็น CSV จากนั้นogr2ogrอีกครั้งเพื่อสร้าง Shapefile ที่ผสาน
vpipkt

1
สิ่งนี้อาจได้รับการจัดอันดับสูงสุด แต่กระบวนการที่มีความหมายสำหรับเรื่องนี้ตอบโดย @underdark ด้านล่าง นี่คือแฮ็คและไม่ใช่ตัวเลือกที่ดีที่สุดเลยมันช้าและไม่มีประสิทธิภาพและทำให้ไฟล์มีขนาดใหญ่ขึ้นและมีขั้นตอนมากขึ้น
nittyjee

10

เข้าร่วมที่สร้างขึ้นในคุณสมบัติเลเยอร์เพิ่มคอลัมน์ในคุณลักษณะที่มีอยู่ ถ้าเลเยอร์เวกเตอร์มีฟีเจอร์ 160 ตัวเท่านั้นการเข้าร่วมไม่สามารถเพิ่มจำนวนฟีเจอร์ได้!

ใช้คุณลักษณะเลเยอร์เสมือนแทน มันมีตัวเชื่อม SQL / ฐานข้อมูลที่เหมือนจริง สำหรับตัวอย่างดูโพสต์ล่าสุดของฉัน: แผนที่ขนาดเล็กสำหรับ OD flow maps โดยใช้เลเยอร์เสมือน

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


7

ใน QGIS 1.7 มีเอ็นจิ้นใหม่สำหรับ Joins (คุณจะพบมันในคุณสมบัติของเวกเตอร์)

ขณะนี้สามารถเพิ่มตาราง Geometry ในโครงการเช่นเดียวกับเลเยอร์อื่น ๆ (เวกเตอร์)


7

เริ่มต้นที่รุ่น 2.2 QGIS สนับสนุนความสัมพันธ์แบบหนึ่งต่อหลายคน กำหนดไว้ในคุณสมบัติโครงการแม้ว่าไม่ใช่คุณสมบัติเลเยอร์ของเวกเตอร์ จากนั้นระเบียนที่เกี่ยวข้องจะปรากฏในตารางแอตทริบิวต์ของเลเยอร์หรือระบุผลลัพธ์ผ่านแบบฟอร์ม

ดูคำตอบและเชื่อมโยงไปยังคำแนะนำที่ดีที่นี่


4

ทำการเข้าร่วมใน LibreOffice Base

คุณไม่สามารถเอาชนะความจริงที่ว่าคุณพยายามที่จะจัดการ 1 ถึงความสัมพันธ์จำนวนมาก

สำหรับที่ไม่ใช่เชิงพื้นที่ถึงที่ไม่ใช่เชิงพื้นที่มันมีค่าความพยายามที่จะเรียนรู้ ฉันพบว่าเคล็ดลับที่ยิ่งใหญ่ที่สุดคือการทำให้แน่ใจว่าเขตข้อมูลแอตทริบิวต์การเข้าร่วมมีเงื่อนไขเดียวกันทั้งหมด

เปิดข้อมูลตำแหน่งเชิงพื้นที่เป็นเลเยอร์ใน QGIS จากนั้นคุณเลือกระเบียนทั้งหมดในตารางแอตทริบิวต์ใน QGIS (การเลือกที่ชัดเจน, การเลือกกลับด้าน) และคัดลอกเหล่านี้ลงในแผ่นงานใหม่ใน LibreOffice Calc คุณจะพบฟิลด์แรกคือ WKT ซึ่งเป็นคำอธิบายของคุณลักษณะที่สามารถใช้ใน GIS ได้ การคำนวณจะให้กล่องโต้ตอบเพื่อนำเข้าตารางวางเลือกคั่นด้วยแท็บตรวจสอบให้แน่ใจว่าเครื่องหมายจุลภาคไม่ถูกทำเครื่องหมายเนื่องจากมันจะเคี้ยวฟิลด์ WKT ไปยังบิต จากนั้นไฮไลต์ตารางนี้ใน Calc สลับไปที่ฐานเน้นไอคอนตารางทางด้านซ้ายและวาง ฐานจะผ่านกล่องโต้ตอบเพื่อนำเข้าตาราง ฟิลด์ WKT สามารถเก็บรักษาไว้ได้ผ่านการเข้าร่วมและเมื่อไฟล์ถูกนำกลับเข้าสู่ QGIS เป็น. csv สิ่งเหล่านี้จะใช้เพื่อย้ายสถานที่ เพียงจำการฉายภาพ

ด้วยวิธีนี้คุณจะสามารถควบคุมการเข้าร่วมได้อย่างเต็มที่และสามารถทำได้ใน "ย้อนกลับ" สิ่งที่ต้องทำในฐานให้แน่ใจว่าเขตข้อมูลที่ไม่ซ้ำกัน (1) เป็นคีย์หลักแล้วคุณชี้ไปที่ "มาก" ถ้าคุณคุ้นเคยกับแนวคิด 1 ถึงมากหรือ 1 ถึง n ตัวเชื่อมถูกตั้งค่าโดยการสร้างความสัมพันธ์ | เครื่องมือ | ดังที่ได้กล่าวไปแล้วคุณอาจต้องการเตะใครบางคนเมื่อคุณพบว่าเขตข้อมูลการเข้าร่วมมีข้อมูลเดียวกัน แต่ได้ใช้ข้อความหรือไวยากรณ์ที่แตกต่างกันเพื่อเป็นตัวแทนของมัน

HTH


2

ฉันไม่คิดว่ามันเป็นไปได้ที่จะเชื่อมโยงตารางที่มีความสัมพันธ์ 1 ถึงหลายอย่างใน QGIS คุณอาจลองใช้ gvSIG ที่นี่คุณสามารถสร้างลิงก์ได้ 1 ถึงหลายลิงค์ หลังจากสร้างลิงก์การเลือกสถานที่ในแผนที่จะเน้นบันทึกที่เกี่ยวข้องทั้งหมดในตารางที่เชื่อมโยง


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