วิธีการเชื่อมต่อสายในเครือข่าย?


15

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

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

ความคิดใด ๆ


1
เข้าร่วมจุดสิ้นสุดของรูปหลายเหลี่ยมเชิงเส้นกับรูปหลายเหลี่ยมและสรุปจำนวนด้วยรูปหลายเหลี่ยม สำหรับรูปหลายเหลี่ยมแต่ละอันที่มีจุดเชื่อมต่อมากกว่าหนึ่งจุดให้สร้างรูปหลายเหลี่ยมที่ประกอบด้วยส่วนที่แผ่ออกมาจากจุดศูนย์กลางของจุดปลายเหล่านั้นออกไปยังจุดปลายทางด้วยตัวเอง ("ดาว") ผสานดวงดาวกับ polylines ดั้งเดิม ทำความสะอาดผลลัพธ์เพื่อลบจุดตัดที่เกิดขึ้น สนับสนุนแต่ละขั้นตอนเหล่านี้ (และสามารถอัตโนมัติ) โดย GIS ที่มีความสามารถอย่างเต็มที่ เนื่องจากฉันไม่คุ้นเคยกับรายละเอียดของ QGIS หรือ GRASS ฉันจึงเสนอวิธีนี้เป็นความคิดเห็นเท่านั้น
whuber

แต่บางครั้งทุกสายจบนอกรูปหลายเหลี่ยม ...
vascobnunes

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

1
ความคิดเห็นของคุณดูเหมือนจะขัดแย้งกับคำถาม คำถามดูเหมือนจะบอกว่าคุณต้องการ snap จุดยอดที่ตกอยู่ในรูปหลายเหลี่ยมทั่วไป หากจุดสุดยอดอยู่นอกรูปหลายเหลี่ยมคุณไม่ได้กำหนดเกณฑ์สำหรับวิธีการปฏิบัติ! แล้วความสัมพันธ์ระหว่างรูปหลายเหลี่ยมกับโพลิลีนคืออะไร?
whuber

1
ฉันเห็นด้วยกับเสียงหวือ; บางทีคุณควรชี้แจงคำถาม ดูเหมือนว่าคุณต้องการเส้นที่เป็น 'ใน' รูปหลายเหลี่ยมรวมทั้ง 'ปิด' แต่ไม่รวมบรรทัดที่เป็น 'ใน' แต่เข้าร่วมอย่างถูกต้องหรือไม่
Darren รับมือ

คำตอบ:


7

ความเข้าใจของฉันเกี่ยวกับปัญหาเป็นดังนี้:

หากจุดสิ้นสุดของรูปหลายเหลี่ยมตัดกับรูปหลายเหลี่ยมรูปหลายเหลี่ยมนั้นจำเป็นต้องเชื่อมต่อรูปหลายเหลี่ยม (โดยการเพิ่มหรือปรับจุดยอด) ไปยังจุดสิ้นสุดรูปหลายเหลี่ยมเพิ่มเติมทั้งหมดที่ตัดกันรูปหลายเหลี่ยมเดียวกัน

จุดสิ้นสุดของโพลิไลน์บางอันไม่ได้ตัดกับรูปหลายเหลี่ยมซึ่งเป็นรูปด้านล่าง แต่ควรเชื่อมต่อกับสิ่งเหล่านี้ตามด้านบน

คำตอบนี้สร้างจากคำสั่งบางคำที่ได้รับ แต่ไม่สมบูรณ์เนื่องจากฉันไม่ทราบคำสั่ง QGIS ทั้งหมดบางทีอาจมีบางคนที่สามารถเพิ่มได้

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

  2. สำหรับจุดสิ้นสุดของรูปหลายเหลี่ยมที่อยู่ภายในรูปหลายเหลี่ยมให้ขยายจุดสิ้นสุดของรูปหลายเหลี่ยมนั้นไปที่กึ่งกลางของรูปหลายเหลี่ยม (แยกจุดศูนย์กลางรูปหลายเหลี่ยมด้วยการใช้Vector> เครื่องมือรูปทรงเรขาคณิต> รูปทรงเรขาคณิตของรูปหลายเหลี่ยมไม่แน่ใจเกี่ยวกับการแก้ไขเส้น จุดยอด polyline เป็นจุดและเพิ่มจุดเพิ่มเติมด้วยการกำหนดหมายเลขที่เหมาะสมก่อนสร้าง polyline ที่แก้ไขใหม่โดยใช้ปลั๊กอิน Points to Paths)

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

  3. สำหรับจุดสิ้นสุดของรูปหลายเหลี่ยมที่อยู่นอกรูปหลายเหลี่ยมให้ขยายจุดสิ้นสุดของรูปหลายเหลี่ยมนั้นไปที่กึ่งกลางของรูปหลายเหลี่ยมที่ใกล้ที่สุด อีกครั้งฉันไม่แน่ใจเกี่ยวกับการคำนวณรูปหลายเหลี่ยมที่ใกล้ที่สุดแม้ว่าโมดูล GRASS v.distance ดูเหมือนจะใช้กลอุบาย


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

วิธีหนึ่งคือการแปลง polylines เป็นคะแนนตามที่อธิบายไว้และหากจำเป็นต้องเพิ่มจุดเพิ่มเติมที่จุดเริ่มต้นหรือจุดสิ้นสุดของบรรทัดที่กำหนดตามที่ตั้งของจุดเริ่มต้นหรือจุดสิ้นสุดที่มีอยู่ ตำแหน่งของจุดที่เพิ่มเข้ามานั้นจะเป็น centroid ของรูปหลายเหลี่ยมและจุดนั้นจะถูกนำมาประกอบกับหมายเลขลำดับจุดสุดยอดที่ -1 หรือ 1000000 เพื่อวางไว้ที่จุดเริ่มต้นหรือจุดสิ้นสุดของรูปหลายเหลี่ยม สิ่งนี้จะทำให้สามารถสร้าง polylines ใหม่โดยใช้เครื่องมือ Points to Path
Andy Harfoot

2

ฉันคิดว่าฉันสามารถทำได้ด้วยอัลกอริทึมที่กำหนดเอง ... โปรดทราบว่าคุณต้องการใช้มันอย่างไร แต่ฉันคิดว่ามันจะทำงานได้

สำหรับแต่ละบรรทัดสำหรับแต่ละจุดสิ้นสุดให้ทำจุดในรูปหลายเหลี่ยมสำหรับจุดยอดที่จุดสิ้นสุดและเชื่อมโยงไปยังรูปหลายเหลี่ยม

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

นั่นง่ายมาก แต่ไม่พร้อมใช้งานในผู้ให้บริการมาตรฐาน ฉันคิดว่ามันสามารถทำได้ใน ArcGIS ด้วยเวลาเข้ารหัสหนึ่งวัน

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


1

ปัญหาที่น่าสนใจ! ฉันไม่คิดว่าจะทำการ snapping โดยอัตโนมัติได้อย่างไร แต่นี่เป็นขั้นตอนในการระบุพื้นที่เพื่อดูการแก้ไขด้วยตนเองอย่างน้อย:

  • เพิ่มคอลัมน์ใหม่ลงในเลเยอร์บรรทัดของคุณและตั้งค่าให้เท่ากับ '1' สำหรับคุณสมบัติทั้งหมด
  • ภายใต้เวกเตอร์> เข้าร่วมคุณสมบัติตามสถานที่ตั้งเลเยอร์เป้าหมายของคุณเป็นเลเยอร์รูปหลายเหลี่ยมของคุณและเลเยอร์บรรทัดเป็นเลเยอร์เข้าร่วม จากนั้นเลือก "ใช้บทสรุปของคุณสมบัติการตัด" และคลิก "รวม" ระบุตำแหน่งสำหรับไฟล์เอาต์พุตและ "ตกลง"
  • ไฟล์รูปหลายเหลี่ยมที่ได้จะเป็นเลเยอร์รูปหลายเหลี่ยมดั้งเดิมของคุณ แต่มีฟิลด์เพิ่มเติมบางส่วน ฟิลด์ SUM คือสิ่งที่คุณต้องการ เมื่อเป็น 2 ก็หมายความว่าเมื่อนั้นคุณสามารถซูมเข้าและถ่ายภาพคุณสมบัติได้เอง

ขึ้นอยู่กับสถานการณ์ (จำนวนคุณสมบัติจำนวนที่อยู่ในสถานการณ์นี้กับที่ไม่ได้ ฯลฯ ) สิ่งนี้อาจช่วยคุณประหยัดเวลาได้

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


ฉันทำอะไรแบบนั้นมาแล้ว ฉันยังใช้ v.net เพื่อดึงข้อมูลโหนดสำหรับบรรทัดและทำการเลือกเชิงพื้นที่ของรูปหลายเหลี่ยมที่จับคู่โหนด ฉันพบข้อผิดพลาดมากมายในการแก้ไขโดยใช้สิ่งนี้ แต่ฉันยังคงมีปัญหาใหญ่ 3 ปัญหา: 1) มีข้อผิดพลาดนับพันที่ต้องแก้ไขด้วยตนเองซึ่งใช้เวลานาน 2) ฉันไม่ได้รับข้อผิดพลาดทั้งหมดที่เกิดขึ้นในบางกรณีเส้นหรือโหนดไม่ได้ 'สัมผัส' รูปหลายเหลี่ยม; 3) ฉันได้รับข้อผิดพลาดที่ไม่ใช่ข้อผิดพลาดเกิดขึ้นเมื่อสองบรรทัดเชื่อมต่ออย่างถูกต้องพวกเขาจะถูกเลือกด้วย
vascobnunes

0

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

สิ่งนี้จะใช้ได้แม้กับผู้ที่อยู่นอกรูปหลายเหลี่ยม ทำอย่างไรใน QGIS ฉันไม่รู้ขอโทษ แต่ฉันจะทำสิ่งนี้ในผลิตภัณฑ์ของ ESRI ที่ฉันรู้ดี นั่นคือสิ่งที่ฉันเข้าใจเมื่อ whuber ในคำตอบแรกแนะนำให้สร้าง "ดาว"

ฉันค่อนข้างมั่นใจว่ามีคนที่นี่ที่รู้วิธีการวิเคราะห์เช่นนี้ใน QGIS


4
ยินดีต้อนรับสู่ GIS Stack Exchange! ฉันสังเกตเห็นว่าคำตอบของคุณดึงดูดความสนใจและสงสัยว่าเป็นเพราะคุณได้แนะนำทางเลือกใหม่ให้กับเทคโนโลยีที่ผู้ถามใช้ (GRASS / QGIS) คำแนะนำของฉันคือการลอยข้อเสนอแนะเช่นความคิดเห็นมากกว่าคำตอบและหากผู้ถามดูเหมือนสนใจแล้วถ่ายโอนข้อมูลไปยังคำตอบ
PolyGeo
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.