Tôi đã nhập một tập dữ liệu bản đồ thế giới từ www.GADM.org bằng cách sử dụng trình bao gói R. Tôi muốn cắt nó thành đa giác mà tôi tạo để giảm kích thước của bản đồ. Tôi có thể lấy dữ liệu và tôi có thể tạo ra đa giác không có vấn đề, nhưng khi tôi sử dụng lệnh 'gIntersection' tôi nhận được một thông báo lỗi tối nghĩa.Làm thế nào để clip WorldMap với đa giác trong R?
Bất kỳ đề xuất nào về cách nén tập dữ liệu Bản đồ thế giới của tôi?
library(raster)
library(rgeos)
## Download Map of the World ##
WorldMap <- getData('countries')
## Create the clipping polygon
clip.extent <- as(extent(-20, 40, 30, 72), "SpatialPolygons")
proj4string(clip.extent) <- CRS(proj4string(WorldMap))
## Clip the map
EuropeMap <- gIntersection(WorldMap, clip.extent, byid = TRUE)
Thông báo lỗi:
Error in RGEOSBinTopoFunc(spgeom1, spgeom2, byid, id, "rgeos_intersection") :
Geometry collections may not contain other geometry collections
In addition: Warning message:
In RGEOSBinTopoFunc(spgeom1, spgeom2, byid, id, "rgeos_intersection") :
spgeom1 and spgeom2 have different proj4 strings
Điều này thật tuyệt! Tôi vẫn không chắc là tôi hiểu tại sao lại làm việc. Tôi đang giao nhau một đa giác với một mạng lưới các đa giác (về cơ bản cắt lưới thành các ranh giới) - Nếu các ô đủ lớn, không cần thiết phải trừ, nhưng nếu các ô nhỏ, lỗi được mô tả xảy ra. Tại sao 'gIntersection (grid [gIntersects (lưới, poly, byid = TRUE),], poly, byid = TRUE)' làm việc khi 'gIntersection thuần (lưới, poly, byid = TRUE)' không? – MichaelChirico