นี่คือแผนที่รูปร่างที่มีรูปหลายเหลี่ยมหลายระดับ
ให้ถามวิธีทำให้รูปหลายเหลี่ยมทำให้จุดยอดทั้งหมดคงอยู่ในตำแหน่งที่แน่นอนได้อย่างไร
จริง ๆ แล้วรูปร่างนั้นถูกสร้างขึ้นบนข้อมูลกริดคุณอาจแนะนำให้ปรับข้อมูลกริดให้เรียบและดังนั้นผลลัพธ์ที่ได้จะราบรื่นขึ้น โปรดทราบว่านี่ไม่ทำงานตามที่ฉันต้องการเนื่องจากฟังก์ชั่นการปรับให้เรียบเช่นตัวกรองแบบเกาส์จะลบชุดข้อมูลขนาดเล็กและจะเปลี่ยนช่วงของตัวแปรที่สามเช่นความสูงที่ไม่ได้รับอนุญาตในแอปพลิเคชันของฉัน
อันที่จริงฉันกำลังมองหาชิ้นส่วนของรหัส (โดยเฉพาะอย่างยิ่งในPython ) ซึ่งสามารถทำการปรับให้เรียบของรูปหลายเหลี่ยม 2 มิติ (ชนิดใดก็ได้: นูนเว้าการตัดกันด้วยตนเองเป็นต้น) ไม่เจ็บปวดพอสมควร (ลืมหน้ารหัส) และแม่นยำ
FYI มีฟังก์ชั่นใน ArcGISที่ทำสิ่งนี้ได้อย่างสมบูรณ์แบบ แต่การใช้แอพพลิเคชั่นเพื่อการค้าของบุคคลที่สามไม่ใช่ตัวเลือกของฉันสำหรับคำถามนี้
1)
Scipy.interpolate:
ในขณะที่คุณเห็นเส้นโค้งที่เกิด (สีแดง) ไม่เป็นที่พอใจ!
2)
นี่คือผลลัพธ์โดยใช้รหัสที่ให้ไว้ในที่นี้ มันใช้งานไม่ได้!
3)
สำหรับฉันทางออกที่ดีที่สุดควรเป็นสิ่งต่อไปนี้ซึ่งเป็นรูปสี่เหลี่ยมจัตุรัสที่ถูกปรับให้เรียบโดยค่อยๆเปลี่ยนค่าเพียงค่าเดียว ฉันหวังว่าแนวคิดที่คล้ายกันเพื่อทำให้รูปหลายเหลี่ยมเรียบขึ้น
ตอบสนองเงื่อนไขที่เส้นโค้งผ่านจุด:
4)
นี่คือการดำเนินการของฉัน "ความคิดของคนจรจัด" ทีละบรรทัดในPythonกับข้อมูลของเขา อาจมีข้อบกพร่องบางอย่างเนื่องจากผลลัพธ์ไม่ดี
K = 2 เป็นหายนะดังนั้น k> = 4
5)
ฉันลบจุดหนึ่งไปยังตำแหน่งที่มีปัญหาและตอนนี้เดือยที่เกิดขึ้นนั้นเหมือนกับของ whuber's แต่ก็ยังคงมีคำถามว่าทำไมวิธีการนี้จึงใช้ไม่ได้กับทุกกรณี
6)
การปรับให้เรียบของข้อมูลของ whuber สามารถทำได้ดังต่อไปนี้ (วาดโดยซอฟต์แวร์กราฟิกแบบเวกเตอร์) ซึ่งมีการเพิ่มจุดพิเศษอย่างราบรื่น (เปรียบเทียบกับการอัปเดต
4):
7)
ดูผลลัพธ์จากโค้ดของ whuber ของ Python สำหรับรูปร่างที่เป็นสัญลักษณ์:
โปรดทราบว่าวิธีนี้ใช้ไม่ได้กับ polylines สำหรับมุมสีเขียว (รูปร่าง) เป็นสิ่งที่ฉันต้องการ แต่มีสีแดง สิ่งนี้จำเป็นต้องได้รับการแก้ไขเนื่องจากแผนที่รูปร่างมักจะมีโพลีนอยู่เสมอถึงแม้ว่าโพลีลีนแบบปิดจะถือว่าเป็นรูปหลายเหลี่ยมเหมือนในตัวอย่างของฉัน ยังไม่ได้ที่ปัญหาที่เกิดขึ้นในการปรับปรุง 4 ยังไม่ได้รับการแก้ไข
8) [ล่าสุดของฉัน]
นี่คือทางออกสุดท้าย (ไม่สมบูรณ์แบบ!):
จำไว้ว่าคุณจะต้องทำอะไรบางอย่างเกี่ยวกับพื้นที่ที่ดาวชี้ อาจมีข้อผิดพลาดในรหัสของฉันหรือวิธีที่เสนอต้องการการพัฒนาเพิ่มเติมเพื่อพิจารณาสถานการณ์ทั้งหมดและเพื่อให้ผลลัพธ์ที่ต้องการ