geemap学习笔记018:非监督分类

前言

非监督分类是遥感影像中非常常用的一种分类方式,下图是Earth Engine中常用的聚类方法,本节就以landsat 8数据为例,采用 ee.Clusterer.wekaKMeans() 方法进行聚类分类。

geemap学习笔记018:非监督分类_第1张图片

1 导入库并显示地图

import ee
import geemap

Map = geemap.Map()
Map

2 添加数据

point = ee.Geometry.Point([-87.7719, 41.8799]) #初始化点坐标

image = (
    ee.ImageCollection('LANDSAT/LC08/C01/T1_SR') #Landsat 8数据
    .filterBounds(point) #过滤经过该点的影像
    .filterDate('2019-01-01', '2019-12-31') #时间
    .sort('CLOUD_COVER') #按照云量进行排序
    .first() #选择第一景影像
    .select('B[1-7]') #选择1-7个波段
)

vis_params = {'min': 0, 'max': 3000, 'bands': ['B5', 'B4', 'B3']}

Map.centerObject(point, 8)
Map.addLayer(image, vis_params, "Landsat-8")

3 查看图像的属性

props = geemap.image_props(image) #获取图像所有信息
props.getInfo()

props.get('IMAGE_DATE').getInfo() #图像获取时间
props.get('CLOUD_COVER').getInfo() #云量

4 制作训练数据集

#有多种方法可以创建用于生成训练数据集的区域
# region = Map.user_roi #可以在地图绘制ROI
# region = ee.Geometry.Rectangle([-122.6003, 37.4831, -121.8036, 37.8288]) #可以自定义矩形范围
# region = ee.Geometry.Point([-122.4439, 37.7538]).buffer(10000) #也可以创建缓冲区

training = image.sample(
    **{
            # 'region': region, #可以自定义区域生成样本,否则就是全影像
        'scale': 30,
        'numPixels': 5000, #这是要生成的样本点数
        'seed': 0,
        'geometries': True,  # Set this to False to ignore geometries
    }
)

Map.addLayer(training, {}, 'training', True)
Map


生成的训练数据集
geemap学习笔记018:非监督分类_第2张图片

5 进行聚类

n_clusters = 5 #聚类中心的个数
clusterer = ee.Clusterer.wekaKMeans(n_clusters).train(training)

6 图像分类

#使用经过训练的聚类器对输入进行聚类
result = image.cluster(clusterer)

#用随机颜色显示簇。
Map.addLayer(result.randomVisualizer(), {}, 'clusters')
Map

生成的分类结果图
geemap学习笔记018:非监督分类_第3张图片

7 为分类结果添加标签

legend_keys = ['One', 'Two', 'Three', 'Four', 'ect'] #定义名称
legend_colors = ['#8DD3C7', '#FFFFB3', '#BEBADA', '#FB8072', '#80B1D3'] #定义颜色

#重新分类map
result = result.remap([0, 1, 2, 3, 4], [1, 2, 3, 4, 5])

Map.addLayer(
    result, {'min': 1, 'max': 5, 'palette': legend_colors}, 'Labelled clusters'
) #为结果添加自定义颜色
Map.add_legend(
    legend_keys=legend_keys, legend_colors=legend_colors, position='bottomright'
) #为结果添加图例
Map

8 导出结果

geemap.ee_export_image_to_drive(
    result, description='clusters', folder='export', scale=30
) #导出结果

后记

大家如果有问题需要交流或者有项目需要合作,可以加Q Q :504156006详聊,加好友请留言“CSDN”,谢谢。

你可能感兴趣的:(geemap,遥感,Python,学习,笔记,分类)