簡體   English   中英

r 將光柵堆棧或磚轉換為 animation

[英]r convert raster stack or brick to an animation

我從http://luh.umd.edu/data.shtml下載了一些土地利用場景結果的 NetCDF 文件。 此位置的每個文件都有 11 種土地利用類型的值,年值從 2015 年到 2100 年。我想制作一個動畫 gif 或電影來顯示隨時間的變化。 這似乎應該很簡單,但我嘗試了各種路線,但都沒有奏效,所以我希望有一些真正有效的路線。 1. 一種方法涉及使用柵格 package 中的堆棧或磚塊函數創建土地利用變量之一的柵格堆棧或磚塊。 然后使用光柵動畫 function。 不幸的是,我收到以下錯誤消息“不支持 RasterLayer [堆棧、磚塊] 對象的動畫”。

  1. 另一種選擇是將每年的土地利用數據轉換為SpatialPixelDataFrame,然后轉換為data.frame,使用ggplot創建gif,然后將gif組合成動畫gif。 但這個過程似乎極其復雜。

包含我目前為此所做的努力的 R 腳本在這里

嘗試raster::animate() ,跨包有幾個不兼容的動畫功能,這似乎是沖突。

我通常使用 plot 光柵切片的循環制作動畫,並使用動畫 package 捕獲它,例如使用saveHTML()

對於 ggplot2,請參閱 gganimate package,但由於需要擴展數據,它不能很好地擴展。

查看您的代碼,我可以使下面的代碼工作。

基本上,我正在制作一個包含所有年份數據的大型 dataframe。

mydf <- purrr::map_dfr(
  as.list(ncin.brick), 
  ~setNames(as.data.frame(as(., "SpatialPixelsDataFrame")), c('value', 'x', 'y')), 
  .id = 'year'
)

gg <- ggplot(
  mydf, 
  aes(x = x, y = y, fill = value)
) +
  geom_sf(data = borders, fill = "transparent", color = "black", inherit.aes = FALSE) +
  geom_tile() +
  scale_fill_viridis_c() +
  ggthemes::theme_map()

gganim <- gg + transition_time(as.numeric(year)) #+ labs(title = "Year: {frame_time}")

gganim

下圖是結果(動畫很微妙)。

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM