在R中使用tmap显示蒙版RGB栅格的黑色背景

时间:2017-11-03 15:06:32

标签: r mask r-raster tmap

我尝试使用带有全彩色RGB蒙版Landsat图像的库(tmap)在R中创建地图。然而,NA显示为黑色。这就是我的所作所为。

使用库(sf)我计算了5个多边形的质心并将它们缓冲了5000米。在此之后,我使用库(栅格)通过缓冲的质心掩盖Landsat图像。代码看起来像这样,效果很好。

# Read in the data
polys <- st_read("nybb.shp")
rast <- brick("LC08_L1TP_013032_20171027_20171027_01_RT.tif")

# Transform polys, crop raster, calculate centroids
polys <- st_transform(polys, crs = crs(rast, asText = TRUE))
rast <- crop(rast, as(polys, "Spatial"))
cent <- st_centroid(polys) %>% st_buffer(., 5000) %>% as(., "Spatial")

# Mask the raster using buffered centroids
r <- mask(rast, cent)

我可以使用基础R和库(光栅)完成我想要的 - 但我更喜欢使用tmap。

# Code that works
plot(polys$geometry, col = "grey", border = "white")
plotRGB(r, bgalpha = 0, add = TRUE) 


# Code that does not work
# The NAs in the masked raster appear as black
# even when using the colorNA argument
tm_shape(polys) + tm_polygons() + 
  tm_shape(r, bbox = polys) + 
  tm_rgb(colorNA = "red")

是否知道如何使用tmap的tm_rgb()函数显示蒙版光栅而不将NA显示为黑色?

1 个答案:

答案 0 :(得分:0)

要使用tmap创建底图,可以使用read_osm function包中的tmaptools,如下所示。请注意,您必须首先将数据转换为地理CRS:epsg = 4326

library(tmaptools)
library(OpenStreetMap)

rast <-projectRaster(rast,crs="+init=epsg:4326",method = "ngb") #(you can use method=method="bilinear") 

polys <- spTransform(polys, CRS("+init=epsg:4326"))

background <- read_osm(bbox(rast))

tm_shape(background) + tm_raster() +
tm_shape(polys) + tm_polygons() + 
tm_shape(r, bbox = polys) + 
tm_rgb(colorNA = "red")