使用colab进行两栖不同时期的NDVI影像对比

举报
此星光明 发表于 2023/06/28 18:42:38 2023/06/28
【摘要】 使用colab之前一定要进行下面代码的加载:安装 Earth Engine API 和 geemap安装 Earth Engine Python API 和 geemap。 geemap Python 包基于 ipyleaflet 和 folium 包构建,并实现了与 Earth Engine 数据层交互的多种方法,例如 Map.addLayer()、Map.setCenter() 和 Ma...

使用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')

最终结果如下:

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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