美文网首页
AIE实战2——贵阳市两湖一库水体区域识别

AIE实战2——贵阳市两湖一库水体区域识别

作者: 任源_c4d5 | 来源:发表于2022-10-13 12:16 被阅读0次

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

    通过计算归一化水体指数 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
    
    贵阳市Landsat-8影像

    数据镶嵌

    使用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官方的案例。

    相关文章

      网友评论

          本文标题:AIE实战2——贵阳市两湖一库水体区域识别

          本文链接:https://www.haomeiwen.com/subject/relaartx.html