您可以使用Map$addLayer()可视化图像。如果在没有任何附加参数的情况下向地图添加图层,默认情况下rgee将前三个波段分别分配给红色、绿色和蓝色。默认拉伸基于带中数据的类型(例如,浮点数在 [0,1] 中拉伸,16 位数据被拉伸到可能值的完整范围),这可能适合也可能不适合。为了达到理想的可视化效果,您可以为Map$addLayer()提供可视化参数。具体来说,参数是:
Visualization parameters for Map$addLayer() | ||
Parameter | Description | Type |
bands | Comma-delimited list of three band names to be mapper to RGB | list |
min | Value(s) to map to 0 | number or list of three numbers, one for each band |
max | Value(s) to map to 255 | number or list of three numbers, one for each band |
gain | Value(s) by which to multiply each pixel value | number or list of three numbers, one for each band |
bias | Value(s) to add to each DN | number or list of three numbers, one for each band |
gamma | Gamma correction factor(s) | number or list of three numbers, one for each band |
palette | List of CSS-style color strings (single-band images only) | comma-separated list hex strings |
opacity | The opacity of the layer (0.0 is fully transparent and 1.0 is fully opaque) | number |
1. RGB 合成
下面说明了如何使用参数将 Landsat 8 图像设置为假彩色合成:
library(rgee) ee_Initialize() # 加载影像 landsat <- ee$Image('LANDSAT/LC08/C01/T1_TOA/LC08_044034_20140318') # 定义参数 vizParams <- list( bands = c('B5', 'B4', 'B3'), min = 0, max = 0.5, gamma = c(0.95, 1.1, 1) ) # 设置影像中心和加载到地图中 Map$setCenter(lon = -122.1899, lat = 37.5010, zoom = 10) # San Francisco Bay Map$addLayer(landsat, vizParams, 'false color composite')
在本例中,波段‘B5’
被分配给红色,‘B4’
被分配给绿色,‘B3’
被分配给蓝色。结果应该类似于图 1。
图 N°01:美国加利福尼亚州旧金山湾区的 Landsat 8 假彩色合成图。
2. 调色板
要以彩色显示图像的单个波段,请使用palette
由 CSS 样式颜色字符串列表表示的色带设置参数。(有关更多信息,请参阅此参考资料)。以下示例说明了如何使用从青色 ( ‘00FFFF’
) 到蓝色 ( ‘0000FF’
) 的颜色来渲染归一化差值水指数 (NDWI)图像:
# 加载影像 landsat <- ee$Image('LANDSAT/LC08/C01/T1_TOA/LC08_044034_20140318') # 创建归一化水体指数NDWI ndwi <- landsat$normalizedDifference(c('B3', 'B5')) # 定义视觉参数和加载影像 ndwiViz <- list( min = 0.5, max = 1, palette = c('00FFFF', '0000FF') ) Map$addLayer( eeObject = ndwi, visParams = ndwiViz, name = 'NDWI', shown = FALSE )
在此示例中,请注意min
和max
参数指示应应用调色板的像素值范围。中间值被线性拉伸。另请注意,如果您将shown
参数定义为FALSE
,这会导致图层在添加到地图时不可见。始终可以使用地图左上角的图层管理器再次打开它。结果应该类似于图 2。
图 N°02:美国旧金山湾区 Landsat 8 NDWI。与图 1 相同的区域。青色是低值,蓝色是高值。
3. 掩膜
您可以使用image$updateMask()根据蒙版图像中的像素不为零的位置设置单个像素的不透明度。遮罩中等于 0 的像素被排除在计算之外,并且不透明度设置为 0 以进行显示。以下示例使用 NDWI 阈值更新先前创建的 NDWI 图层上的掩码:
# Load an image. landsat <- ee$Image('LANDSAT/LC08/C01/T1_TOA/LC08_044034_20140318') # Create visualization layers. imageRGB <- landsat$visualize( list( bands = list("B5", "B4", "B3"), max = 0.5 ) ) ndwiRGB <- ndwiMasked$visualize( list( min = 0.5, max = 1, palette = c('00FFFF', '0000FF') ) )
5. 镶嵌
您可以使用遮罩和imageCollection$mosaic()来实现各种制图效果。该mosaic()
方法根据输入集合中的顺序渲染输出图像中的图层。下面的示例用于mosaic()
组合蒙版 NDWI 和假色合成并获得新的可视化:
# 镶嵌可视化图层并显示(或导出)。 mosaic <- ee$ImageCollection(list(imageRGB, ndwiRGB))$mosaic() Map$addLayer(eeObject = mosaic, list(), name = 'mosaic')
在此示例中,观察向ImageCollection
构造函数提供了两个可视化图像的列表。列表的顺序决定了图像在地图上呈现的顺序。结果应该类似于图 3。
图 N°04: Landsat 8 假彩色合成和 NDWI 的马赛克。美国旧金山湾区。
6. 与其他 R 包的集成
Map$addLayer()创建一个带有以下额外属性的传单对象:标记、名称、不透明度、显示、最小值、最大值、调色板和图例。这些额外的数据有助于用户自定义他们的交互式地图和/或将Map$addLayer与其他 R 包(例如{mapview}、 {mapedit}和{leaflet} )集成。
library(rgee) ee_Initialize() # 加载影像 landsat <- ee$Image('LANDSAT/LC08/C01/T1_TOA/LC08_044034_20140318') # 定义参数 vizParams <- list( bands = c('B5', 'B4', 'B3'), min = 0, max = 0.5, gamma = c(0.95, 1.1, 1) ) # 展示影像 Map$setCenter(lon = -122.1899, lat = 37.5010, zoom = 10) # San Francisco Bay m1 <- Map$addLayer(landsat, vizParams, 'false color composite') m1$rgee #> $tokens获取权限 #> [1] "https://earthengine.googleapis.com/v1alpha/projects/earthengine-legacy/maps/6f68ea5563f0787171eef294011e5b1a-54a29dea5a564831913fb1c8c1653628/tiles/{z}/{x}/{y}" #> #> $name #> [1] "false color composite" #> #> $opacity #> [1] 1 #> #> $shown #> [1] TRUE #> #> $min #> [1] NA #> #> $max #> [1] NA #> #> $palette #> $palette[[1]] #> [1] NA #> #> #> $legend #> [1] FALSE
{leaflet}:是一个用于传单的 R 包绑定(由 Rstudio 开发),一个用于移动友好型交互式地图的开源 JavaScript 库。
library(leaflet) library(rgee) ee_Initialize() # 加载影像 landsat <- ee$Image('LANDSAT/LC08/C01/T1_TOA/LC08_044034_20140318') # 定义视觉参数 vizParams <- list( bands = c('B5', 'B4', 'B3'), min = 0, max = 0.5, gamma = c(0.95, 1.1, 1) ) # 设置地图中心点和展示 Map$setCenter(lon = -122.1899, lat = 37.5010, zoom = 10) # San Francisco Bay m1 <- Map$addLayer(landsat, vizParams, 'false color composite') # 与leaflet结合 leaflet() %>% addTiles() %>% setView(-122.1899, 37.5010, 9) %>% addTiles( urlTemplate = m1$rgee$tokens, layerId = "leaflet_false_color", options = leaflet::tileOptions(opacity = 1) )
图 N°05: Map$addLayer 和 {leaflet} 集成
{mapview}:由 Tim Appelhans 开发的 R 包,它提供了非常快速和方便地创建 R 空间数据的交互式可视化的功能。它支持最流行的空间数据 R 包({sp}、{sf}、{stars} 和 {raster})。
library(mapview) library(rgee) ee_Initialize() # 加载影像 landsat <- ee$Image('LANDSAT/LC08/C01/T1_TOA/LC08_044034_20140318') # 设置参数 vizParams <- list( bands = c('B5', 'B4', 'B3'), min = 0, max = 0.5, gamma = c(0.95, 1.1, 1) ) # 显示图像 Map$setCenter(lon = -122.1899, lat = 37.5010, zoom = 10) # San Francisco Bay m1 <- Map$addLayer(landsat, vizParams, 'false color composite') # 与地图视图集成 stp <- st_sfc(st_point(c(-122.27234, 37.46941)), crs=4326) mapview(stp, m1)
图 N°06: Map$addLayer 和 {mapview} 集成。
{mapedit}:为传单交互式地图添加空间数据编辑功能(类似于代码编辑器几何工具)。
每加载一个地物就直接应用到这个函数就好了,所以比较简单
library(mapedit) library(rgee) ee_Initialize() # Load an image. landsat <- ee$Image('LANDSAT/LC08/C01/T1_TOA/LC08_044034_20140318') # Define the visualization parameters. vizParams <- list( bands = c('B5', 'B4', 'B3'), min = 0, max = 0.5, gamma = c(0.95, 1.1, 1) ) # Center the map and display the image. Map$setCenter(lon = -122.1899, lat = 37.5010, zoom = 10) # San Francisco Bay m1 <- Map$addLayer(landsat, vizParams, 'false color composite') # Integrate with mapedit my_geom <- editMap(m1)$drawn
7. 地图运营商
从 1.0.5 版本开始,rgee支持两种地图操作符:
library(mapedit) library(rgee) ee_Initialize() # Load an image. landsat <- ee$Image('LANDSAT/LC08/C01/T1_TOA/LC08_044034_20140318') ndwi <- landsat$normalizedDifference(c('B3', 'B5')) ndwiMasked <- ndwi$updateMask(ndwi$gte(0.4)) # Define the visualization parameters. vizParams <- list( bands = c('B5', 'B4', 'B3'), min = 0, max = 0.5, gamma = c(0.95, 1.1, 1) ) ndwiViz <- list( min = 0.5, max = 1, palette = c('00FFFF', '0000FF') ) # Center the map and display the image. Map$setCenter(lon = -122.1899, lat = 37.5010, zoom = 10) # San Francisco Bay m1 <- Map$addLayer(landsat, vizParams, 'false color composite') m2 <- Map$addLayer(ndwiMasked, ndwiViz, 'NDWI masked')
- m1
+
m2:叠加层。
m1 + m2
图 N°08:叠加地图
示例
- m1
|
m2:并排视图。
#中间这个竖条也十分直白,就告诉你分开就好 m1 | m2
图 N°08:并排示例