You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用project()投影含RGB图层的SpatRaster后数值丢失问题求助

RGB图层SpatRaster投影后数值丢失问题

在R语言中,将包含RGB图层的.tif文件转换为SpatRaster后,执行project()函数进行坐标投影会出现数值丢失的情况,绘图时仅返回NA值。已查阅过相关讨论案例,但那些案例中执行project()后数值仍保留(仅形式有变化)。

尝试过project()的多种参数设置,包括单独投影每个图层,但均未解决问题。怀疑可能需要转换数据类,但在文档及GitHub中未找到明确说明或相关bug报告。

可复现示例代码

library(basemaps)
library(terra)
library(sf)

# 创建用于定义SpatRaster范围的sf对象
df  <- data.frame(lon = c(170, 172),
                  lat = c(-43, -45))

sf_poly <- df %>% 
  st_as_sf(coords = c("lon", "lat"), 
           crs = 4326) %>% 
  st_bbox() %>% 
  st_as_sfc() %>%
  st_as_sf() %>%
  st_transform(3857)

r <- basemap_raster(ext = st_bbox(sf_poly)) %>%
  as("SpatRaster")

r
# class       : SpatRaster
# dimensions  : 1012, 728, 3  (nrow, ncol, nlyr)
# resolution  : 305.7481, 305.7481  (x, y)
# extent      : 18924279, 19146864, -5621485, -5312068  (xmin, xmax, ymin, ymax)
# coord. ref. : WGS 84 / Pseudo-Mercator
# source      : basemap_20240418094850.270686.tif
# colors RGB  : 1, 2, 3
# names       : red, green, blue
# min values  : 167,   161,  162
# max values  : 255,   255,  255

尝试过的解决方法

方法1:投影完整SpatRaster

r4326 <- project(r, "EPSG:4326")
r4326 <- project(r, "+proj=longlat +datum=WGS84 +no_defs +type=crs")
r4326 <- project(r, crs("EPSG:4326"))
r4326 <- project(r, "EPSG:4326", method = "bilinear")
r4326 <- project(r, "EPSG:4326", method = "near")
r4326 <- project(r, "EPSG:4326", align = TRUE)
r4326 <- project(r, "EPSG:4326", mask = TRUE)

r4326
# class       : SpatRaster
# dimensions  : 881, 882, 3  (nrow, ncol, nlyr)
# resolution  : 0.002268062, 0.002268062  (x, y)
# extent      : 169.9997, 172.0001, -44.99879, -43.00063  (xmin, xmax, ymin, ymax)
# coord. ref. : lon/lat WGS 84 (EPSG:4326)

方法2:单独投影SpatRaster图层

r_list <- split(r, 1:nlyr(r)) %>% `names<-`(names(r))

r_list[[1]]
# class       : SpatRaster 
# dimensions  : 1012, 728, 1  (nrow, ncol, nlyr)
# resolution  : 305.7481, 305.7481  (x, y)
# extent      : 18924279, 19146864, -5621485, -5312068  (xmin, xmax, ymin, ymax)
# coord. ref. : WGS 84 / Pseudo-Mercator 
# source      : basemap_20240418094850.270686.tif 
# name        : red 
# min value   : 167 
# max value   : 255

r1 <- r_list[[1]] %>% project("EPSG:4326")

r1
# class       : SpatRaster 
# dimensions  : 881, 882, 1  (nrow, ncol, nlyr)
# resolution  : 0.002268062, 0.002268062  (x, y)
# extent      : 169.9997, 172.0001, -44.99879, -43.00063  (xmin, xmax, ymin, ymax)
# coord. ref. : lon/lat WGS 84 (EPSG:4326)

恳请各位提供解决该问题的方案或思路。


内容的提问来源于stack exchange,提问作者L Tyrone

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 18:45:07