使用colab进行两栖不同时期的NDVI影像对比
使用colab之前一定要进行下面代码的加载:
安装 Earth Engine API 和 geemap
安装 Earth Engine Python API 和 geemap。 geemap Python 包基于 ipyleaflet 和 folium 包构建,并实现了与 Earth Engine 数据层交互的多种方法,例如 Map.addLayer()、Map.setCenter() 和 Map.centerObject()。 以下脚本检查 geemap 软件包是否已安装。 如果没有,它将安装 geemap,它会自动安装其依赖项,包括 Earthengine-api、folium 和 ipyleaflet。
# Installs geemap package
import subprocess
try:
import geemap
except ImportError:
print('Installing geemap ...')
subprocess.check_call(["python", '-m', 'pip', 'install', 'geemap'])
import ee
import geemap
创建交互式地图
默认底图是 Google 地图。 可以使用 Map.add_basemap() 函数添加其他底图。
Map = geemap.Map(center=[40,-100], zoom=4)
Map
这里我们加载landsat 5的影像,然后进行NDVI的单景计算,这里分别查看20年的差异的对比,值得注意的是我们这里需要使用getNDVI(image1)来分别获取相应的NDVI影像,这个不同于select函数,所以我们值得注意和JavaScript的差异。另外这里使用到的函数:
**ndviDifference.updateMask(*args, kwargs)
在标签页中打开 查看源代码
Updates an image’s mask at all positions where the existing mask is not
zero. The output image retains the metadata and footprint of the input
image.
Args:
image: Input image.
mask: New mask for the image, as a floating-point value in the
range [0, 1] (invalid = 0, valid = 1). If this image has a
single band, it is used for all bands in the input image;
otherwise, must have the same number of bands as the input
image.
更新现有蒙版不存在的所有位置的图像蒙版
零。 输出图像保留输入的元数据和足迹
图像。
参数:
图像:输入图像。
mask:图像的新掩码,作为浮点值
范围 [0, 1](无效 = 0,有效 = 1)。 如果这张图片有一个
单波段,用于输入图像中的所有波段;
否则,必须具有与输入相同的频段数
图像。
# Add Earth Engine dataset
# This function gets NDVI from Landsat 5 imagery.
def getNDVI(image):
return image.normalizedDifference(['B4', 'B3'])
# Load two Landsat 5 images, 20 years apart.
image1 = ee.Image('LANDSAT/LT05/C01/T1_TOA/LT05_044034_19900604')
image2 = ee.Image('LANDSAT/LT05/C01/T1_TOA/LT05_044034_20100611')
# Compute NDVI from the scenes.
ndvi1 = getNDVI(image1)
ndvi2 = getNDVI(image2)
# Compute the difference in NDVI.
ndviDifference = ndvi2.subtract(ndvi1)
# Load the land mask from the SRTM DEM.
landMask = ee.Image('CGIAR/SRTM90_V4').mask()
# Update the NDVI difference mask with the land mask.
maskedDifference = ndviDifference.updateMask(landMask)
# Display the masked result.
vizParams = {'min': -0.5, 'max': 0.5,
'palette': ['FF0000', 'FFFFFF', '0000FF']}
Map.setCenter(-122.2531, 37.6295, 9)
Map.addLayer(maskedDifference, vizParams, 'NDVI difference')
最终结果如下:
- 点赞
- 收藏
- 关注作者
评论(0)