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
评论(没有评论)