如何解决可视化特定国家/地区的 MODIS 植被图层使用 R 包 MODISttsp
我正在尝试下载和可视化肯尼亚(以及其他国家/地区)的 NDVI 数据。
为此,我使用 osmdata
检索了肯尼亚的边界框,并在从 MOdistsp
下载 NDVI 数据时使用了它
library(osmdata)
library(MOdistsp)
kenya_bb <- osmdata::getbb("Kenya")
MOdistsp(gui = FALSE,out_folder = "Data",out_folder_mod = "Data",selprod = "vegetation_Indexes_16Days_1Km (M*D13A2)",bBox = kenya_bb,bandsel = "NDVI",user = "mstp_test",password = "MSTP_test_01",start_date = "2020.06.01",end_date = "2020.06.15",verbose = FALSE)
然后我简单地将下载的数据可视化,但它似乎没有裁剪出肯尼亚
library(raster)
library(here)
library(ggplot2)
NDVI_raster <- raster(here::here("Data/VI_16Days_1Km_v6/NDVI/MOD13A2_NDVI_2020_161.tif"))
NDVI_df <- as.data.frame(NDVI_raster,xy = TRUE,na.rm = TRUE)
rownames(NDVI_df) <- c()
ggplot(data = NDVI_df,aes(x=x,y=y)) +
geom_raster(aes(fill = MOD13A2_NDVI_2020_161))
任何关于如何裁剪单个国家的想法都表示赞赏
解决方法
这种行为的原因是参数 spatmeth
的默认值是 "tiles"
,所以用参数 start_x
、end_x
、start_y
和end_y
(如果没有明确指定,则使用它们的默认值)。
来自函数文档:
bbox numeric(4) out_proj 坐标系中的输出边界框(xmin、ymin、xmax、ymax)。 如果 spatmeth == "tiles" 则忽略,默认值:NULL
spatmeth 字符 ["tiles" | "bbox" | "file"],表示处理范围是如何检索的。如果是“tiles”,则使用指定的tiles (start_x....)。如果是“file”,则从 spafile 中指定的空间文件中检索范围。如果是“bbox”,则使用指定的边界框,默认:“tiles”
要使用 kenya_bb
范围,您必须:
- 添加
spatmeth = "tiles"
; - 将
bbox = kenya_bb
更正为bbox = as.vector(kenya_bb)
此外,有一个影响此案例的错误,最近已修复。 您还应该从 GitHub 重新安装软件包:
remotes::install_github("ropensci/MODIStsp")
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。