Я пытаюсь создать карты плотности (растры) из точек, используя функцию smooth_map
из пакета tmaptools
. Я хотел бы создать один растр для каждого факторного уровня переменной (var
) в моем фрейме данных (df
). Все растры должны иметь одинаковую протяженность, заданную шейп-файлом (study_area
). Я хочу сложить их и затем построить их, используя levelplot
.
Однако все растры, возвращаемые функцией, имеют немного разные экстенты. Я не мог понять, как создавать карты плотности с одинаковыми экстентами. Это код:
library(tmaptools)
library(rgdal)
library(sf)
library(raster)
##reproducible example of dataframe
df<-setNames(data.frame(matrix(ncol = 3, nrow = 7)), c("longitude", "latitude", "var"))
df$longitude<-c(-53.30002, -50.47749, -55.85561, -57.88447, -55.83864, -58.84610, -57.49215)
df$latitude<-c(-13.037530, -13.023480, -13.416200, -13.659120, -12.758670, -13.114460, -14.622520)
df$var<-c("A", "A", "A", "A", "B", "B", "B")
## convert var to factor
df$var<-as.factor(df$var)
##read shapefile of Mato Grosso, Brazil
## shapefile can be downloaded from e.g. https://geo.nyu.edu/catalog/stanford-vw409fv3488
study_area<-readOGR("shape_MT.shp", layer="shape_MT") #will load the shapefile
#create empty stack
s <- stack()
#loop over factor levels
for (i in levels(df$var)) {
a<-subset(df, df$var==i)
my.sf.point <- st_as_sf(x = a, coords = c("longitude", "latitude"),crs = "+proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0")
density_map <- smooth_map(my.sf.point, cover = study_area)
r<-density_map$raster
print(extent(r))
s <- stack(s,r)
}
Я получаю следующее сообщение об ошибке:
Ошибка в CompareRaster (x): разная степень
Любая идеяна как это решить?