Сохранение растра — НЕ ОБНОВЛЕНО ДЛЯ PROJ >= 6

#r #raster #r-raster

Вопрос:

У меня возникла проблема с сохранением растра, так как я получаю предупреждающее сообщение In .gd_SetProject(object, ...) : NOT UPDATED FOR PROJ >= 6

Я искал в Интернете и обновил все соответствующие пакеты из исходного кода и думаю, что это проблема с crs, однако я довольно новичок в R и не могу найти решение.

Вот мой код:

 # Create a template raster with cells equal in size to DEM
res(DEM)
aggregate <- raster::aggregate
r <- aggregate(DEM, 6)
res(r)

r <- SA %>%
st_transform(crs = 4326)%>%
rasterize(r, field = 1) %>%
# remove any empty cells
trim()

# Save raster:
r <- writeRaster(r, filename = "prediction-surface_SA.tif", overwrite = TRUE)
Warning message:
In .gd_SetProject(object, ...) : NOT UPDATED FOR PROJ >= 6

> DEM
class      : RasterLayer 
dimensions : 324, 435, 140940  (nrow, ncol, ncell)
resolution : 0.0008333333, 0.0008333333  (x, y)
extent     : 47.66083, 48.02333, -19.80917, -19.53917  (xmin, xmax, ymin, ymax)
crs        : NA 
source     : memory
names      : layer 
values     : 548, 1780  (min, max)

SA<-structure(list(FID = 0, geometry = structure(list(structure(list(
    structure(c(47.660604941588, 47.660604941588, 48.0232823584119, 
    48.0232823584119, 47.660604941588, -19.8088030171198, -19.5393336630522, 
    -19.5393336630522, -19.8088030171198, -19.8088030171198), .Dim = c(5L, 
    2L))), class = c("XY", "POLYGON", "sfg"))), n_empty = 0L, crs = structure(list(
    input = "WGS 84", wkt = "GEOGCRS["WGS 84",n    DATUM["World Geodetic System 1984",n        ELLIPSOID["WGS 84",6378137,298.257223563,n            LENGTHUNIT["metre",1]]],n    PRIMEM["Greenwich",0,n        ANGLEUNIT["degree",0.0174532925199433]],n    CS[ellipsoidal,2],n        AXIS["latitude",north,n            ORDER[1],n            ANGLEUNIT["degree",0.0174532925199433]],n        AXIS["longitude",east,n            ORDER[2],n            ANGLEUNIT["degree",0.0174532925199433]],n    ID["EPSG",4326]]"), class = "crs"), class = c("sfc_POLYGON", 
"sfc"), precision = 0, bbox = structure(c(xmin = 47.660604941588, 
ymin = -19.8088030171198, xmax = 48.0232823584119, ymax = -19.5393336630522
), class = "bbox"))), row.names = c(NA, -1L), class = c("sf", 
"data.frame"), sf_column = "geometry", agr = structure(c(FID = NA_integer_), class = "factor", .Label = c("constant", 
"aggregate", "identity")))

r<-new("RasterLayer", file = new(".RasterFile", name = "C:\Users\e77-smith\OneDrive - UWE Bristol (Staff)\Occupancy Models\Madagascar\prediction-surface_SA.tif", 
    datanotation = "FLT4S", byteorder = "little", nodatavalue = -Inf, 
    NAchanged = FALSE, nbands = 1L, bandorder = "BIL", offset = 0L, 
    toptobottom = TRUE, blockrows = 28L, blockcols = 72L, driver = "gdal", 
    open = FALSE), data = new(".SingleLayerData", values = logical(0), 
    offset = 0, gain = 1, inmemory = FALSE, fromdisk = TRUE, 
    isfactor = FALSE, attributes = list(), haveminmax = TRUE, 
    min = 1, max = 1, band = 1L, unit = "", names = "prediction.surface_SA"), 
    legend = new(".RasterLegend", type = character(0), values = logical(0), 
        color = logical(0), names = logical(0), colortable = logical(0)), 
    title = character(0), extent = new("Extent", xmin = 47.660833333, 
        xmax = 48.020833333, ymin = -19.809166667, ymax = -19.539166667), 
    rotated = FALSE, rotation = new(".Rotation", geotrans = numeric(0), 
        transfun = function () 
        NULL), ncols = 72L, nrows = 54L, crs = new("CRS", projargs = NA_character_), 
    history = list(), z = list())
 

Комментарии:

1. Извините, я отредактировал код, чтобы отразить это. Спасибо.

Ответ №1:

Я думаю, что вы получаете это предупреждение, потому что система координат для DEM (и, следовательно r ,) не задана.

 library(raster)
r <- raster(res=30)
crs(r) <- NA
values(r) <- 1:ncell(r)
writeRaster(r, "tst.tif", overwrite=T)
#Warning message:
#In .gd_SetProject(object, ...) : NOT UPDATED FOR PROJ >= 6
 

Вы можете избежать предупреждения, установив crs

 crs(r) <- " proj=longlat"
writeRaster(r, "tst.tif", overwrite=T)
 

Комментарии:

1. Да, ты был прав, спасибо, Роберт, глупо с моей стороны не заметить этого.