Это не отвечает на ваш вопрос, но, поскольку вы упоминаете отсечение по ограничительной рамке, этот пост появляется в строках поиска:
Из r-bloggers: вырезание по ограничивающей рамке
setwd("../")
library(rgdal)
zones <- readOGR("data", "london_sport")
сделать ограничивающую рамку:
b <- bbox(zones)
b[1, ] <- (b[1, ] - mean(b[1, ])) * 0.5 + mean(b[1, ])
b[2, ] <- (b[2, ] - mean(b[2, ])) * 0.5 + mean(b[2, ])
b <- bbox(t(b))
plot(zones, xlim = b[1, ], ylim = b[2, ])
Использование пользовательской функции:
library(raster)
library(rgeos)
## rgeos version: 0.3-5, (SVN revision 447)
## GEOS runtime version: 3.4.2-CAPI-1.8.2 r3921
## Polygon checking: TRUE
gClip <- function(shp, bb){
if(class(bb) == "matrix") b_poly <- as(extent(as.vector(t(bb))), "SpatialPolygons")
else b_poly <- as(extent(bb), "SpatialPolygons")
gIntersection(shp, b_poly, byid = T)
}
zones_clipped <- gClip(zones, b)
## Warning: spgeom1 and spgeom2 have different proj4 strings
plot(zones_clipped)
Обратите внимание, что из-за операторов if в теле gClip он может обрабатывать практически любые пространственные данные и при этом работать.
westminster <- zones[grep("West", zones$name),]
zones_clipped_w <- gClip(zones, westminster)
## Warning: spgeom1 and spgeom2 have different proj4 strings
plot(zones_clipped_w); plot(westminster, col = "red", add = T)
person
Mox
schedule
19.01.2020
rgeos::gIntersection()
как показано в (например) принятом ответе на этот вопрос. В качестве альтернативы,raster::intersect()
также должен помочь. - person Josh O'Brien   schedule 26.08.2015rgeos::gIntersection()
, я теряю все строки, хранящиеся в таблице атрибутов. Есть ли способ, которым я могу сохранить его в соответствии с тем, что было пересечено? - person Tiago   schedule 27.08.2015raster::intersect()
, который был специально разработан для сохранения связанных атрибутов data.frame. (И единственная причина, по которой я говорю, возможно, заключается в том, что иногда это работает не так хорошо, какrgeos::gIntersection()
, как, например, с данными в ответе, на который я ссылался выше. Но обычно это работает довольно хорошо.) Надеюсь, это поможет! - person Josh O'Brien   schedule 27.08.2015