ลดความละเอียดของ shapefile ใน R (หรือ QGIS หากจำเป็น)


12

ฉันใช้ shapefiles ของประวัติศาสตร์ขอบเขตรัฐของสหรัฐอเมริกาจากNHGISเพื่อสร้างแผนที่ใน R. รูปร่างเหล่านี้มีความละเอียดสูงกว่าที่ฉันต้องการเมื่อทำแผนที่ในระดับประเทศ: มากกว่า 2 ล้านข้อสังเกตสำหรับไฟล์เดียว มีวิธีที่ฉันสามารถลดความละเอียดของ shapefiles เหล่านี้ใน R หรือไม่? หากจำเป็นฉันสามารถทำได้ใน QGIS แทน


คุณช่วยอธิบายเพิ่มเติมได้ไหม ความละเอียดเกี่ยวข้องกับภาพ คุณหมายถึงมีโหนดจำนวนมากเกินไปในรูปหลายเหลี่ยมที่ให้รายละเอียดมากเกินไปหรือไม่ หรือว่ามีจุดมากเกินไปในไฟล์รูปร่างจุด?
Ryan Garnett

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

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

คำตอบ:


9

คุณสามารถใช้gSimplifyจากrgeosแพ็คเกจและถ้าคุณเพิ่มการtopologyPreserve=TRUEตั้งค่าสถานะมันจะรักษาโทโพโลยี

โปรดทราบว่าคุณยังสามารถจบลงด้วยเส้นที่ทับซ้อนกัน - เราจำเป็นต้องใช้อัลกอริทึม DP ที่แข็งแกร่งใน R:

http://www.sciencedirect.com/science/article/pii/S0098300413002380

[ลิงก์นั้นอาจอยู่หลัง paywall]


+1 ยินดีที่ได้รู้จัก rgeosเอกสารอยู่ที่cran.r-project.org/web/packages/rgeos/rgeos.pdf
whuber

1

วิธีการมาตรฐานสำหรับ "ผอมบาง" รูปทรงเชิงเส้น (รวมถึงขอบเขตของรูปหลายเหลี่ยม) เป็นอัลกอริทึมดักลาส Peucker อย่างน้อยสองRแพคเกจการดำเนินการนี้: dpในshapefiles แพคเกจและthinnedSpatialPolyในแพคเกจ Guerry

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


อนึ่งเนื่องจากไม่มีใครรู้วิธีออกเสียงภาษาเยอรมันอีกต่อไป :-) ทอมโปเคอร์เปลี่ยนการสะกดชื่อของเขาเมื่อไม่นานมานี้


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