Google Earth Engine(GEE)——R 語言圖像可視化(內含NDWI指數計算和掩膜鑲嵌后的圖像展示)
改編自Google Earth Engine 文檔。
您可以使用Map$addLayer()可視化圖像。如果在沒有任何附加參數的情況下向地圖添加圖層,默認情況下rgee將前三個波段分別分配給紅色、綠色和藍色。默認拉伸基于帶中數據的類型(例如,浮點數在 [0,1] 中拉伸,16 位數據被拉伸到可能值的完整范圍),這可能適合也可能不適合。為了達到理想的可視化效果,您可以為Map$addLayer()提供可視化參數。具體來說,參數是:
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:并排示例
R 語言
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。