为什么当我将栅格地图投影到新的CRS(R中的project Raster函数)时,它的值会发生变化? [英] Why the values of my raster map change when I project it to a new CRS (projectRaster function in R)?
本文介绍了为什么当我将栅格地图投影到新的CRS(R中的project Raster函数)时,它的值会发生变化?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我需要在LatLong中将地图投影到方位角等距投影。
map_proj<-projectRaster(map, crs="+proj=aeqd +lon_0=48+lat_0=18")
在我的原始地图中,我有这些值
class : RasterLayer
dimensions : 1713, 2185, 3742905 (nrow, ncol, ncell)
resolution : 0.008335028, 0.00833354 (x, y)
extent : 39.06984, 57.28187, -25.93814, -11.66279 (xmin, xmax, ymin, ymax)
coord. ref. : +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0
data source : /Users/Oritteropus/Desktop/Progetti/maps/mada_rast2
names : mada_rast2
values : 0, 255 (min, max)
unique(map)
[1] 0 1 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 24 25 26 27 28
[24] 29 30 31 32 33 34 35 36 37 38 39 40
在我的投影地图中,我现在有以下值
class : RasterLayer
dimensions : 1990, 2254, 4485460 (nrow, ncol, ncell)
resolution : 1000, 1000 (x, y)
extent : 4026994, 6280994, -3379165, -1389165 (xmin, xmax, ymin, ymax)
coord. ref. : +proj=aeqd +lon_0=0+lat_0=0 +ellps=WGS84
data source : in memory
names : mada_rast2
values : -0.1498806, 40 (min, max)
head(unique(map_proj))
[1] -1.498806e-01 -8.050509e-02 0.000000e+00 1.164434e-05 3.575309e-05
[6] 5.233506e-05
我需要保持相同的值。谁能给我解释一下发生了什么事,或者我哪里错了? 谢谢
推荐答案
这是因为重新投影栅格需要对单元格进行一定程度的扭曲,并且必然需要对值之间进行内插。如果你想保持相同的值,你必须改变插补的方法。改用最近邻居...
map_proj<-projectRaster(map, crs="+proj=aeqd +lon_0=48+lat_0=18" , method = "ngb" )
使用raster:::projectRaster
帮助页中的数据的示例:
r <- raster(xmn=-110, xmx=-90, ymn=40, ymx=60, ncols=40, nrows=40)
r <- setValues(r, 1:ncell(r))
newproj <- "+proj=lcc +lat_1=48 +lat_2=33 +lon_0=-100 +ellps=WGS84"
# Default reproject uses bilinear interpolation
r_bl <- projectRaster( r , crs = newproj )
r_nn <- projectRaster( r , crs = newproj , method = "ngb" )
range(values(r) , na.rm = T)
#[1] 1 1600
range(values(r_bl) , na.rm = T )
#[1] -7.671638 1612.968493
range(values(r_nn) , na.rm = T )
#[1] 1 1600
当然,您仍在将值投影到新的单元格,因此您可能会得到一些NA。简而言之,双线性插值法对于连续变量是有意义的,而最近邻插值法对于分类变量是有意义的。
这篇关于为什么当我将栅格地图投影到新的CRS(R中的project Raster函数)时,它的值会发生变化?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文