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

简介: 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
)

在此示例中,请注意minmax参数指示应应用调色板的像素值范围。中间值被线性拉伸。另请注意,如果您将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:并排示例


相关文章
|
7月前
|
数据可视化 定位技术 Sentinel
如何用Google Earth Engine快速、大量下载遥感影像数据?
【2月更文挑战第9天】本文介绍在谷歌地球引擎(Google Earth Engine,GEE)中,批量下载指定时间范围、空间范围的遥感影像数据(包括Landsat、Sentinel等)的方法~
2722 1
如何用Google Earth Engine快速、大量下载遥感影像数据?
|
7月前
|
编解码 人工智能 算法
Google Earth Engine——促进森林温室气体报告的全球时间序列数据集
Google Earth Engine——促进森林温室气体报告的全球时间序列数据集
103 0
|
7月前
|
机器学习/深度学习 算法 数据可视化
基于Google Earth Engine云平台构建的多源遥感数据森林地上生物量AGB估算模型含生物量模型应用APP
基于Google Earth Engine云平台构建的多源遥感数据森林地上生物量AGB估算模型含生物量模型应用APP
255 0
|
3月前
|
JavaScript 前端开发 测试技术
一个google Test文件C++语言案例
这篇文章我们来介绍一下真正的C++语言如何用GTest来实现单元测试。
28 0
|
7月前
GEE——Google dynamic world中在影像导出过程中无法完全导出较大面积影像的解决方案(投影的转换)EPSG:32630和EPSG:4326的区别
GEE——Google dynamic world中在影像导出过程中无法完全导出较大面积影像的解决方案(投影的转换)EPSG:32630和EPSG:4326的区别
145 0
|
7月前
|
存储 编解码 数据可视化
Google Earth Engine获取随机抽样点并均匀分布在栅格的不同数值区中
【2月更文挑战第14天】本文介绍在谷歌地球引擎(Google Earth Engine,GEE)中,按照给定的地表分类数据,对每一种不同的地物类型,分别加以全球范围内随机抽样点自动批量选取的方法~
676 1
Google Earth Engine获取随机抽样点并均匀分布在栅格的不同数值区中
|
7月前
|
API Go 网络架构
GEE Colab——如何从本地/Google云盘/Google Cloud Storage (GCS)上传和下载
GEE Colab——如何从本地/Google云盘/Google Cloud Storage (GCS)上传和下载
373 4
|
7月前
|
机器学习/深度学习 存储 人工智能
GEE Colab——初学者福音快速入门 Google Colab(Colaboratory)
GEE Colab——初学者福音快速入门 Google Colab(Colaboratory)
255 3
|
7月前
|
数据处理
Google Earth Engine(GEE)——sentinel-1数据处理过程中出现错误Dictionary does not contain key: bucketMeans
Google Earth Engine(GEE)——sentinel-1数据处理过程中出现错误Dictionary does not contain key: bucketMeans
124 0
|
7月前
|
数据采集 编解码 人工智能
Google Earth Engine(GEE)——全球每日近地表空气温度(2003-2020年)
Google Earth Engine(GEE)——全球每日近地表空气温度(2003-2020年)
251 0