ฉันต้องการทำคลิป GIS จริงใน R ของรูปหลายเหลี่ยมโดยใช้ชุดรูปหลายเหลี่ยมแบบเขตแดนเดียว แต่ฉันไม่พบฟังก์ชัน R เพื่อทำอย่างถูกต้อง มันควรจะทำงานเหมือนกับclip
ฟังก์ชันใน ArcMap ของ ESRI ฉันลองใช้over
วิธีการในsp
แพ็คเกจ แต่ดูเหมือนว่าจะใช้งานไม่ได้กับ polys มากกว่า polys
หนึ่งข้อเสนอแนะคือการใช้gIntersection
ในrgeos
แพคเกจเป็นคลิปโดยใช้รหัสต่อไปนี้:
#------------------------------------
library(rgeos)
library(maptools)
#Read layers as SpatialPolygonsDataFrame (both the same Albers projection)
Soils_poly = readShapePoly("Soils_polygons") #Note - Has 400 polygons
clipper_poly = readShapePoly("clipper_polygon") #Note - Has 1 polygon
#Try gintersection as clip
Clipped_polys = gIntersection(Clipper_Tile_poly, Soils_poly)
#-----------------------------------
การดำเนินการนี้ใช้เวลา 5 นาที (ช้าเกินไป) และข้อผิดพลาด:
ข้อผิดพลาดใน RGEOSBinTopoFunc (spgeom1, spgeom2, byid, id, drop_not_poly, "rgeos_intersection"): TopologyException: ไม่พบ dirEdge ขาออกที่ -721459.77681285271 2009506.5980877089
ฉันยังลองรหัสนี้เพื่อตรวจสอบการทับซ้อน:
gIntersects(Clipper_Tile_poly, Soils_poly)
และผลลัพธ์ก็คือ TRUE clip
ฟังก์ชั่นใน ESRI ArcMap ทำงานได้ดีสำหรับข้อมูลนี้
มีใครรู้เกี่ยวกับฟังก์ชั่น R ในการทำคลิปบนรูปหลายเหลี่ยมเชิงพื้นที่โดยใช้รูปหลายเหลี่ยมเชิงพื้นที่ได้หรือไม่