重新投影具有大分辨率的栅格(WGS84到BNG)

时间:2015-06-22 15:01:40

标签: r coordinates raster proj

我做了一个简单的操作,将一个光栅从WGS84重新投射到英国国家电网,但我想知道重投影后的一些结果。由此产生的栅格的总和是完全不同的;这是由于分辨率和'projectRaster'中的双线性插值的工作原理吗?

我开始使用csv,其全局数据覆盖纬度和经度范围-180到180度(仅限整数值),并带有一些z值。这是子集,制作投影WGS84的栅格并转换为BNG(下面的子集):

x <- rep(c(-10:3), times = 10)
n <- 14
y <- rep(48:57, each=n)
z <- rnorm(n=140, mean=20, sd=5)
ind <- which(z %in% sample(z, 45))
z[ind]<-NA
df <- data.frame("x"=x,"y"=y,"value"=z)

bng <- '+proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717 +x_0=400000 +y_0=-100000 +ellps=airy +datum=OSGB36 +units=m +no_defs'
wgs84 <- '+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs'

coordinates(df) = ~x + y
ras = rasterFromXYZ(df, crs=wgs84)
cellStats(ras,sum)
plot(ras)

ras_bng <- projectRaster(ras,crs=bng)
plot(ras_bng)
cellStats(ras_bng,sum)
总和从1919年到2625年(在我的情况下)是一个相当大的一块。

纯粹来自重投影,在'边缘'周围创造了如此多的额外细胞?如果我重新投射到分辨率小得多的光栅(5公里),这会大大减少不同的总和吗?

谢谢,S

> ras
class       : RasterLayer 
dimensions  : 10, 14, 140  (nrow, ncol, ncell)
resolution  : 1, 1  (x, y)
extent      : -10.5, 3.5, 47.5, 57.5  (xmin, xmax, ymin, ymax)
coord. ref. : +proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs +towgs84=0,0,0 
data source : in memory
names       : layer 
values      : 3.243918, 32.21532  (min, max)

> ras_bng
class       : RasterLayer 
dimensions  : 12, 19, 228  (nrow, ncol, ncell)
resolution  : 67900, 111000  (x, y)
extent      : -375677.8, 914422.2, -343553.2, 988446.8  (xmin, xmax, ymin, ymax)
coord. ref. : +proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717 +x_0=400000 +y_0=-100000 +ellps=airy +datum=OSGB36 +units=m +no_defs +towgs84=446.448,-125.157,542.060,0.1502,0.2470,0.8421,-20.4894 
data source : in memory
names       : layer 
values      : 8.174968, 28.31331  (min, max)

1 个答案:

答案 0 :(得分:1)

这是因为&#39; ras&#39;中的NA值。

当您取出z[ind]<-NA时差异很小。这是因为projectRaster隐式使用&#34; na.rm = TRUE&#34 ;;也许需要一个论据来改变它。这不像在其他情况下那么简单,因为例如,仅从内插的单元中的一个可以是NA,在这种情况下应该可以计算它。

在实践中,很少发现这么多NA值,通常它们仅限于(陆地)边缘。

顺便说一句,WGS84是一个基准,它不是投影。您正在使用的投影将是经度/纬度&#39; (也称为其他名称),除了这也不是投影,因为投影的整个点是从这样的角坐标到平面坐标。因此,您正在将一个坐标参照系(&#39; long / lat,WGS84&#39;)转换为另一个(BNG)。