首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >AI Earth ——开发者模式案例3:典型植被指数计算及区域统计

AI Earth ——开发者模式案例3:典型植被指数计算及区域统计

作者头像
此星光明
发布于 2024-02-02 02:14:40
发布于 2024-02-02 02:14:40
28500
代码可运行
举报
运行总次数:0
代码可运行

典型植被指数计算及区域统计

对检索的影像(以 Landsat-8 为例),通过波段运算计算常见的指数。并以归一化植被指数( NDVI )为例,进行区域均值统计以及时序折线图制作。

初始化环境
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import aie

aie.Authenticate()
aie.Initialize()
典型光谱指数算法

定义典型指数计算方法。使用 aie.Image.addaie.Image.subtractaie.Image.multiplyaie.Image.divide 实现影像波段运算。另外可使用 aie.Image.normalizedDifference 实现两个波段的归一化差值运算 (Band1-Band2)/(Band1+Band2) ,使用 aie.Image.expression 可实现构建表达式对影像进行波段运算。

如切换卫星数据源,需要调整对应的波段名称。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 比值植被指数
def getRVI(image):
    nir = image.select(['SR_B5'])
    red = image.select(['SR_B4'])
    rvi = nir.divide(red)
    return rvi.rename(['RVI'])

# 增强型植被指数
def getEVI(image):
    evi = image.expression(
        '(2.5 * (nir - red)) /(nir + 6 * red - 7.5 * blue + 1)', 
        {
            'nir': image.select(['SR_B5']),
            'red': image.select(['SR_B4']),
            'blue': image.select(['SR_B2'])
    }).rename('EVI')
    return evi

# 归一化植被指数
def getNDVI(image):
    ndvi = image.normalizedDifference(['SR_B5', 'SR_B4']).rename(['NDVI'])
    return ndvi

# 近红外植被指数
def getNIRv(image):
    nir = image.select(['SR_B5'])
    nirv = nir.multiply(image.normalizedDifference(['SR_B5', 'SR_B4'])).rename('NIRv')
    return nirv                                                 
  
# 土壤调整植被指数
def getSAVI(image):
    nir = image.select(['SR_B5'])
    red = image.select(['SR_B4'])                                                
    savi = ((nir.subtract(red)).multiply(aie.Image.constant(1.5))).divide((nir.add(red)).add(aie.Image.constant(0.5))).rename('SAVI')
    return savi

# 归一化水体指数
def getNDWI(image):
    ndwi = image.normalizedDifference(['SR_B3', 'SR_B5']).rename('NDWI')
    return ndwi
Landsat-8 数据检索

指定区域、时间、云量检索 Landsat-8 ,并对数据进行去云处理。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
region = aie.FeatureCollection('China_Province') \
            .filter(aie.Filter.eq('province', '浙江省')) \
            .geometry()
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def l8Collection(startdate, enddate):
    images = aie.ImageCollection('LANDSAT_LC08_C02_T1_L2') \
            .filterBounds(region) \
            .filterDate(startdate, enddate)
    return images
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def removeLandsatCloud(image):
    cloudShadowBitMask = (1 << 4)
    cloudsBitMask = (1 << 3)
    qa = image.select('QA_PIXEL')
    mask = qa.bitwiseAnd(aie.Image(cloudShadowBitMask)).eq(aie.Image(0)).And(qa.bitwiseAnd(aie.Image(cloudsBitMask)).eq(aie.Image(0)))
    return image.updateMask(mask)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
lc8_collection = l8Collection('2021-08-01', '2021-08-31')
lc8_collection.map(removeLandsatCloud)
print(lc8_collection.size().getInfo())
lc8_img = lc8_collection.max()
NDVI 计算及可视化

NDVI 计算为例输出指数计算成果,并地图可视化展示。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ndvi = getNDVI(lc8_img)

ndvi_vis = {
    'min': -0.2,
    'max': 0.6,
    'palette': [
        '#2B83BA', '#ABDDA4', '#FFFFBF', '#FDAE61', '#D7191C'
    ]
}

map = aie.Map(
    center=ndvi.getCenter(),
    height=800,
    zoom=5
)

map.addLayer(
    ndvi,
    ndvi_vis,
    'NDVI',
    bounds=ndvi.getBounds()
)

map
代码语言:javascript
代码运行次数:0
运行
复制
NDVI 区域统计

使用中国市级行政区划数据,按照市域范围对 NDVI 进行均值统计。使用 aie.Image.reduceRegionsaie.Reducer.mean 实现对影像进行指定区域范围均值统计。 当在较大范围内执行 ReduceRegion 或者 ReduceRegions 函数时,可能存在较为耗时的情况。开发者根据实际需求调整 scale单位:米),scale 越大,耗时越少。

通过引用 Pythonpyplot 绘制浙江各地市区域 NDVI 均值统计图。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
zone = aie.FeatureCollection('China_City') \
         .filter(aie.Filter.eq('province', '浙江省'))

zone_mean = ndvi.reduceRegions(zone, aie.Reducer.mean(), 1000)
zone_info = zone_mean.getInfo()

x_list = []
y_list = []
for feature in zone_info['features']:
    x_list.append(feature['properties']['city'])
    y_list.append(feature['properties']['NDVI_mean'])
    
# print(x_list)
# print(y_list)

from bqplot import pyplot as plt
plt.figure(1, title='2021年浙江省各市NDVI均值统计')
plt.bar(x_list, y_list)   #colors=['MediumSeaGreen']
plt.show()

杭州市宁波市温州市嘉兴市湖州市绍兴市金华市衢州市舟山市台州市丽水市00.020.040.060.080.10.120.140.160.180.20.220.240.260.282021年浙江省各市NDVI均值统计

NDVI时间序列分析

在指定空间范围内实现时间序列统计分析,并绘制折线图。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def doSeries(start_time, end_time, zone):
    lc8_col = l8Collection(start_time, end_time)
    lc8_col.map(removeLandsatCloud)
    lc8_img = lc8_col.mosaic()
    ndvi = getNDVI(lc8_img)
    return ndvi.reduceRegion(aie.Reducer.mean(), zone, 1000)

zone = aie.FeatureCollection('China_City') \
          .filter(aie.Filter.eq('province', '浙江省')) \
          .geometry()

x_ndvi_series = []
y_ndvi_series = []

year = '2021'
mon = ['01','02','03','04','05','06','07','08','09','10','11','12']
lday = ['31','28','31','30','31','30','31','31','30','31','30','31']

for i in range(0,12):
    startdate = year + '-' + mon[i] + '-01' 
    enddate = year + '-' + mon[i] + '-' + lday[i]
    
    lc8_ndvi_mon = doSeries(startdate, enddate , zone)
    x_ndvi_series.append(mon[i] + '月')
    y_ndvi_series.append(lc8_ndvi_mon.getInfo()['NDVI_mean'])


# print(x_ndvi_series)
# print(y_ndvi_series)


from bqplot import pyplot as plt
plt.figure(2, title='2021年浙江省逐月NDVI均值统计')
plt.plot(x_ndvi_series, y_ndvi_series)
plt.show()

01月02月03月04月05月06月07月08月09月10月11月12月0.060.080.10.120.140.160.180.20.220.242021年浙江省逐月NDVI均值统计

影像输出
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
task = aie.Export.image.toAsset(ndvi, 'NDVI', 30)
task.start()
参考文献:

Zeng, Y., Hao, D., Huete, A. et al. Optical vegetation indices for monitoring terrestrial ecosystems globally. Nat Rev Earth Environ 3, 477–493 (2022). Optical vegetation indices for monitoring terrestrial ecosystems globally | Nature Reviews Earth & Environment

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-02-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
AI Earth ——开发者模式案例7:植被覆盖度提取
植被覆盖度(Fractional Vegetation Cover,FVC),是指植被(包括叶、茎、枝)在地面的垂直投影面积占统计区总面积的百分比,范围在 [0,100%] 之间。FVC 是刻画地表植被覆盖的重要参数,能够直观的反映一个地区绿的程度,是反应植被生长状态的重要指标,在植被变化、生态环境研究、水土保持、城市宜居等方面问题研究中起到重要作用。本案例以 Landsat-8 数据为例,计算浙江省区域的 FVC 指数。
此星光明
2024/02/02
3270
AI Earth ——开发者模式案例7:植被覆盖度提取
GEE、PIE和AI Earth平台进行案例评测:NDVI计算,结果差异蛮大
本文主要是通过对比GEE、PIE和AI Earth平台,主要是计算不同平台,同一个NDVI的均值计算,我们已测试结果如何。
此星光明
2024/02/02
4301
GEE、PIE和AI Earth平台进行案例评测:NDVI计算,结果差异蛮大
AI Earth ——开发者模式案例6:决策树模型实现冬小麦提取
依据作物在不同物候期内卫星影像的光谱存在差异的特征,可建立冬小麦提取算法,进行像元尺度冬小麦提取。这里同样是使用的NDVI作为阈值提取条件,分别使用不同的聚合方式完成对影像的筛选,从而得出冬小麦种植面积的提取。
此星光明
2024/02/02
2100
AI Earth ——开发者模式案例6:决策树模型实现冬小麦提取
AI Earth ——开发者模式案例8:利用Landsat-8数据进行地表温度反演
此星光明
2024/02/02
3750
AI Earth ——开发者模式案例8:利用Landsat-8数据进行地表温度反演
GEE代码实例教程详解:长时间序列NDVI分析
本篇博客将介绍如何使用Google Earth Engine (GEE) 对长时间序列的Landsat数据进行归一化植被指数(NDVI)分析。通过此分析,可以监测和评估1982年至2024年间的植被变化趋势。
Twcat_tree
2024/07/09
1.2K0
AI Earth ——开发者模式案例1:按区域进行Sentinel2L2A检索与下载
用户可使用平台内置或自主上传的矢量文件,进行数据的检索(以 Sentine-2 L2A 为例),再进行数据筛选、拼接、裁剪等操作后,将数据导出至 我的数据 中。
此星光明
2024/02/02
3460
AI Earth ——开发者模式案例1:按区域进行Sentinel2L2A检索与下载
AI Earth ——开发者模式案例4:浙江省森林区域植被生长分析
利用 Modis MCD12Q1 地物分类数据产品和 MODIS MOD13Q1 16天标准植被指数产品。通过对 2021 年 8 月植被指数最大值与近 3 年同期指数 8 月最大值的 3 年均值进行对比,实现对浙江省森林区域植被的空间监测。
此星光明
2024/02/02
2190
AI Earth ——开发者模式案例4:浙江省森林区域植被生长分析
GEE 案例:利用sentinel-2数据计算的NDVI指数对比植被退化情况
NDVI(Normalized Difference Vegetation Index,归一化植被指数)是通过计算红外波段和可见光波段的反射值之间的差异来评估植被的状况。利用NDVI指数可以监测植被的退化情况。
此星光明
2024/09/19
1.3K0
GEE 案例:利用sentinel-2数据计算的NDVI指数对比植被退化情况
GEE 更新和优化:利用GEE在线处理1985-2024年NDVI、EVI、SAVI、NDMI等指数归一化教程!(Landsat C02 数据)
本次的归一化教程,优化了数据去云,预处理等过程,同事将landsat 5/7/8集合分别进行了数据整合,也就是原始波段的处理,从而我们可以调用1985-至今任何一个时期的影像进行归一化处理。具体的原文介绍 请看原始的博客
此星光明
2024/09/02
7600
GEE 更新和优化:利用GEE在线处理1985-2024年NDVI、EVI、SAVI、NDMI等指数归一化教程!(Landsat C02 数据)
【GEE】基于PCA的LANDSAT 8计算遥感生态指数(RSEI)
Twcat_tree
2024/04/08
5950
【GEE】基于PCA的LANDSAT 8计算遥感生态指数(RSEI)
GEE 教程——基于sentinel-2数据的NDVI和EVI指数的对比
NDVI(Normalized Difference Vegetation Index)和EVI(Enhanced Vegetation Index)是两种常用的植被指数,用于评估植被生长状况和活力。
此星光明
2025/01/21
4530
GEE 教程——基于sentinel-2数据的NDVI和EVI指数的对比
【GEE】时间序列多源遥感数据随机森林回归预测|反演|验证|散点图|完整代码
分类和回归之间的主要区别在于,在分类中,我们的预测目标是离散的类别,而在回归中,预测目标是连续的预测值。
Twcat_tree
2023/12/08
3.2K1
【GEE】时间序列多源遥感数据随机森林回归预测|反演|验证|散点图|完整代码
AI Earth ——开发者模式案例5:鄱阳湖水体区域识别
使用 aie.Image 引用单景 Landsat-8 数据,并对数据进行去云处理。
此星光明
2024/02/02
2110
AI Earth ——开发者模式案例5:鄱阳湖水体区域识别
PIE-engine 教程 ——NDVI和FVC计算时序分析以2013年-2020年福州市为例
本教程我们将分析植被覆盖度动态分布,再计算FVC的时候,我们首先要计算NDVI,然后通归一化处理,这个过程主要是计算最大值最小值的获取,植被覆盖度根据像元二分模型计算FVC=(NDVI-NDVImin)/(NDVImax-NDVImin)
此星光明
2024/02/02
4820
PIE-engine 教程 ——NDVI和FVC计算时序分析以2013年-2020年福州市为例
GEE(Google Earth Engine)计算全球的NDVI和SAVI!
此次案例主要是通过Landsat7来进行2002年11月-12月的NDVI和SAVI指数的计算,而且是通过表达式,这中表达是在于,以后你也想通过波段计算的话,可以改改公式即可使用,话不多说!上代码:
此星光明
2024/02/01
2150
GEE(Google Earth Engine)计算全球的NDVI和SAVI!
利用GEE(Google Earth Engine)在线处理NDVI、EVI、SAVI、NDMI等指数归一化教程!
以上部分各指数的计算过程我就不一一解释了,因为指数就是波段运算的结果,自己进行公式表达就行了。
此星光明
2024/02/01
1.3K0
利用GEE(Google Earth Engine)在线处理NDVI、EVI、SAVI、NDMI等指数归一化教程!
GEE基于Landsat 8数据反演绿度/热度/湿度/干度,并计算生态遥感指数代码分享
//导入自己的研究区,将其定义为roi var star_date = '2018-01-01'//定义起始时间 var end_date = '2018-12-30'//定义终止时间 var L8_SR = ee.ImageCollection("LANDSAT/LC08/C01/T1_SR")//加载L8_SR影像 var img_SR = L8_SR.filterBounds(roi) .filterDate(star_date, end_date) .f
气象学家
2022/01/18
3.2K1
AI Earth ——开发者模式案例2:Landsat系列影像数据去云
AIE平台中提供的 Landsat 影像均为 USGS Collection 2 中的数据,该集合使用 QA_PIXEL 波段对云、雪进行描述。因此,可通过位运算和逻辑运算,生成云掩膜,利用 updateMask 函数去除可能是云或者云阴影的区域。此算法适用于 Landsat-5 / 7 / 8 / 9 。
此星光明
2024/02/02
4940
AI Earth ——开发者模式案例2:Landsat系列影像数据去云
【GEE】6、在 Google 地球引擎中构建各种遥感指数
一个田地已经灌溉的年数的卫星图像。灌溉水最可能的来源是奥加拉拉含水层。图片来自科罗拉多州霍利奥克附近。资料来源:美国国家航空航天局
Twcat_tree
2023/11/07
8040
【GEE】6、在 Google 地球引擎中构建各种遥感指数
PIE-engine 教程 ——长时间序列NDVI影像计算和chart时序图加载(2017年锦州全年植被指数展示)
本次教程首先市选定我们合适的长时间序列影像,我们首先划定研究区,然后设定指定区域的NDVI计算这里用到的市mean合成的计算,设定我们的去云和可视化参数设定,我们定义一个佛如循环用来进行分别进行遍历,最后设定chart影像的格式,加载影像。我们这里需要用到一个函数:
此星光明
2024/02/02
3100
PIE-engine 教程 ——长时间序列NDVI影像计算和chart时序图加载(2017年锦州全年植被指数展示)
推荐阅读
AI Earth ——开发者模式案例7:植被覆盖度提取
3270
GEE、PIE和AI Earth平台进行案例评测:NDVI计算,结果差异蛮大
4301
AI Earth ——开发者模式案例6:决策树模型实现冬小麦提取
2100
AI Earth ——开发者模式案例8:利用Landsat-8数据进行地表温度反演
3750
GEE代码实例教程详解:长时间序列NDVI分析
1.2K0
AI Earth ——开发者模式案例1:按区域进行Sentinel2L2A检索与下载
3460
AI Earth ——开发者模式案例4:浙江省森林区域植被生长分析
2190
GEE 案例:利用sentinel-2数据计算的NDVI指数对比植被退化情况
1.3K0
GEE 更新和优化:利用GEE在线处理1985-2024年NDVI、EVI、SAVI、NDMI等指数归一化教程!(Landsat C02 数据)
7600
【GEE】基于PCA的LANDSAT 8计算遥感生态指数(RSEI)
5950
GEE 教程——基于sentinel-2数据的NDVI和EVI指数的对比
4530
【GEE】时间序列多源遥感数据随机森林回归预测|反演|验证|散点图|完整代码
3.2K1
AI Earth ——开发者模式案例5:鄱阳湖水体区域识别
2110
PIE-engine 教程 ——NDVI和FVC计算时序分析以2013年-2020年福州市为例
4820
GEE(Google Earth Engine)计算全球的NDVI和SAVI!
2150
利用GEE(Google Earth Engine)在线处理NDVI、EVI、SAVI、NDMI等指数归一化教程!
1.3K0
GEE基于Landsat 8数据反演绿度/热度/湿度/干度,并计算生态遥感指数代码分享
3.2K1
AI Earth ——开发者模式案例2:Landsat系列影像数据去云
4940
【GEE】6、在 Google 地球引擎中构建各种遥感指数
8040
PIE-engine 教程 ——长时间序列NDVI影像计算和chart时序图加载(2017年锦州全年植被指数展示)
3100
相关推荐
AI Earth ——开发者模式案例7:植被覆盖度提取
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档