Google Earth Engine(GEE)——R 语言图像可视化(内含NDWI指数计算和掩膜镶嵌后的图像展示)
您可以使用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:并排示例
文章来源: blog.csdn.net,作者:此星光明2021年博客之星云计算Top3,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/qq_31988139/article/details/119968938
- 点赞
- 收藏
- 关注作者
评论(0)