ArcGIS决策树分类从入门到实战:遥感影像分类指南

1次阅读
没有评论

共计 1951 个字符,预计需要花费 5 分钟才能阅读完成。

image.webp

背景痛点

传统遥感影像分类方法如最大似然法,虽然简单易用,但在处理复杂地物类型时往往表现不佳。这种方法假设数据服从正态分布,且对非线性特征的处理能力有限。特别是在以下场景中,传统方法的局限性尤为明显:

ArcGIS 决策树分类从入门到实战:遥感影像分类指南

  • 地物类型之间存在复杂的非线性关系
  • 数据分布不符合正态分布假设
  • 需要融合多源数据(如不同波段、NDVI 等指数)

相比之下,决策树分类器具有以下优势:

  1. 能够自动处理非线性关系
  2. 不需要数据满足特定分布假设
  3. 可以直观地解释分类规则
  4. 支持连续型和离散型特征的混合输入

技术对比

算法 精度 训练速度 可解释性 适用场景
决策树 中等 小规模数据,需要解释性
随机森林 中等 中等 大规模数据,高精度需求
SVM 高维数据,清晰边界
最大似然 中等 中等 传统遥感分类

核心实现

数据预处理

import arcpy
from arcpy.sa import *

# 设置工作空间
arcpy.env.workspace = "C:/data/remote_sensing"
arcpy.env.overwriteOutput = True

# 影像裁剪
input_raster = "landsat.tif"
clip_feature = "study_area.shp"
output_raster = "clipped.tif"
arcpy.Clip_management(input_raster, "#", output_raster, clip_feature, "0", "ClippingGeometry")

# 计算 NDVI
red_band = 3
nir_band = 4
ndvi = (Raster(output_raster + "/Band_" + str(nir_band)) - 
        Raster(output_raster + "/Band_" + str(red_band))) / 
       (Raster(output_raster + "/Band_" + str(nir_band)) + 
        Raster(output_raster + "/Band_" + str(red_band)))
ndvi.save("ndvi.tif")

决策树分类

try:
    # 创建训练样本
    training_samples = "training_samples.shp"
    arcpy.gp.CreateSignatures(output_raster, training_samples, "ndvi.tif")

    # 设置决策树参数
    max_depth = 10
    min_samples_split = 5

    # 执行分类
    classified = arcpy.sa.DecisionTree(output_raster, training_samples, 
                                      ["Band_1", "Band_2", "Band_3", "Band_4", "ndvi"],
                                      max_depth=max_depth, 
                                      min_samples_split=min_samples_split)
    classified.save("classified_result.tif")

    # 记录处理日志
    arcpy.AddMessage("分类完成,结果已保存")

except arcpy.ExecuteError:
    arcpy.AddError(arcpy.GetMessages(2))
except Exception as e:
    arcpy.AddError(str(e))

评估验证

混淆矩阵计算

  1. 使用验证样本点
  2. 在 ArcGIS 中运行 ”Calculate Confusion Matrix” 工具
  3. 提取总体精度、Kappa 系数等指标

Kappa 系数计算公式:

Kappa = (Po - Pe) / (1 - Pe)
其中:Po = 总体分类精度
Pe = 期望分类精度 

特征重要性测试

通过逐个移除特征,观察分类精度变化,可以评估各特征的重要性:

特征组合 总体精度 Kappa 系数
所有波段 +NDVI 0.85 0.82
仅可见光波段 0.72 0.68
仅近红外 +NDVI 0.81 0.78

避坑指南

样本代表性不足

  • 采用分层随机采样,确保每类地物都有足够样本
  • 使用数据增强技术(如旋转、镜像)增加样本多样性
  • 考虑主动学习方法,迭代优化样本集

内存优化

  1. 分块处理大影像:
# 设置处理分块大小
arcpy.env.compression = "LZW"
arcpy.env.tileSize = "256 256"
  1. 使用 64 位背景处理
  2. 关闭不必要的图层

后处理技巧

  • 使用多数滤波去除椒盐噪声:
filtered = arcpy.sa.FocalStatistics(classified, "Rectangle 3 3 CELL", "MAJORITY")
filtered.save("filtered_result.tif")
  • 设置最小图斑面积,移除小碎斑

练习资源

  1. 示例数据集:Landsat 8 示例数据下载
  2. 扩展阅读:
  3. 《遥感影像处理与解译》
  4. ArcGIS 决策树官方文档
  5. 完整代码仓库:GitHub 示例项目
正文完
 0
评论(没有评论)