จุด (ของการดึงแสง) ภายในรูปหลายเหลี่ยมโดยใช้ ogr และ Python
ขณะนี้ฉันกำลังทำงานในโครงการที่ฉันต้องการสร้างเครือข่ายทอพอโลยีจากคุณสมบัติทางเรขาคณิตที่ฉันพบในรูปร่างไฟล์ จนถึงตอนนี้การใช้โครงการโอเพ่นซอร์สของ Ben Reillyฉันได้ทำการแปลง linestrings เป็น edge networkx รวมถึงการตรวจสอบคุณสมบัติปิด (linestrings อื่นพูด) และเพิ่มไปยังจุดที่ใกล้ที่สุด แต่มันก็ใช้ได้สำหรับไฟล์รูปร่างเดียว อย่างไรก็ตามตอนนี้ฉันต้องเชื่อมต่อฟีเจอร์ต่าง ๆ จากรูปร่างที่แตกต่างกันเข้ากับกราฟ networkx ขนาดใหญ่ ตัวอย่างเช่นถ้าจุดอยู่ภายในรูปหลายเหลี่ยมฉันจะเชื่อมต่อมัน (โดยเชื่อมต่อฉันหมายถึงเพิ่มขอบเครือข่าย - add_edge (g.GetPoint (1), g.GetPoint (2)) กับจุดในรูปร่างไฟล์ถัดไปที่ ยังอยู่ในรูปหลายเหลี่ยมที่ใช้แอตทริบิวต์ที่คล้ายกัน (พูด ID) โปรดทราบว่ารูปหลายเหลี่ยมในส่วนต่าง ๆ จะใช้รหัสเดียวกันเท่านั้นและไม่ใช่พิกัดจุดที่อยู่ภายในรูปหลายเหลี่ยมนั้นไม่ได้ใช้พิกัดเดียวกัน วิธีแก้ไขปัญหานี้ของฉันคือการระบุจุดที่อยู่ในรูปหลายเหลี่ยมเก็บไว้ค้นหาจุดใน shapefile ถัดไปที่อยู่ในรูปหลายเหลี่ยมที่มี id เดียวกันและเพิ่ม networkx edge ระหว่างพวกเขา จะหาได้อย่างไรว่าจุดนั้นอยู่ในรูปหลายเหลี่ยมหรือไม่? มีอัลกอริทึมที่รู้จักกันดี: อัลกอริทึมRayCastingที่ทำเช่นนั้น นี่คือจุดที่ฉันติดอยู่จริงเพราะเพื่อที่จะใช้อัลกอริทึมที่ฉันต้องการพิกัดของรูปหลายเหลี่ยมและไม่ทราบวิธีการเข้าถึงพวกเขาในขณะนี้แม้หลังจาก skimming ผ่านเอกสารของเรขาคณิตของ OGR ดังนั้นคำถามที่ฉันถามคือการเข้าถึงจุดรูปหลายเหลี่ยมหรือพิกัดหรือมีวิธีที่ง่ายกว่าในการตรวจสอบว่าจุดตกอยู่ในรูปหลายเหลี่ยม? การใช้ …