【发布时间】:2021-08-03 02:02:47
【问题描述】:
问题:绘图为空,使用 shapefile 裁剪栅格时没有结果。
我正在使用带有原始 EPSG4326 投影的 shapefile 和带有原始正弦投影的 MODIS 产品。正如您在脚本中看到的那样,我将两者都转换为相同的投影(DesiredCRS),但是在制作栅格剪辑时,我没有得到任何结果。
library(terra)
library(sf)
library(sp)
library(raster)
# Inputs
HDFfile <- "ModisProductsOriginal/MCD18A1.A2001001.h15v05.061.2020097222704.hdf"
Shapefile <- "Shapefile/Outline_5/Portugal_Outline_5_CAOP2019.shp"
DesiredCRS <- "+proj=longlat +datum=WGS84"
# Feature
Shp <- st_read(Shapefile)
Terceira <- Shp[Shp$DI == '43',1]
Terceira <- st_transform(Terceira, DesiredCRS)
plot(Terceira, axes=TRUE)
特塞拉的情节: Plot Output
# Modis data
SDSs <- sds(HDFfile)
SDS8 <- SDSs[8]
SDS8_template <- rast(ncol=1200, nrow=1200, xmin=-34, xmax=-24, ymin=36, ymax=41, crs=DesiredCRS)
SDS8_reprojected <- project(SDS8, SDS8_template) # Reproject changes pixels?
SDS8_raster <- raster(SDS8_reprojected)
plot(SDS8_raster)
SDS8_raster 的绘图:Plot Output
# Clip
Clip.step1 <- crop(SDS8_raster, extent(Terceira))
Clip <- mask(Clip.step1, Terceira)
plot(Clip)
Clip.step1 的情节:Plot Output
剪辑的情节:Plot Output
所有图像都显示具有相同投影的轴。我不明白我做错了什么......我是否正确定义了 CRS 和范围?
更新:
原始 shapefile 和原始 HDF 产品的全景视图: Panoply Output
Hijmans 将两个数据集绘制在一起:Plot Output
【问题讨论】:
-
您可以将
library(terra)和library(sf)放在顶部。 SDS8 的维度是什么,或者我们应该认为它们与 SDS8_template 相同?对 ?terra::project 模板的东西有点摸不着头脑.. -
Terceira 的 x 轴是 +,SDS8 是 -,尽管数字通常相同。
-
感谢您的回复,已添加库。 dim(SDS8) 是 1200, 1200, 1。SDS8 是 SpatRaster,我使用 SDS8_template 和 SDS8_reprojected 来更好地控制栅格创建,但欢迎使用其他方法。
-
是的,Terceira的x轴是正的,但是你有W(西),不应该被R认为是负的吗?
-
是的,素数以西为负数。好吧,我猜表示形式并不重要,每个库都有一个绘图方法,使用哪种方法取决于所绘制对象的签名。 Clip.step1 的情节是什么样的?
标签: r crop raster mask shapefile