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

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

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

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

初始化环境

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 可实现构建表达式对影像进行波段运算。

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

# 比值植被指数
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 ,并对数据进行去云处理。

region = aie.FeatureCollection('China_Province') \
            .filter(aie.Filter.eq('province', '浙江省')) \
            .geometry()
def l8Collection(startdate, enddate):
    images = aie.ImageCollection('LANDSAT_LC08_C02_T1_L2') \
            .filterBounds(region) \
            .filterDate(startdate, enddate)
    return images
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)
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 计算为例输出指数计算成果,并地图可视化展示。

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

NDVI 区域统计

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

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

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时间序列分析

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

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均值统计

 

影像输出

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

相关文章
|
13天前
|
存储 人工智能 文字识别
AI与OCR:数字档案馆图像扫描与文字识别技术实现与项目案例
本文介绍了纸质档案数字化的技术流程,包括高精度扫描、图像预处理、自动边界检测与切割、文字与图片分离抽取、档案识别与文本提取,以及识别结果的自动保存。通过去噪、增强对比度、校正倾斜等预处理技术,提高图像质量,确保OCR识别的准确性。平台还支持多字体识别、批量处理和结构化存储,实现了高效、准确的档案数字化。具体应用案例显示,该技术在江西省某地质资料档案馆中显著提升了档案管理的效率和质量。
|
1月前
|
人工智能 小程序 搜索推荐
成功案例分享|使用AI运动识别插件+微搭,快速搭建AI美体运动小程序
今天给大家分享一个最近使用我们的“AI运动识别小程序插件”+“微搭”搭建小程序的经典案例。
成功案例分享|使用AI运动识别插件+微搭,快速搭建AI美体运动小程序
|
1月前
|
人工智能 自然语言处理 数据挖掘
利用小蜜蜂AI智能问答ChatGPT+AI高清绘图生成图文故事案例
利用小蜜蜂AI智能问答ChatGPT+AI高清绘图生成图文故事案例
|
3月前
|
人工智能 Linux Anolis
|
3月前
|
存储 人工智能 算法
AI与大数据的结合:案例分析与技术探讨
【8月更文挑战第22天】AI与大数据的结合为各行各业带来了前所未有的机遇和挑战。通过具体案例分析可以看出,AI与大数据在电商、智能驾驶、医疗等领域的应用已经取得了显著成效。未来,随着技术的不断进步和应用场景的不断拓展,AI与大数据的结合将继续推动各行业的创新与变革。
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
【模型微调】AI Native应用中模型微调概述、应用及案例分析
在AI Native应用中,模型微调是一个关键步骤,它允许开发者使用特定领域的数据对预训练模型进行二次训练过程,从而使其更好地适应特定任务或数据集。模型微调通过调整模型的参数,使模型在特定任务上达到更高的性能。这种技术广泛应用于自然语言处理、图像识别、语音识别等领域
79 1
|
3月前
|
边缘计算 人工智能 监控
边缘计算与AI结合的场景案例研究
【8月更文第17天】随着物联网(IoT)设备数量的爆炸性增长,对实时数据处理的需求也随之增加。传统的云计算模型在处理这些数据时可能会遇到延迟问题,尤其是在需要即时响应的应用中。边缘计算作为一种新兴的技术趋势,旨在通过将计算资源更靠近数据源来解决这个问题。本文将探讨如何将人工智能(AI)技术与边缘计算结合,以实现高效的实时数据分析和决策制定。
239 1
|
3月前
|
SQL 存储 人工智能
就AI 基础设施的演进与挑战问题之进行网格聚合统计的问题如何解决
就AI 基础设施的演进与挑战问题之进行网格聚合统计的问题如何解决
|
6天前
|
机器学习/深度学习 人工智能 自然语言处理
当前AI大模型在软件开发中的创新应用与挑战
2024年,AI大模型在软件开发领域的应用正重塑传统流程,从自动化编码、智能协作到代码审查和测试,显著提升了开发效率和代码质量。然而,技术挑战、伦理安全及模型可解释性等问题仍需解决。未来,AI将继续推动软件开发向更高效、智能化方向发展。
|
10天前
|
机器学习/深度学习 人工智能 自然语言处理
AI在医疗领域的应用及其挑战
【10月更文挑战第34天】本文将探讨人工智能(AI)在医疗领域的应用及其面临的挑战。我们将从AI技术的基本概念入手,然后详细介绍其在医疗领域的各种应用,如疾病诊断、药物研发、患者护理等。最后,我们将讨论AI在医疗领域面临的主要挑战,包括数据隐私、算法偏见、法规合规等问题。
30 1

热门文章

最新文章