SpatialPolygons ทั่วไปและการอนุรักษ์โทโพโลยีใน R เป็นอย่างไร?


18

ฉันอยากจะสรุป a SpatialPolygonsDataFrame ใน R เพื่อให้การวางแผนมีประสิทธิภาพมากขึ้น รูปหลายเหลี่ยมที่ฉันส่งผลให้เป็นไฟล์ PDF ขนาดใหญ่ที่โหลดช้าและยากที่จะรวมเข้ากับเอกสาร

ฉันพยายามใช้gSimplifyฟังก์ชั่นจากrgeosแพ็คเกจ แต่น่าเสียดายที่มันไม่ได้อนุรักษ์โทโพโลยีของรูปหลายเหลี่ยม

มีทางเลือกอื่นที่ฉันสามารถใช้ได้หรือไม่?


ไม่ใช่วิธีแก้ปัญหา แต่คุณสามารถวางแผนไปยัง raster (jpg / png) แทนได้หรือไม่ คำถาม stackoverflow นี้ที่กล่าวถึงการลดขนาดไฟล์ PDF อาจมีการใช้งาน: stackoverflow.com/questions/8521299/ …
djq

การพล็อตแผนที่เป็นภาพแรสเตอร์เป็นทางเลือก แต่ถ้าเป็นไปได้ฉันต้องการใช้กราฟิกแบบเวกเตอร์ คุณภาพของรูปจะดีกว่าเมื่อใช้กราฟิกแบบเวกเตอร์โดยเฉพาะอย่างยิ่งเมื่อดูเอกสารในรูปแบบดิจิทัล
yellowcap

gSimplify()มีพารามิเตอร์ตัวที่เริ่มต้นที่topologyPreserve FALSEคุณลองตั้งค่ามันเป็นTRUE?
krlmlr

คำตอบ:


7

มีการอภิปรายเกี่ยวกับสิ่งนี้คือR-sig-ทางภูมิศาสตร์ สำหรับคำตอบที่ชัดเจนคุณควรถามที่นั่นเพราะมีคนที่รู้ความเข้าใจเชิงพื้นที่ของอาร์

แต่คุณสามารถทำได้ในแอปพลิเคชันเดสก์ท็อป GIS (ส่งออกรูปร่างโดยใช้คำสั่ง writeOGR จาก rgdal หรือ writePolyShape () จาก maptools) เช่น QuantumGIS, GRASS หรือ SAGA

สำหรับ QuantumGIS ใช้ Vector / Geometry Tools / ลดความซับซ้อนของรูปทรงเรขาคณิต (ฉันได้ทำการทดสอบและไม่รักษาทอพอโลยี แต่นำไปใช้กับรูปร่างโรมาเนีย admin1 รูปร่างดีกับโหนด 2000)

สำหรับ GRASS ให้ใช้ v.generalize (อ่านคู่มือสำหรับข้อมูลเกี่ยวกับอัลกอริทึมมีบางอย่าง)

สำหรับ SAGA คุณต้องแปลงรูปหลายเหลี่ยมเป็นเส้น (รูปร่าง - เส้น / แปลงรูปหลายเหลี่ยมเป็นเส้น) จากนั้นปรับรูปแบบเส้นให้เรียบง่าย (รูปทรงเส้น / การทำให้เส้นเรียบง่าย) และสุดท้ายแปลงเป็นรูปหลายเหลี่ยม (รูปทรง - รูปหลายเหลี่ยม / แปลงเส้นเป็นรูปหลายเหลี่ยม) ฉันได้ทำการทดสอบสิ่งนี้แล้วและผลลัพธ์ก็ยังคงรักษาโทโพโลยีไว้

ไชโยและขอให้โชคดี


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

1
ฉันทดสอบการสังเกตของคุณด้วย Saga 2.0.8 และผลลัพธ์ไม่ได้ถูกเก็บรักษาไว้ในโทโพโลยี!
Fabian Zeindl

2

ขณะนี้มีrmapshaperแพ็คเกจที่ยอดเยี่ยมโดย Andy Teucher ซึ่งมีฟังก์ชั่นการทำให้ง่ายขึ้นที่

จาก repo GitHub ของพวกเขาตัวอย่างการใช้งาน:

states_simp <- ms_simplify(states_sp)

ที่states_spเป็นspatialPolygons*วัตถุ

ดูแพคเกจ README สำหรับข้อมูลเพิ่มเติม: https://github.com/ateucher/rmapshaper


0

ที่ควรช่วย:

  • gSimplify(..., topologyPreserve=T)จากGEOSแพคเกจ

2
โชคไม่ดีที่โทโพโลยีรักษาตัวเลือกในgSimplifyไม่ได้รักษาโทโพโลยีมากกว่ารูปหลายเหลี่ยม ฉันคิดว่ามันเกี่ยวข้องกับทอพอโลยีของ single หรือ multipolygons มากขึ้น สำหรับ Shapefile ที่มีรูปหลายเหลี่ยมหลาย ๆ อันทอพอโลยีจะไม่ถูกสงวนไว้
yellowcap
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.