ฉันพยายามใช้ QGIS 2.14 เพื่อจับเครือข่ายถนนไปยังตารางหกเหลี่ยม แต่ฉันได้รับสิ่งประดิษฐ์แปลก ๆ
ฉันได้สร้างกริดหกเหลี่ยมด้วยMMQGISเซลล์มีขนาดประมาณ 20 x 23 เมตร ฉันบัฟเฟอร์เครือข่ายถนน 1 ม. และเพิ่มความหนาแน่นจึงมีโหนดทุกสองสามเมตร คุณสามารถเห็นสิ่งที่ฉันพยายามบรรลุด้านล่าง อย่างที่คุณเห็นฉันสามารถทำให้มันทำงานได้ในบางกรณี: -
- สีน้ำเงินคือถนนหนาแน่น (เส้นบัฟเฟอร์)
- สีแดงเป็นรุ่น 'hexified' - นี่คือสิ่งที่ฉันต้องการค้นหา
- สีเทาคือตารางฐานสิบหก
จากนั้นฉันใช้คุณสมบัติรูปทรงใหม่ของSnapเพื่อจัดเรียงโหนดไปยังมุมหกเหลี่ยมที่ใกล้เคียงที่สุด ผลลัพธ์มีแนวโน้ม แต่ดูเหมือนจะมีบางกรณีขอบที่เส้นขยายออกเพื่อเติมหกเหลี่ยม (หรือส่วนหนึ่งของมัน): -
เหตุผลของบัฟเฟอร์คือรูปทรงเรขาคณิตของ Snapไม่อนุญาตให้คุณไปยังชั้นที่มีรูปทรงเรขาคณิตที่แตกต่างกัน ตัวอย่างเช่นคุณไม่สามารถจัดเรียงโหนดบนเลเยอร์ LINE เพื่อให้คะแนนในเลเยอร์ POINT) ดูเหมือนว่า POLYGON จะมีความสุขมากที่สุดในการถ่าย POLYGON
ฉันสงสัยว่าถนนจะขยายออกไปเมื่อด้านหนึ่งของถนนสายบัฟเฟอร์ที่กระโดดไปด้านหนึ่งของเซลล์ฐานสิบหกและอีกฝั่งหนึ่งกระโดดไปด้านอื่น ๆ ของเซลล์ฐานสิบหก ในตัวอย่างของฉันถนนที่ข้ามไปทางทิศตะวันตกทิศตะวันออกในมุมที่รุนแรงดูเหมือนจะเลวร้ายที่สุด
สิ่งที่ฉันพยายามไม่ประสบความสำเร็จ: -
- บัฟเฟอร์เครือข่ายถนนด้วยจำนวนเล็กน้อยดังนั้นมันจึงยังคงเป็นรูปหลายเหลี่ยม แต่บางมาก
- ทำให้เซลล์หกเหลี่ยมมีความหนาแน่นเพิ่มขึ้น (ดังนั้นจึงมีโหนตามขอบไม่ใช่ที่มุม)
- การเปลี่ยนแปลงระยะการหักมุมสูงสุด (นี่มีเอฟเฟกต์มากที่สุด แต่ฉันไม่สามารถหาค่าในอุดมคติได้)
- ใช้เลเยอร์ LINE ไม่ใช่ POLYGON
ฉันพบว่าถ้าฉันเปลี่ยนไปใช้เลเยอร์เพียงแค่ LINE มันใช้งานได้ชั่วขณะหนึ่งแล้วเกิดปัญหา ดูเหมือนว่าจะบันทึกงานตามที่ไป - บางบรรทัดได้รับการประมวลผลบางส่วน
ไม่มีใครรู้วิธีอื่น ๆ ที่จะ snap คะแนนในบรรทัดไปยังจุดที่ใกล้ที่สุดในอีกชั้น / รูปหลายเหลี่ยมชั้นนึกคิดโดยไม่จำเป็นต้องใช้ postgres / postgis (แม้ว่าการแก้ปัญหาด้วย postgis จะยินดีด้วย)
แก้ไข
สำหรับทุกคนที่ต้องการที่จะมีการเดินทางที่ผมได้วางโครงการเริ่มต้น QGIS ที่นี่ใน Dropbox ซึ่งรวมถึงชั้น Hex Grid และ Densified line lines (เครือข่ายถนนมาจาก OSM ดังนั้นสามารถดาวน์โหลดได้โดยใช้ QuickOSM เช่นหากคุณต้องการรับต้นฉบับเพื่อลดขนาดถนน)
โปรดทราบว่ามันอยู่ใน OSGB (epsg: 27700) ซึ่งเป็น UTM ที่แปลเป็นภาษาอังกฤษสำหรับสหราชอาณาจักรโดยมีหน่วยเป็นเมตร