วิธีเติมหลุมเป็นรูปหลายเหลี่ยมโดยอัตโนมัติ


12

มีตัวเลือกใน QGIS เพื่อเติมช่องว่างในรูปหลายเหลี่ยมโดยอัตโนมัติโดยการตั้งค่าพารามิเตอร์เช่นพื้นที่สูงสุดระยะห่างระหว่างเส้นขอบหรือไม่ ฉันต้องการที่จะลบ / เติมหลุมที่ "ผอม" / เล็กมาก


1
คุณสนใจที่จะเจาะรู (วงแหวนภายใน polgyons) หรือลดช่องว่างระหว่างรูปหลายเหลี่ยมแยกกันหรือไม่?
Simbamangu

สิ่งนี้จะต้องเป็นโซลูชั่นที่ใช้ QGIS หรือไม่? ฉันบล็อกก่อนหน้านี้เกี่ยวกับวิธีการทำสิ่งนี้ให้สำเร็จโดยใช้ spatial SQL ใน PostGIS ( geospatial.commons.gc.cuny.edu/2013/11/04/… ) หากคุณไม่ได้ใช้งาน PostGIS ฉันอาจปรับให้เหมาะกับคุณเป็น SpatiaLite ซึ่งถ้าคุณใช้ QGIS คุณอาจมี SpatiaLite อยู่ใน toolchain ของคุณอยู่แล้ว
Lee Hachadoorian

คำตอบ:


11

การใช้ QGIS 2.10.1-Pisa กับรุ่นการประมวลผล 2.10.2 มีเครื่องมือสองสามอย่างที่พร้อมใช้งานจากกล่องเครื่องมือการประมวลผล :

  • หลุมเติมเครื่องมือที่คุณสามารถระบุพื้นที่มากที่สุด
  • เครื่องมือลบหลุมซึ่งจะนำไปใช้กับชั้นการป้อนข้อมูลทั้งหมด

หวังว่านี่จะช่วยได้!


1
เพื่อตรวจสอบพารามิเตอร์พื้นที่สูงสุดนั่นคือขนาดสูงสุดของหลุมที่จะเติม? ดังนั้นในโครงการ UTM หนึ่งเมตรหากค่าสูงสุดคือ 10,000 นั่นหมายความว่าหลุมที่ใหญ่ที่สุดที่จะเติมเต็มจะเป็นเฮกตาร์และใหญ่กว่านั้นอีก
BillW

1
@BillW - ใช่ผมเชื่อว่าเป็นสิ่งที่มันไม่ :)
โจเซฟ

11

ฉันประสบปัญหาเดียวกับไฟล์รูปร่างนี้ของคุณโดยมีช่องว่างมากมายระหว่างรูปหลายเหลี่ยม

ไฟล์ต้นฉบับที่มีช่องว่าง

เพื่อแก้ปัญหาคุณสามารถใช้วิธีการแก้ไข tshiffle เล็กน้อย:

  1. ก่อนอื่นให้ดำเนินการแตกต่างระหว่างไฟล์ของคุณกับรูปหลายเหลี่ยมที่ครอบคลุมทั้งหมด

Extent_polygon

Difference_tool

การกระทำนี้จะสร้างรูปร่างไฟล์ใหม่ที่ประกอบด้วยรูปหลายเหลี่ยมเพียงรูปเดียวดังนั้นคุณต้องขยายออกเป็นส่วนเดียว สำหรับสิ่งนั้นคุณสามารถใช้เครื่องมือ Vector / Geometry / Multipart กับเครื่องมือ singleparts

Difference_result

Multi_to_single

หลังจากนั้นลบเอนทิตีภายนอก ตอนนี้คุณมีรูปร่างหลายเหลี่ยมหลายรูปแบบซึ่งครอบคลุมช่องว่างของความครอบคลุมดั้งเดิมของคุณ

gaps_covered

  1. ดำเนินการสหภาพระหว่างข้อมูลเริ่มต้นและส่วนเดียว ใช้เครื่องมือ SAGA เนื่องจากตัวเลือก QGIS เริ่มต้นจะสร้างรายการที่ซ้ำกันลงในฐานข้อมูล

สหภาพ

  1. ช่องว่างทั้งหมดจะปรากฏเป็นเรคคอร์ดว่างในฐานข้อมูล (สำหรับตัวอย่าง 72 แถว) จัดเรียงตารางของคุณโดยใช้ฟิลด์พื้นที่และรับค่าจากรูปหลายเหลี่ยมที่เล็กที่สุดในไฟล์ต้นฉบับ สำหรับกรณีนี้ 0.13645 เฮกตาร์

ฐานข้อมูล

  1. สุดท้ายใช้เครื่องมือ "กำจัดรูปหลายเหลี่ยม" ด้วยการตั้งค่าที่แสดงในภาพ

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

  1. ผลลัพธ์สุดท้ายไม่มีช่องว่างใด ๆ

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


คุณสามารถเพิ่มข้อมูลเพิ่มเติมเกี่ยวกับการเลือกพารามิเตอร์ได้หรือไม่ "ค่า" คืออะไร? หน้าเอกสาร QGIS นั้นมีรายละเอียดที่สั้นมาก คำตอบที่สง่างามมากสงสารผู้ใช้ครั้งแรกยังไม่ได้รับคำตอบใด ๆ !
user3386170

1
'มูลค่า' คือขนาดที่คุณใช้สำหรับการเปรียบเทียบ ในตัวอย่างฟิลด์ 'พื้นที่' ที่ใช้แล้วถูกตั้งค่าเป็นเฮกตาร์ดังนั้น 0.1 หมายถึง: กำจัดรูปหลายเหลี่ยมที่เล็กกว่าหรือเท่ากับ 0.1 เฮกตาร์
gtapko

gtapko คุณช่วยให้รายละเอียดเพิ่มเติมเกี่ยวกับเฟส 3 ได้ไหม ฉันไม่สามารถเข้าใจได้ขอบคุณ
newGIS

4

อาจมีคำตอบที่สง่างามกว่านี้ แต่มันก็ใช้ได้กับฉันเสมอ

1) สร้างรูปหลายเหลี่ยม "การเติมหลุม" เมื่อต้องการทำสิ่งนี้ให้ดึงรูปหลายเหลี่ยมยักษ์ที่มีขนาดใหญ่กว่าต้นฉบับและใช้เครื่องมือ "ความแตกต่าง" หากคุณวาดรูปหลายเหลี่ยมที่มีขนาดใหญ่กว่ามากคุณจะมีรูปหลายเหลี่ยม "การเติมหลุม" รวมกับรูปหลายเหลี่ยมที่มีขนาดใหญ่กว่าที่มีรูปร่างเหมือนเดิม ลบรูปหลายเหลี่ยมที่มีขนาดใหญ่โดยรักษารูปหลายเหลี่ยม "การเติมหลุม"

2) ผสาน "รูปหลายเหลี่ยม" เข้ากับรูปทรงไฟล์ต้นฉบับ หากคุณต้องการเติมช่องว่างที่ตรงกับเกณฑ์ที่กำหนด (เช่นใต้จำนวน X ของตารางกิโลเมตร) คุณสามารถกรองได้ที่นี่

3) ยุบรูปหลายเหลี่ยมที่รวมใหม่บนฟิลด์ทั่วไป


ไม่ชัดเจนเกี่ยวกับขั้นตอนที่ 3 บางคนจะพบเขตข้อมูลทั่วไปได้อย่างไร
iRfAn

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

4

ใน python / shapely สิ่งนี้สามารถเติมรูปหลายเหลี่ยมของคุณ:

import shapely
from shapely.geometry import Polygon
filled_shape = Polygon(shape_with_holes.exterior)

2

ฉันเคยเห็นคำอธิบายบางอย่างตามเส้นทางเดียวกันกับ gtapko และ tshiffle แต่ไม่มีใครทำงานให้ฉันเพราะรูปทรงเรขาคณิตที่ไม่ถูกต้องทำให้เครื่องมือต่างกันไม่ทำงาน ดังนั้นฉันจึงคิดวิธีแก้ปัญหาของตัวเองซึ่งไม่อัตโนมัติ 100% แต่สามารถจัดการได้ อาจมีคนคิดอยู่แล้ว แต่ฉันจะใช้โอกาสของฉัน:

1) สร้าง ID บนเลเยอร์ต้นฉบับที่เสียหาย

การสร้างแอตทริบิวต์ ID นั้นง่าย แต่เป็นวิธีแก้ปัญหาของฉันดังนั้นฉันจะไปดู

ก่อนอื่นคุณต้องเปิดตารางคุณสมบัติแล้วไปที่Field Calculatorซึ่งเป็นปุ่มที่คล้ายกับลูกคิดมาก ที่นั่นคุณจะได้รับตัวเลือกในการสร้างฟิลด์ใหม่หรืออัปเดตฟิลด์ที่มีอยู่ ในภาพด้านบนฉันกำลังสร้างใหม่ที่เรียกว่า "ID" สูตรถูกต้องที่ส่วนท้ายของรูปภาพ (ขออภัยที่ติดตั้ง QGIS ของฉันในภาษาอื่นเนื่องจากการออกแบบและสูตรนั้นเหมือนกันตลอดทั้งเวอร์ชันภาษาฉันไม่คิดว่ามันจะเป็นแบบของเราที่นี่)

2) แปลงรูปหลายเหลี่ยมเป็นเส้น

ขั้นตอนนี้อยู่ที่ส่วนVector> Geometryในเมนู รูปร่างที่แปลงแล้วของคุณควรมีลักษณะเช่นนี้:

หลังจากแปลงรูปหลายเหลี่ยมเป็นเส้นแล้วคุณจะต้องทำตรงกันข้ามกันคือ ...

3) แปลงบรรทัดเป็นรูปหลายเหลี่ยม

ตัวเลือกอยู่ติดกัน อีกครั้งเราไม่รังเกียจอุปสรรคด้านภาษาที่นี่

4) ชื่นชมยินดี เหตุผลที่คุณทำตามขั้นตอนที่ 2 และ 3 เป็นเพราะตอนนี้คุณแน่ใจแล้วว่าบรรทัดเหล่านั้นจะถูกพิจารณาว่าเป็นรูปหลายเหลี่ยมซึ่งหมายความว่าตอนนี้พวกเขามีบรรทัดของตนเองบนตารางแอตทริบิวต์ หากคุณตรวจสอบมันจะมีลักษณะเช่นนี้:

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

ฉันรู้ว่านี่ไม่ใช่crème de la crèmeของการแก้ปัญหา QGIS แต่ถ้าคุณกำลังเผชิญกับสถานการณ์ที่เครื่องมือไม่ทำงานเนื่องจากรูปทรงเรขาคณิตที่ไม่ถูกต้องบรรทัดเหล่านี้สร้าง (ฉันพยายามละลายด้วย ID แต่ มันใช้งานไม่ได้) แล้วนี่อาจจะเป็นทางออก


คุณสามารถปรับปรุงภาพของคุณ ลิงค์เสีย!
Simbamangu

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