栅格数据在 Earth Engine中表示为Image对象。图像由一个或多个波段组成,每个波段都有自己的名称、数据类型、比例、遮罩和投影。每个图像都将元数据存储为一组属性。
1. ee.Image 构造函数
可以通过将地球引擎资产ID粘贴到ee$Image
构造函数中来加载图像。您可以在数据目录中找到图像ID。例如,要加载JAXA 的 ALOS DSM:
library(rgee) ee_Initialize() srtm <- ee$Image("USGS/SRTMGL1_003")
2. 从 ee.ImageCollection 中获取 ee.Image
从集合中获取图像的标准方法是过滤集合,过滤器按特异性递减的顺序进行。例如,要从 Sentinel-2 表面反射集合中获取图像:
# 加载卫星影像 sen <- ee$ImageCollection("COPERNICUS/S2")$ filterBounds(ee$Geometry$Point(-70.48, 43.3631))$ filterDate('2019-01-01', '2019-12-31')$ sort('CLOUDY_PIXEL_PERCENTAGE')$ first() # 定义可视化参数 vizParams <- list( bands = c("B4", "B3", "B2"), min = 0, max = 2000, gamma = c(0.95, 1.1, 1) ) # 设置影像中心点和缩放 Map$centerObject(sen, 7) # 你将会看到 m1 <- Map$addLayer(sen, vizParams, 'first') m1
图 N°01: Sentinel-2 RGB 波兰,美国
请注意,排序在过滤器之后。避免对整个集合进行排序。
要在 QGIS 中显示结果复制m1$rgee$tokens
到 XYZ Tiles:
m1$rgee$tokens #[1] > "https://earthengine.googleapis.com/v1alpha/projects/earthengine-legacy/maps/af6fc12945dfe1342891968f6b8b3c47-d47e902ef95199a5c37959f3aec47388/tiles/{z}/{x}/{y}"
图 N°02: rgee & QGIS 地图集成
3. 来自 Cloud GeoTIFFS 的图像
您可以使用ee$Image$loadGeoTIFF()
加载从图像云优化GeoTIFFs在谷歌云存储。例如,托管在 Google Cloud 中的公共 Landsat 数据集包含此 GeoTIFF,对应于来自 Landsat 8 场景的波段 5。您可以使用ee$Image$loadGeoTIFF()
以下命令从 Cloud Storage 加载此图像:
uri <- sprintf( "%1s%2s%3s", "gs://gcp-public-data-landsat/LC08/01/001/002/", "LC08_L1GT_001002_20160817_20170322_01_T2/", "LC08_L1GT_001002_20160817_20170322_01_T2_B5.TIF" ) cloudImage <- ee$Image$loadGeoTIFF(uri) print(cloudImage)
请注意,如果您想重新加载从 Earth Engine 导出到 Cloud Storage的 Cloud Optimized GeoTIFF ,则在执行导出时,请按照此处所述将 cloudOptimized 设置为 true 。
4. 常量图像
除了通过ID加载图像之外,您还可以从常量、列表或其他合适的 Earth Engine 对象创建图像。下面说明了创建图像、获取波段子集和操作波段的方法:
library(rgee) ee_Initialize() # 创建一个像素值为 1 的常量 Image。 image1 <- ee$Image(1) print(image1, type = "json") print(image1, type = "simply") print(image1, type = "ee_print") # You can see it. Map$addLayer(image1) # 将两个图像连接成一个多波段图像。 image2 <- ee$Image(2) image3 <- ee$Image$cat(c(image1, image2)) ee_print(image3, clean = TRUE) # 通过以下方式更改打印选项:“简单”、“json”、“ee_print” options(rgee.print.option = "simply") # 从常量列表创建多波段图像。 multiband <- ee$Image(c(1, 2, 3)) print(multiband) # 选择并(可选)重命名波段。 renamed <- multiband$select( opt_selectors = c("constant", "constant_1", "constant_2"), # old names opt_names = c("band1", "band2", "band3") # new names ) ee_print(renamed) # 为图像添加波段。 image4 <- image3$addBands(ee$Image(42)) print(image4)