我试图使用R中的shapefile来掩蔽光栅,特别是使用terra
包。然而,我遇到了一个问题,掩码后的输出都是NaN
值。我按照文档进行了操作,并确保光栅和shapefile的坐标参考系统(CRS)匹配,但问题仍然存在。
通过观察这两个图,我相信问题的原因是光栅的延伸不正确。纬度应该从-180开始到180。我使用的光栅和shapefile可以在下面的link中获得。
# ---- NOAA global temperature data ----
# Load the terra package
if (!require(terra)) install.packages('terra', repos='https://rspatial.r-universe.dev')
# Load NOAA global temperature data
tmax_2018 <- rast("data/temperature/tmax.2018.nc")
tmax_2018_Jan1 <- tmax_2018[[1]]
> tmax_2018_Jan1
class : SpatRaster
dimensions : 360, 720, 1 (nrow, ncol, nlyr)
resolution : 0.5, 0.5 (x, y)
extent : 0, 360, -90, 90 (xmin, xmax, ymin, ymax)
coord. ref. : lon/lat WGS 84
source : tmax.2018.nc
varname : tmax (Daily Maximum Temperature)
name : tmax_1
unit : degC
time : 2018-01-01 UTC
# ---- Ecuador shapefile ----
# Load sf package
if (!require("sf")) install.packages("sf")
# Load Ecuador shapefiles
ecuador_shp <- st_read('data/ecu_shapefiles/ECU_adm1.shp')
ecuador_shp <- st_simplify(ecuador_shp, preserveTopology = TRUE, dTolerance = 100)
# Change the CRS to match the SpatRaster's CRS
ecuador_shp <- st_transform(ecuador_shp, crs(tmax_2018_Jan1))
# Transforming sf class to SpatVector class from terra
ecuador_shp <- vect(ecuador_shp)
> ecuador_shp
class : SpatVector
geometry : polygons
dimensions : 24, 9 (geometries, attributes)
extent : -92.00854, -75.20007, -5.017001, 1.681093 (xmin, xmax, ymin, ymax)
coord. ref. : lon/lat WGS 84
names : ID_0 ISO NAME_0 ID_1 NAME_1 TYPE_1 ENGTYPE_1 NL_NAME_1 VARNAME_1
type : <num> <chr> <chr> <num> <chr> <chr> <chr> <chr> <chr>
values : 68 ECU Ecuador 1 Azuay Provincia Province NA NA
68 ECU Ecuador 2 Bolivar Provincia Province NA NA
68 ECU Ecuador 3 Cañar Provincia Province NA NA
# ---- Masking ----
tmax_2018_Jan1_ecu <- terra::mask(tmax_2018_Jan1, ecuador_shp)
plot(tmax_2018_Jan1) # Shows an empty plot.
2条答案
按热度按时间pqwbnv8z1#
以下是(第一个)玛格丽特的回答的简化和浓缩版本。
如果不想旋转栅格数据,则可以移动矢量数据。
然后你可以改变结果。如果这是一个问题,这可能会更有效。
dy2hfwbg2#
先试着旋转一下。
将经度坐标为0到360的SpatRaster旋转到-180到180度之间的标准坐标(反之亦然)。经度在0到360之间经常用于全球气候模型。
你可能也想按shp裁剪。
创建于2023-06-14带有reprex v2.0.2