Google Earth Engine(GEE)——R 语言图像可视化(内含NDWI指数计算和掩膜镶嵌后的图像展示)

举报
此星光明 发表于 2022/04/16 03:19:37 2022/04/16
【摘要】 改编自Google Earth Engine 文档。 您可以使用Map$addLayer()可视化图像。如果在没有任何附加参数的情况下向地图添加图层,默认情况下rgee将前三个波段分别分配给红色、绿色和蓝色。默认拉伸基于带中数据的类型(例如,浮点数在 [0,1] 中拉伸,16 位数据被拉伸到可能值的完整范围),这可能适合也可能不适合。...

改编自Google Earth Engine 文档

您可以使用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 图像设置为假彩色合成:


  
  1. library(rgee)
  2. ee_Initialize()
  3. # 加载影像
  4. landsat <- ee$Image('LANDSAT/LC08/C01/T1_TOA/LC08_044034_20140318')
  5. # 定义参数
  6. vizParams <- list(
  7. bands = c('B5', 'B4', 'B3'),
  8. min = 0,
  9. max = 0.5,
  10. gamma = c(0.95, 1.1, 1)
  11. )
  12. # 设置影像中心和加载到地图中
  13. Map$setCenter(lon = -122.1899, lat = 37.5010, zoom = 10) # San Francisco Bay
  14. Map$addLayer(landsat, vizParams, 'false color composite')

在本例中,波段‘B5’被分配给红色,‘B4’被分配给绿色,‘B3’被分配给蓝色。结果应该类似于图 1


图 N°01:美国加利福尼亚州旧金山湾区的 Landsat 8 假彩色合成

2. 调色板

要以彩色显示图像的单个波段,请使用palette由 CSS 样式颜色字符串列表表示的色带设置参数。(有关更多信息,请参阅此参考资料)。以下示例说明了如何使用从青色 ( ‘00FFFF’) 到蓝色 ( ‘0000FF’) 的颜色来渲染归一化差值水指数 (NDWI)图像:


  
  1. # 加载影像
  2. landsat <- ee$Image('LANDSAT/LC08/C01/T1_TOA/LC08_044034_20140318')
  3. # 创建归一化水体指数NDWI
  4. ndwi <- landsat$normalizedDifference(c('B3', 'B5'))
  5. # 定义视觉参数和加载影像
  6. ndwiViz <- list(
  7. min = 0.5,
  8. max = 1,
  9. palette = c('00FFFF', '0000FF')
  10. )
  11. Map$addLayer(
  12. eeObject = ndwi,
  13. visParams = ndwiViz,
  14. name = 'NDWI',
  15. shown = FALSE
  16. )

在此示例中,请注意minmax参数指示应应用调色板的像素值范围。中间值被线性拉伸。另请注意,如果您将shown参数定义为FALSE,这会导致图层在添加到地图时不可见。始终可以使用地图左上角的图层管理器再次打开它。结果应该类似于图 2


图 N°02:美国旧金山湾区 Landsat 8 NDWI。与图 1 相同的区域。青色是低值,蓝色是高值。

3. 掩膜

您可以使用image$updateMask()根据蒙版图像中的像素不为零的位置设置单个像素的不透明度。遮罩中等于 0 的像素被排除在计算之外,并且不透明度设置为 0 以进行显示。以下示例使用 NDWI 阈值更新先前创建的 NDWI 图层上的掩码:


  
  1. # Load an image.
  2. landsat <- ee$Image('LANDSAT/LC08/C01/T1_TOA/LC08_044034_20140318')
  3. # Create visualization layers.
  4. imageRGB <- landsat$visualize(
  5. list(
  6. bands = list("B5", "B4", "B3"),
  7. max = 0.5
  8. )
  9. )
  10. ndwiRGB <- ndwiMasked$visualize(
  11. list(
  12. min = 0.5,
  13. max = 1,
  14. palette = c('00FFFF', '0000FF')
  15. )
  16. )

5. 镶嵌

您可以使用遮罩和imageCollection$mosaic()来实现各种制图效果。该mosaic()方法根据输入集合中的顺序渲染输出图像中的图层。下面的示例用于mosaic()组合蒙版 NDWI 和假色合成并获得新的可视化:


  
  1. # 镶嵌可视化图层并显示(或导出)。
  2. mosaic <- ee$ImageCollection(list(imageRGB, ndwiRGB))$mosaic()
  3. Map$addLayer(eeObject = mosaic, list(), name = 'mosaic')

在此示例中,观察向ImageCollection构造函数提供了两个可视化图像的列表。列表的顺序决定了图像在地图上呈现的顺序。结果应该类似于图 3


图 N°04: Landsat 8 假彩色合成和 NDWI 的马赛克。美国旧金山湾区。

6. 与其他 R 包的集成

Map$addLayer()创建一个带有以下额外属性的传单对象:标记、名称、不透明度、显示、最小值、最大值、调色板和图例。这些额外的数据有助于用户自定义他们的交互式地图和/或将Map$addLayer与其他 R 包(例如{mapview} {mapedit}{leaflet} )集成


   
  1. library(rgee)
  2. ee_Initialize()
  3. # 加载影像
  4. landsat <- ee$Image('LANDSAT/LC08/C01/T1_TOA/LC08_044034_20140318')
  5. # 定义参数
  6. vizParams <- list(
  7. bands = c('B5', 'B4', 'B3'),
  8. min = 0,
  9. max = 0.5,
  10. gamma = c(0.95, 1.1, 1)
  11. )
  12. # 展示影像
  13. Map$setCenter(lon = -122.1899, lat = 37.5010, zoom = 10) # San Francisco Bay
  14. m1 <- Map$addLayer(landsat, vizParams, 'false color composite')
  15. m1$rgee
  16. #> $tokens获取权限
  17. #> [1] "https://earthengine.googleapis.com/v1alpha/projects/earthengine-legacy/maps/6f68ea5563f0787171eef294011e5b1a-54a29dea5a564831913fb1c8c1653628/tiles/{z}/{x}/{y}"
  18. #>
  19. #> $name
  20. #> [1] "false color composite"
  21. #>
  22. #> $opacity
  23. #> [1] 1
  24. #>
  25. #> $shown
  26. #> [1] TRUE
  27. #>
  28. #> $min
  29. #> [1] NA
  30. #>
  31. #> $max
  32. #> [1] NA
  33. #>
  34. #> $palette
  35. #> $palette[[1]]
  36. #> [1] NA
  37. #>
  38. #>
  39. #> $legend
  40. #> [1] FALSE

{leaflet}:是一个用于传单的 R 包绑定(由 Rstudio 开发),一个用于移动友好型交互式地图的开源 JavaScript 库。


   
  1. library(leaflet)
  2. library(rgee)
  3. ee_Initialize()
  4. # 加载影像
  5. landsat <- ee$Image('LANDSAT/LC08/C01/T1_TOA/LC08_044034_20140318')
  6. # 定义视觉参数
  7. vizParams <- list(
  8. bands = c('B5', 'B4', 'B3'),
  9. min = 0,
  10. max = 0.5,
  11. gamma = c(0.95, 1.1, 1)
  12. )
  13. # 设置地图中心点和展示
  14. Map$setCenter(lon = -122.1899, lat = 37.5010, zoom = 10) # San Francisco Bay
  15. m1 <- Map$addLayer(landsat, vizParams, 'false color composite')
  16. # 与leaflet结合
  17. leaflet() %>%
  18. addTiles() %>%
  19. setView(-122.1899, 37.5010, 9) %>%
  20. addTiles(
  21. urlTemplate = m1$rgee$tokens,
  22. layerId = "leaflet_false_color",
  23. options = leaflet::tileOptions(opacity = 1)
  24. )


图 N°05: Map$addLayer 和 {leaflet} 集成

{mapview}:由 Tim Appelhans 开发的 R 包,它提供了非常快速和方便地创建 R 空间数据的交互式可视化的功能。它支持最流行的空间数据 R 包({sp}、{sf}、{stars} 和 {raster})。


  
  1. library(mapview)
  2. library(rgee)
  3. ee_Initialize()
  4. # 加载影像
  5. landsat <- ee$Image('LANDSAT/LC08/C01/T1_TOA/LC08_044034_20140318')
  6. # 设置参数
  7. vizParams <- list(
  8. bands = c('B5', 'B4', 'B3'),
  9. min = 0,
  10. max = 0.5,
  11. gamma = c(0.95, 1.1, 1)
  12. )
  13. # 显示图像
  14. Map$setCenter(lon = -122.1899, lat = 37.5010, zoom = 10) # San Francisco Bay
  15. m1 <- Map$addLayer(landsat, vizParams, 'false color composite')
  16. # 与地图视图集成
  17. stp <- st_sfc(st_point(c(-122.27234, 37.46941)), crs=4326)
  18. mapview(stp, m1)


图 N°06: Map$addLayer 和 {mapview} 集成。

{mapedit}:为传单交互式地图添加空间数据编辑功能(类似于代码编辑器几何工具)。

 每加载一个地物就直接应用到这个函数就好了,所以比较简单


  
  1. library(mapedit)
  2. library(rgee)
  3. ee_Initialize()
  4. # Load an image.
  5. landsat <- ee$Image('LANDSAT/LC08/C01/T1_TOA/LC08_044034_20140318')
  6. # Define the visualization parameters.
  7. vizParams <- list(
  8. bands = c('B5', 'B4', 'B3'),
  9. min = 0,
  10. max = 0.5,
  11. gamma = c(0.95, 1.1, 1)
  12. )
  13. # Center the map and display the image.
  14. Map$setCenter(lon = -122.1899, lat = 37.5010, zoom = 10) # San Francisco Bay
  15. m1 <- Map$addLayer(landsat, vizParams, 'false color composite')
  16. # Integrate with mapedit
  17. my_geom <- editMap(m1)$drawn

7. 地图运营商

从 1.0.5 版本开始,rgee支持两种地图操作符:


  
  1. library(mapedit)
  2. library(rgee)
  3. ee_Initialize()
  4. # Load an image.
  5. landsat <- ee$Image('LANDSAT/LC08/C01/T1_TOA/LC08_044034_20140318')
  6. ndwi <- landsat$normalizedDifference(c('B3', 'B5'))
  7. ndwiMasked <- ndwi$updateMask(ndwi$gte(0.4))
  8. # Define the visualization parameters.
  9. vizParams <- list(
  10. bands = c('B5', 'B4', 'B3'),
  11. min = 0,
  12. max = 0.5,
  13. gamma = c(0.95, 1.1, 1)
  14. )
  15. ndwiViz <- list(
  16. min = 0.5,
  17. max = 1,
  18. palette = c('00FFFF', '0000FF')
  19. )
  20. # Center the map and display the image.
  21. Map$setCenter(lon = -122.1899, lat = 37.5010, zoom = 10) # San Francisco Bay
  22. m1 <- Map$addLayer(landsat, vizParams, 'false color composite')
  23. m2 <- Map$addLayer(ndwiMasked, ndwiViz, 'NDWI masked')
  • m1 +m2:叠加层。
m1 + m2
 


图 N°08:叠加地图


示例

  • m1 |m2:并排视图。

 


  
  1. #中间这个竖条也十分直白,就告诉你分开就好
  2. m1 | m2


图 N°08:并排示例

文章来源: blog.csdn.net,作者:此星光明2021年博客之星云计算Top3,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/qq_31988139/article/details/119968938

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。