วิธีพูดคุยชายฝั่ง


12

ฉันมีชุดข้อมูลขนาดใหญ่ที่แสดงถึงแนวชายฝั่งของโลก ฉันไม่ทราบความละเอียดที่แน่นอน แต่ฉันบอกว่ามันอยู่ในพื้นที่ใกล้เคียงของ 5-10m

ลองนึกภาพชุดของจุดที่เป็นตัวแทนของแนวชายฝั่งขรุขระ ที่ความละเอียด 1 ม. เราเห็นรายละเอียดทั้งหมดและต้องการจุดข้อมูล 50 จุดเพื่อแสดงชายฝั่งอย่างถูกต้องอย่างไรก็ตามที่ความละเอียด 10 กม. ชายฝั่งดูเหมือนเส้นตรงและเราต้องการเพียง 2 จุดเท่านั้น

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

ฉันได้อ่านเกี่ยวกับ Vector-Tiling แล้วและคิดว่านี่จะเป็นคำตอบที่ดีที่สุด (ฉันทำอะไรแบบนี้อยู่แล้ว) อย่างไรก็ตามที่ความละเอียดต่ำชุดข้อมูลของฉันยังคงมีความหมายมาก เวลาซึ่งความละเอียดสูงนั้นรวดเร็วเนื่องจากชุดข้อมูล 'ประสิทธิผล' มีขนาดเล็ก (ชุดย่อยทั้งหมด)

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

ฉันยินดีที่จะใช้เครื่องมือ แต่ฉันควรทำด้วยตัวเองในความพยายามที่จะเรียนรู้วิธีการใช้งาน


1
คุณตรวจสอบคำตอบของgis.stackexchange.com/questions/6585/หรือไม่? โปรดอธิบายอย่างละเอียดหากคุณคิดว่าคำถามของคุณแตกต่าง
underdark

1
ดูเหมือนว่าคำถามควรเกี่ยวกับแนวชายฝั่งแทนที่จะเป็น "คะแนน" เมื่อความละเอียดลดลงเกาะเล็ก ๆ ควรหายไป? มันโอเคสำหรับแนวชายฝั่งรอบ ๆ เกาะคดเคี้ยวเพื่อข้าม?
Kirk Kuykendall

หากคุณต้องการทำงานที่ผ่านได้และดำเนินการต่อไปคำตอบของ @R Thiedeน่าจะเป็นจุดเริ่มต้นที่ดีที่สุด หากคุณต้องการที่จะทำงานในความท้าทายที่แท้จริงง่าย linework โดยไม่สูญเสียความหมายของรูปทรงให้ดูที่คำถามที่เกี่ยวข้องgis.stackexchange.com/questions/38/...และgis.stackexchange.com/questions/440/...
matt wilkie

คำตอบ:


7

วิธีที่คุณจะไปเกี่ยวกับการแก้ปัญหานี้ขึ้นอยู่กับกรณีและความสำคัญของโทโพโลยีที่แท้จริงมีความสำคัญต่อคุณอย่างไร (เทียบกับภาพ / เวลาในการแสดงผล) เนื่องจากเป้าหมายสุดท้ายของคุณคือการสรุปแนวชายฝั่งคุณอาจพบแนวคิดบางประการเกี่ยวกับการวางหลักเกณฑ์ทั่วไปที่มีประโยชน์

วิธีการหนึ่งที่ใช้บัฟเฟอร์เท่าที่เห็นนี่ ฉันยังมีปัญหาคล้ายกันในขณะที่ผ่านมาและรายละเอียดวิธีการแก้ปัญหาของฉันที่นี่

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


+1 สำหรับการตอบกลับอย่างรอบคอบ ยินดีต้อนรับสู่เว็บไซต์ของเราRüdiger!
whuber

5

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

อัลกอริทึมทั่วไปคลาสสิกเป็นอัลกอริทึมดักลาส Peucker คุณจะต้องเชื่อมต่อคะแนนกับแนวชายฝั่งก่อนถ้าคุณยังไม่ได้ทำ


2
ไลบรารี GEOS มีอัลกอริทึม Douglas-Peucker ในตัวที่คุณสามารถใช้ได้หากคุณต้องการโค้ดนี้เอง คุณอาจต้องการพิจารณาโทโพโลยีซึ่งในกรณีนี้เครื่องมือ GRASS v.generalize สามารถช่วยได้เช่นกัน
lagerratrobe

สวัสดี @lagerratrobe ฉันสร้างวิกิชุมชนนี้เป็นคำตอบดังนั้นคุณควรจะสามารถแก้ไขได้โดยตรงและเพิ่มทั้งโซลูชัน GEOS และ GRASS
underdark

1

คุณได้ตรวจสอบ Tilemill เพื่อผลิตชุดไพ่ของคุณหรือไม่? โดยอัตโนมัติจะลดโหนดที่ระดับการซูมที่แตกต่างกัน https://github.com/mapbox/tilemill


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.