基于AIE的贵阳市两湖一库水体区域识别

简介: 两湖一库”是贵阳市红枫湖、百花湖、阿哈水库饮用水源的简称。参考官方案例,使用AIE提取贵阳市两湖一库水体区域。

贵阳市两湖一库水体区域识别

通过计算归一化水体指数 NDWI 指数提取贵阳市水体区域。

初始化环境

import aie
aie.Authenticate()
aie.Initialize()

Landsat-8 数据检索

使用 aie.mageCollection引用 Landsat-8 数据集,镶嵌后并对数据进行去云处理。

# 指定需要检索的区域
feature_collection = aie.FeatureCollection('China_City') \
                        .filter(aie.Filter.eq('city', '贵阳市'))
geometry = feature_collection.geometry()
# 指定检索数据集,可设置检索的空间和时间范围,以及属性过滤条件(如云量过滤等)
dataset = aie.ImageCollection('LANDSAT_LC08_C02_T1_L2') \
             .filterBounds(geometry) \
             .filterDate('2018-6-01', '2020-10-31') \
             .filter(aie.Filter.lte('eo:cloud_cover', 10.0)) \
             .limit(10)
map = aie.Map(
    center=feature_collection.getCenter(),
    height=800,
    zoom=7
)
vis_params = {
    'bands': ['SR_B4', 'SR_B3', 'SR_B2'],
    'min': 8000,
    'max': 13000,
}
map.addLayer(
    dataset,
    vis_params,
    'True Color (432)',
    bounds=dataset.getBounds()
)
map

贵阳市landset8影像

数据镶嵌

使用mosaic方法进行栅格镶嵌

## 镶嵌
mosaic_image = dataset.mosaic()
mosaic_image.getInfo()

去云

使用自定义removeLandsatCloud函数进行去云

## 去云
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)
## 去云
img = removeLandsatCloud(mosaic_image)

水体提取

通过aie.Image.normalizedDifference函数实现归一化水体指数( NDWI* )的计算。利用 aie.Image.where 、aie.Image.lte、aie.Image.gt实现水体与非水体的二分类提取。

## 计算ndwi
ndwi = img.normalizedDifference(['SR_B3', 'SR_B5'])
water = ndwi.where(ndwi.lte(aie.Image(0.0)),aie.Image(0)).where(ndwi.gt(aie.Image(0.0)),aie.Image(1))
# 水体区域为蓝色
vis_params = {
    'min': 0,
    'max': 1,
    'palette' : [
        '#a1a1a1', '#0000ff'
    ]
}

map.addLayer(
    water,
    vis_params,
    'water',
    bounds=mosaic_image.getBounds()
)
map

提取效果

真实效果

本案例主要引用了AIE官方的案例。

相关文章
|
6月前
|
机器学习/深度学习 PyTorch API
MindIE Torch快速上手
MindIE Torch 是一款高效的深度学习推理优化工具,支持 PyTorch 模型在 NPU 上的高性能部署。其核心特性包括:1) 子图与单算子混合执行,配合 torch_npu 实现高效推理;2) 支持 C++ 和 Python 编程语言,灵活适配不同开发需求;3) 兼容多种模式(TorchScript、ExportedProgram、torch.compile),覆盖广泛场景;4) 支持静态与动态 Shape 模型编译,满足多样化输入需求。通过简单易用的 API,开发者可快速完成模型加载、编译优化、推理执行及离线模型导出等全流程操作,显著提升开发效率与性能表现。
|
安全 搜索推荐 Linux
D-Bus深度解析:系统总线与会话总线的区别与应用
D-Bus深度解析:系统总线与会话总线的区别与应用
563 2
|
11月前
|
机器学习/深度学习 数据采集 Python
从零到一:手把手教你完成机器学习项目,从数据预处理到模型部署全攻略
【10月更文挑战第25天】本文通过一个预测房价的案例,详细介绍了从数据预处理到模型部署的完整机器学习项目流程。涵盖数据清洗、特征选择与工程、模型训练与调优、以及使用Flask进行模型部署的步骤,帮助读者掌握机器学习的最佳实践。
711 1
|
机器学习/深度学习 JavaScript 前端开发
PyCharm 2024.1最新变化
PyCharm 2024.1最新变化
|
Dart 算法 数据可视化
用flutter实现五种寻路算法的可视化效果,快来看看!
半年前我写了一篇有关排序算法可视化的文章,挺有意思,还被张风捷特烈-张老师收录进了FlutterUnit,今天让我们再来做一个有关寻路算法的可视化效果吧!
|
Java Spring
自定义转换之美:深入Spring自定义类型转换器的奥秘
自定义转换之美:深入Spring自定义类型转换器的奥秘
166 0
|
关系型数据库 MySQL 数据库
使用 Docker 搭建一个“一主一从”的 MySQL 读写分离集群(超详细步骤
使用 Docker 搭建一个“一主一从”的 MySQL 读写分离集群(超详细步骤
681 0
|
存储 Dubbo Java
dubbo 源码 v2.7 分析:通信过程及序列化协议
前面我们介绍了dubbo的核心机制,今天将开始分析远程调用流程。毕竟,作为一个rpc框架,远程调用是理论的核心内容。通过对dubbo相关实现的探究,深入了解rpc原理及可能的问题。
391 1
|
Java 程序员 开发工具
Eclipse 答疑:如何使用 Eclipse 进行断点(Breakpoints)调试?
Eclipse 答疑:如何使用 Eclipse 进行断点(Breakpoints)调试?
705 0
Eclipse 答疑:如何使用 Eclipse 进行断点(Breakpoints)调试?