Как нарисовать карту для указанной c страны на графике из целого растрового мира и этой формы c страны шейп-файла? - PullRequest
0 голосов
/ 21 апреля 2020

У меня есть растровые данные для всего мира (filename.bil) и шейп-файл (filename.shp) для США. Как нарисовать карту для США, используя растровые данные (filename.bil) на графике R?

shape <- shapefile(file.path(gadmdir,"gadm36_USA_1.shp”))
b <- brick(file.path(gaezdir, "plate47.bil"))
r <- raster(shape, res=0.0833333 )
values(r) <- 1:ncell(r)
cropextent <- mask(r, shape)

plot(cropextent)

Ответы [ 2 ]

2 голосов
/ 22 апреля 2020

Вы можете использовать crop, затем mask

Пример данных

library(raster)
r <- raster()
values(r) <- 1:ncell(r)
p <- getData("GADM", country="Mexico", level=1)

Решение

x <- crop(r, p)
y <- mask(x, p)

Посмотрите

#original 
plot(r)
lines(p)

# processed
plot(y)
lines(p)
1 голос
/ 21 апреля 2020

Вот пример, который создает растровые данные и данные формы и извлекает значения растра из экстента формы. Это модификация текста справки для функции raster::crop.

library(raster)
library(sp)
r <- raster(nrow=450, ncol=900)
values(r) <- 1:ncell(r)

# crop Raster* with Spatial* object
b <- as(extent(0, 10, 40, 50), 'SpatialPolygons')
crs(b) <- crs(r)
rb <- crop(r, b)

plot(r)
plot(b, add=T)

enter image description here

plot(rb)

enter image description here

...