У меня есть много растров, для которых я хотел бы проверить, полностью ли они содержатся в пространственном многоугольнике, полностью без пространственного многоугольника или пересекаются с пространственным многоугольником (это может означать, что многоугольник полностью находится в растре или многоугольник и растровое перекрытие). Я делаю эту проверку, чтобы сэкономить время, когда это возможно.
Вот пример:
# create 3 example rasters
r <- raster()
r[] <- rnorm(n = ncell(r))
e1 <- extent(c(45,55,45,50))
r1 <- crop(r,e1)
e2 <- extent(c(20,25,25,30))
r2 <- crop(r,e2)
e3 <- extent(c(38,55,57,65))
r3 <- crop(r,e3)
#create SpatialPolygons
x <- c(40,60)
y <- c(40,60)
m <- expand.grid(x,y)
m <- m[c(1,2,4,3),]
p1 <- Polygon(m)
p1 <- Polygons(list(p1),1)
x <- c(10,15)
y <- c(10,15)
m <- expand.grid(x,y)
m <- m[c(1,2,4,3),]
p2 <- Polygon(m)
p2 <- Polygons(list(p2),2)
x <- c(30,45)
y <- c(70,80)
m <- expand.grid(x,y)
m <- m[c(1,2,4,3),]
p3 <- Polygon(m)
p3 <- Polygons(list(p3),3)
poly <- SpatialPolygons(list(p1,p2,p3))
построение этих:
Я буду читать каждый растр отдельно и проверять, находится ли он внутри, вне или пересекается с пространственными полигонами.
Как вы думаете, какой способ сделать это в R будет наиболее эффективным? У меня есть тысячи растров размером 4 Мб, которые я планирую замаскировать параллельно, и мне хотелось бы, чтобы эта проверка немного ускорила процесс.
Обратите внимание, есть еще этот вопрос: https://gis.stackexchange.com/questions/34535/detect-whether-there-is-a-spatial-polygon-in-a-spatial-extent
Однако я не думаю, что это дает то, что я ищу. Например, все растры находятся в пределах экстента пространственных многоугольников, но не все находятся внутри пространственных многоугольников.
Функции, подобные тем, что есть в rgeos (gIntersects, gContains), вероятно, были бы удобны. Я не уверен, являются ли они наиболее эффективными или как мне преобразовать растр (или его размер) в объект sp.
Благодарность!