Как сохранить после наложения фрейма данных пространственной точки на растр - PullRequest
0 голосов
/ 13 мая 2018

Я пытался наложить SpatialPointsDataFrame (желтые птицы) на данные raster (карта). Это было успешно со следующими кодами R:

map1 = plot(map)

overlay_map = plot(yellowbirds,add=TRUE,col="blue")

Однако, когда я хочу регенерировать карту, набрав overlay_map, получается вывод Null вместо предоставления мне карты.

Как правильно сохранить вышеприведенное в качестве переменной, чтобы я мог сгенерировать карту, не вводя код снова?

Ответы [ 2 ]

0 голосов
/ 14 мая 2018

recordPlot - правильный путь, только он сохраняет текущий график (см. ?recordPlot) в переменной.Я создал этот воспроизводимый пример :

library(raster)
map <- raster(system.file("external/test.grd", package="raster"))
yellowbirds <- SpatialPoints(
  coords = structure(c(179025.023681718, 179606.015156299, 179878.354910009, 
                       180441.19040101, 180913.245974108, 330055.067887591, 330508.967477108, 
                       331398.610672561, 331743.574360594, 332342.721818756), 
                     .Dim = c(5L, 2L), .Dimnames = list(NULL, c("x", "y"))))

plot(map)
map1 <- recordPlot()
plot(yellowbirds, add = TRUE)
overlay_map <- recordPlot()

enter image description here

Теперь мы убиваем текущие устройства и воспроизводим два сюжета:

dev.off()
map1
dev.off()
overlay_map

И map, и overlay_map должны быть воссозданы на пустом устройстве.Даже если вы rm(map1), overlay_map будете строить правильно.

ПРИМЕЧАНИЕ: Не звоните plot(overlay_map), так как это приводит к следующей ошибке

Error in xy.coords(x, y, xlabel, ylabel, log) : 'x' is a list, but does not have components 'x' and 'y'

0 голосов
/ 13 мая 2018

Трудно помочь вам без какого-либо воспроизводимого примера.

Однако, если вы хотите сохранить только график, вы можете сделать что-то вроде:

map1 <- plot(map)

overlay_map <- recordPlot()  #To save the next plot into an object

plot(yellowbirds,add=TRUE,col="blue")

Затем просто позвонитеобъект снова:

overlay_map
...