กำลังผสานรูปหลายเหลี่ยมที่อยู่ติดกันใน shapefile ที่ถูกแยกที่ขอบเขตของกระเบื้องหรือไม่


24

ขณะนี้ฉันกำลังใช้ข้อมูลอาคารจาก Ordnance Survey Vectormap District และฉันสังเกตเห็นว่ารูปหลายเหลี่ยมอาคารจำนวนมากแบ่งออกเป็น 2 เนื่องจากวิธีที่ OS แบ่งไฟล์รูปร่างออก

นี่คือสิ่งที่ฉันเห็นใน QGIS - ฉันได้เน้นบางส่วนของอาคารที่แยกตามแนวเขตแดนของกระเบื้อง:

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

ฉันไม่สามารถรวมสิ่งปลูกสร้างด้วยตนเองได้เนื่องจากมีวิธีการมากเกินไปที่แบ่งออกเป็นขอบเขต (นี่เป็นเพียงการซูมเข้าตัวอย่าง) ฉันกำลังมองหาวิธีอัตโนมัติในการแก้ปัญหานี้

น่าเสียดายที่แต่ละฝั่งอาคารแยกมีรหัสที่แตกต่างกันดังนั้นฉันไม่สามารถละลายได้อย่างง่ายดาย

คุณจะแนะนำให้ฉันรวมแผ่นกระเบื้องอาคารโดยอัตโนมัติได้อย่างไร

แก้ไข

ตอนนี้ฉันใช้ PostGIS เพื่อรวมรูปหลายเหลี่ยมแยกที่ขอบเขตของกระเบื้อง นี่คือคำสั่ง SQL ที่ใช้สำหรับฉัน - เร็วกว่าทำด้วย QGIS หลายเท่า:

DROP TABLE merged;
CREATE TABLE merged AS
SELECT
  -- Merge polygons that are within 0.01 metres of each other
  (ST_Dump(ST_Union(ST_Buffer(the_geom, 0.01)))).geom AS the_geom
FROM unmerged;

-- Update the geometry_columns table
SELECT Populate_Geometry_Columns();

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

คำตอบ:


18

หากคุณต้องการที่จะละลายขอบและมีความสุขกับการมีคุณสมบัติหลายรูปแบบขนาดใหญ่ของอาคารทั้งหมดคุณสามารถใช้เครื่องมือ "ละลาย" fTools ("Vector / Geoprocessing / Dissolve")

หากคุณต้องการเก็บแอตทริบิวต์ (ในกรณีของ OS Vector ที่เป็น ID เท่านั้นซึ่งดูเหมือนว่าจะเป็นกฎเกณฑ์โดยพลการ) คุณสามารถแยกชั้นเวกเตอร์ที่ละลายแล้วกำหนดคุณสมบัติของชั้นที่ไม่ละลายเดิมโดยใช้ "เข้าร่วมคุณสมบัติต่างๆ ตามที่ตั้ง ":

นี่เป็นส่วนย่อยของสองรูปร่างอาคารที่รวมอยู่ในไฟล์รูปร่างเดียวโดยใช้ "Vector / Data management / Merge Shapefiles เป็นหนึ่ง" สีจะถูกกำหนดแบบสุ่มเพื่อแสดงคุณสมบัติของแต่ละบุคคล:

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

หลังจากแยกคุณสมบัติโดยใช้ "Vector / Geometry / Multipart to singleparts" อาคารต่าง ๆ ก็จะมีคุณสมบัติของแต่ละบุคคลอีกครั้ง แต่ทั้งหมดนั้นมี ID เดียวกัน:

เรียกใช้ "เครื่องมือการจัดการข้อมูลเวกเตอร์ / ข้อมูล / คุณสมบัติการเข้าร่วมตามตำแหน่ง" โดยมีเลเยอร์แยกเป็นเป้าหมายและเลเยอร์ที่ผสานดั้งเดิมเป็นเลเยอร์เวกเตอร์เข้าร่วมอาคารจะถูกกำหนด ID แต่ละรายการของตนใหม่:


ฉันคิดว่าปัญหาอาจเป็นได้ว่านี่เป็น OS VMD OpenData (แก้ไขให้ฉันถ้าฉันผิด) ในกรณีนี้ฟีเจอร์จะไม่มีแอททริบิวที่สามารถใช้ในการละลายได้ ดังนั้นคุณอาจลองใช้ fTools สามัญละลาย ขอให้โชคดีกับสิ่งนี้ในเวกเตอร์ OpenData บางอันฉันมีรูปหลายเหลี่ยมแยกตามบรรทัดที่ตรงกับเส้นกริดที่เพิ่งจะไม่ละลาย
nhopton

@nhopton: แต่ fTools ทั่วไปที่ละลายจะรวมคุณสมบัติทั้งหมดไว้ในฟีเจอร์เดียว (หากไม่มี ID ที่สามารถใช้เพื่อระบุว่ามีฟีเจอร์ใดที่อยู่ด้วยกันเหมือนในกรณีนี้) ซึ่งน่าจะไม่ใช่ที่ร็อบต้องการ หากคุณใช้v.dissolveหลังจากกำหนดคุณลักษณะทั้งหมดบางอย่างที่มีคุณสมบัติหุ่นจำลองที่เหมือนกันเฉพาะคุณสมบัติที่แบ่งปันขอบเขตจะถูกรวมเข้าด้วยกัน
Jake

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

คุณแน่ใจหรือไม่ว่ารูปหลายเหลี่ยมทั้งหมดที่ควรจะถูกละลายจริง ๆ แล้วถูกละลาย? ที่นี่ส่วนใหญ่ละลาย แต่ไม่ใช่ทั้งหมด
nhopton

ขอบคุณสำหรับความช่วยเหลือ! ปรากฎว่า @nhopton นั้นถูกต้องและการแยก VectorMap District นั้นปิดไปเล็กน้อยดังนั้นจึงไม่สามารถละลายได้อย่างถูกต้อง ตอนนี้ฉันกำลังทดลองใช้ PostGIS เพื่อเร่งกระบวนการนี้ให้เร็วขึ้น
Robin Hawkes
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.