
简介面向遥感入门者与GIS开发者的Landsat影像分类实践包以Python脚本配合真实TIF样例数据演示监督分类的完整流程包括辐射校正、大气校正、几何校正等预处理思路以及光谱特征构造、模型训练与混淆矩阵评估环节适合用来搭建可复用的遥感分类基线也能改写用于土地覆盖或热红外专题制图。压缩包共4个文件包含Python分类脚本、TIF样例影像、金字塔文件与元数据整体约7.76MB结构精简易读便于快速定位脚本、样例数据和辅助文件。分类脚本按传统机器学习流程组织便于替换为SVM、随机森林或CNN等模型同时可熟悉开源的栅格读写与图像处理方式利用样例数据快速验证不同算法效果。目前已有1113人学习浏览特别适合做课程设计、毕业设计或刚接触Landsat数据的开发者据此理解遥感图像分类原理并获得可直接扩展的代码框架。 你花了大半天从USGS或者地理空间数据云端下载了一景Landsat影像解压出来一个多GB的tif兴冲冲拖进ArcMap或者ENVI里结果屏幕上一片灰暗甚至黑乎乎啥也看不清。这套流程我见过太多次了数据本身没坏是大多数刚接触遥感分类的人都卡在了同一步从拿到影像到做出分类图中间还隔着预处理、特征构建、样本准备和算法选择一连串工序。这篇就把这串工序拆开讲透覆盖Landsat的波段结构、分类前必须走的处理流程、主流分类算法的选型逻辑以及tif文件在日常使用里的高频问题——文件太大怎么优化、arcmap如何导出tif边界、CASS加载tif之后又该怎么往下做。无论你是遥感专业的学生还是做土地利用调查、测绘矢量化、林业农业监测的从业者这套思路都能直接复用。1. Landsat影像里到底装了什么1.1 一景Landsat 8影像的波段构成Landsat系列是目前使用频率最高的中分辨率遥感数据源。Landsat 8和9上面搭载的OLI陆地成像仪有9个波段再加上TIRS热红外传感器的两个波段一共11个波段。多数波段空间分辨率30米全色波段15米热红外原始分辨率100米官方产品会重采样到30米发布。30米这个分辨率很有意思——它能清楚分出一片几十亩的农田、一个城市街区、一片林场又不会像高分辨率影像那样数据量大到难以处理所以做中小尺度的资源调查和分类制图特别合适。各波段的实际用途差别很大拿到数据后先看看波段表心里有个数波段号名称波长范围(µm)空间分辨率(m)最常干什么1海岸气溶胶0.43-0.4530海岸带监测、辅助大气校正2蓝光0.45-0.5130水体判别、部分植被参数3绿光0.53-0.5930健康植被反射峰所在4红光0.64-0.6730植被强吸收、土壤背景区分5近红外0.85-0.8830植被高反射、水体强吸收6短波红外11.57-1.6530土壤湿度、植被含水量7短波红外22.11-2.2930矿物识别、地质岩性8全色0.50-0.6815全色锐化提高视觉效果9卷云1.36-1.3830高空薄云检测10/11热红外10.6-12.51100地表温度、热异常波段表的重点不是背名字而是理解不同地物在不同波段的光谱反射特性不一样。水体在近红外波段几乎全吸收植被在近红外波段反射率特别高建筑和裸土在短波红外波段差异明显。分类算法本质上就是在利用这些光谱差异把像元归到不同类别里去。1.2 波段组合怎么选打开影像后第一个问题往往是红绿蓝三个通道放哪几个波段。没有标准答案看目的选真彩色合成R4、G3、B2接近人眼看到的颜色做目视解译、和实地照片对照时最友好。标准假彩色R5、G4、B3植被显示成红色水体发黑裸地偏灰绿对植被分类和找水体非常管用这是遥感分类里最常用的组合。农业分析组合R6、G5、B4可以更好地区分不同作物的长势差异。地质岩性组合R7、G6、B4对岩石、矿物差异更敏感。波段组合会影响你看得清不清楚但不会直接决定分类结果好坏。真正的分类特征是后面要说的波段数值和指数特征。1.3 下载渠道和选图原则下载Landsat数据的主流渠道有三个USGS EarthExplorer全球最早发布数据最全、国内的如地理空间数据云下载速度快适合国内用户、以及Google Earth Engine不用下载云端直接算适合大范围批量分类和时序分析。前两个适合拿数据到本地处理GEE适合跑大范围分类、算指数各有各的用处。选图时有几个硬指标要卡。云量尽量低于10%云和云影是分类里最头疼的噪声源要选目标地物特征最明显的季节比如做耕地分类就选作物生长旺盛期的影像同一批研究尽量选同一季节、相近时相的数据避免物候差异干扰分类结果。另外想用地形辅助分类的话SRTM和ASTER GDEM的DEM数据也是tif格式同样能从这几个平台免费拿到提取坡度、坡向作为分类特征对山区分类效果提升明显。2. 做分类前必须走完的预处理和特征构建2.1 辐射定标与大气校正不做分类结果可能是虚的卫星传感器记录的是DN值像元亮度值它受太阳高度角、大气散射、传感器响应等多种因素影响。DN值本身不能直接用来比较不同时间、不同区域的地物所以要先做辐射定标把DN值转换成大气表观反射率TOA再用大气校正模型把大气影响去掉得到真实的地表反射率。常用的大气校正工具包括ENVI的FLAASH、6S模型、ERDAS的ATCOR等。这个道理可以打个比方你隔着家里一块落灰的玻璃往外看颜色和亮度都变了大气校正就是把玻璃擦干净。至于几何校正L1级别产品已经做过系统几何校正区域不大、只做一期分类可以直接用但如果要做多期影像叠加比较或变化检测强烈建议做几何精校正把位置误差控制在一个像元以内不然后面矢栅转换和精度对比都会出问题。实操上有个捷径USGS提供的Landsat Collection 2 Level-2产品已经是地表反射率了下载时直接选这类产品就能跳过辐射定标和大气校正两步省下不少时间。2.2 波段组合与指数特征让地物差别显形分类时除了原始波段还可以叠加一些经过计算的指数特征。最常用的是NDVI归一化植被指数公式是(NIR-Red)/(NIRRed)取值范围-1到1。健康的绿色植被通常大于0.3水体是负值裸土接近0区分植被和非植被特别好用。在ArcGIS栅格计算器里算NDVI要小心一个大坑Landsat波段是16位整型直接用(B5-B4)/(B5B4)计算整型除以整型结果会被截断成0或1之类的整数算出来全是错的。正确写法是先转浮点Float(B5 - B4) / Float(B5 B4)如果你的tif是多波段合在一个文件里先用提取波段工具分离出单波段或者用图层路径加波段名的方式引用总之要先确认引用的是单波段数据。其他常用指数还有NDWI水体指数、SAVI土壤调节植被指数等。把原始波段、NDVI、DEM坡度坡向叠加成特征集分类精度往往比只用原始波段高一截。2.3 训练样本怎么采集才算合格监督分类的核心是训练样本样本质量决定分类精度的上限。每类样本至少要有30到50个多边形总像元数尽量覆盖该类光谱的丰富程度样本位置要均匀分布在整个研究区不能全堆在一个角落。这一点我强调过很多次平地的样本、山区的样本、阴坡阳坡的样本光谱特征差异很大样本覆盖不全会让分类器学会猜而不是认。选样本时要刻意避开地物边界。一个30米像元往往混合了多种地物落在农田和林地边界上的像元代表不了任何一类。样本类别也要分得开比如水田和旱地的光谱特征接近如果这两类都很重要就需要多时相数据或更多样本辅助区分。专业软件里都有样本可分离性分析转换散度大于1.9说明样本质量很好低于1.5基本就得重新选样本。2.4 分类算法对比与选型逻辑遥感影像分类算法现在选择很广从经典统计分类到深度学习都有。几种主流算法的适用场景整理如下算法核心思路优势局限适用场景最大似然基于概率分布判别原理简单、训练快假设光谱正态分布小区域、类别少支持向量机找最大间隔分类超平面小样本下表现稳定调参较繁琐样本有限、类别不平衡随机森林集成多棵决策树投票抗过拟合、可分析特征重要性计算量稍大多特征、多类别深度学习自动学习深层特征精度上限高样本和算力要求高大范围、复杂场景选型逻辑很实际样本量不大每类几十个样本时SVM往往比最大似然更稳加了NDVI、DEM好几个辅助特征时随机森林能自动判断特征重要性省去人工筛选的麻烦追求极致精度且样本充足可以上深度学习但数据准备和训练成本要心里有数。如果只是想快速出一张宏观类别图非监督分类ISODATA、K-Means也能跑个大概只是类别和真实地物的对应关系需要人工判读。2.5 分类后处理与精度验证分类后的原始结果通常有椒盐效应——大量孤立小像元散落各处。先做去噪多数软件提供Majority/Minority分析用邻域众数替换中心像元再用聚类Clump把相邻同类合并最后用筛除Sieve去掉面积小于阈值的图斑。这套流程走完图面会干净不少。精度验证不能省也不该只凭目视感觉说看起来差不多。常规做法是分层随机采样生成验证点每类至少50个点与参考数据高清影像或实地调查对比构建混淆矩阵。总体精度OA是正确分类样本数除以总样本数Kappa系数是排除了随机一致性的更严格指标一般0.8以上认为分类结果可靠0.6到0.8算基本可用。精度验证的样本必须和训练样本分开否则验证结果虚高——这一点踩过坑的人都懂。3. tif文件实操大文件优化、边界导出与CASS加载3.1 GeoTIFF为什么动辄几个GBGeoTIFF就是在标准TIFF基础上加了地理坐标和投影信息的影像格式。Landsat 8一景覆盖约185公里乘180公里范围单波段像元数约7700乘760016位整型存储单波段约118MB一景11个波段不压缩就是1.3GB左右。这还只是原始数据叠加上金字塔、中间文件磁盘占用会进一步上涨。理解了文件为什么大处理思路就清楚了压缩、分块、建金字塔、裁剪四招组合使用。3.2 大tif文件的三级优化方案第一级是压缩。在ArcGIS里用Copy Raster工具压缩类型选LZW无损能把数据压到原来的一半左右。用GDAL命令行更灵活可以直接把原始tif转成LZW压缩且分块存储的格式gdal_translate -co COMPRESSLZW -co TILEDYES -co BIGTIFFYES input.tif output.tif gdaladdo -r average output.tif 2 4 8 16 32 64TILEDYES让数据按块存储而非按行存储读取速度明显提升BIGTIFFYES是为了避免文件超过4GB时的兼容性问题。第二行gdaladdo是构建金字塔也就是影像概视图缩放到全图显示时不再直接读取原始像元速度快很多这个操作对几十GB的影像效果尤其明显。第二级是裁剪。很多人做分类时习惯整景处理其实研究区只有几百平方公里的话先按掩膜提取裁剪出来再操作计算时间能省掉一大半。ArcGIS里的Extract by Mask和QGIS里的裁剪栅格都能干这个事。第三级是换更高效的浏览工具。ArcMap打开1GB以上未压缩tif刷新一次等半天。做数据预览用Global Mapper或者QGIS会流畅得多确认数据没问题再进正式处理流程。3.3 arcmap把tif数据边界导出成矢量把tif的数据边界导出来这个需求很常见比如要把影像范围作为工作区边界、和别的图层做叠加分析时需要一个范围面。最通用的是栅格转面方法在栅格计算器里先把有效数据区统一赋值SetNull(IsNull(影像), 1)得到只有1和NoData的栅格。ArcToolbox → 转换工具 → 由栅格转出 → 栅格转面。把面要素导出成shp或进gdb再按实际需要编辑。如果只是想得到一个外接矩形范围还有更快的办法右键图层属性 → 源 → 范围直接读出四角坐标在编辑工具里按坐标画一个矩形。安装了3D Analyst扩展模块的话可以用栅格范围Raster Domain工具一键生成范围面一步到位。3.4 CASS加载tif后的数据处理流程CASS是测绘行业常用的矢量成图软件基于AutoCAD平台开发。很多人拿到无人机或卫星的tif影像后喜欢在CASS里直接做要素采集流程不复杂但有一个关键步骤不能跳过——配准。操作步骤如下打开CASS通过工具 → 光栅图像 → 插入图像把tif加载进来接着做配准在影像上选一个已知控制点比如公里网交叉点、房屋角点、已知坐标的控制桩输入对应的真实坐标至少选3个点最好均匀分布在影像的四角和中心不要挤在一小块区域配准完成后设置绘图比例尺常用的1:500、1:1000就可以开始在影像上采集地物了。CASS的矢量采集优势在于它内置了完整的图式编码体系画房子、道路、水系时会自动放到对应图层并写入编码不需要像AutoCAD那样手动整理图层。这里强调两点一是如果加载的影像本身有几何变形比如无人机原始影像没做过校正配准残差会非常大这时候做出来的矢量坐标不可靠正确做法是先在外业或专业遥感软件里做正射校正再交给CASS矢量化二是配准点残差最好控制在影像分辨率的二分之一以内把它当硬指标别凭感觉。4. 遥感分类项目里的实战避坑清单4.1 数据阶段最容易翻车的几个地方坐标系统不统一是我见过最多的低级错误。Landsat原始数据是WGS84地理坐标DEM可能是UTM投影别的辅助数据又用了国家2000坐标系或地方坐标系。分类前一定把所有数据转换到同一个坐标系推荐统一到投影坐标系这样后续输出面积、距离才可以直接用不至于算完再返工。云量和条带问题也常被忽略。Landsat 7 ETM自2003年扫描行校正器失效后影像出现黑色条带虽然有一些去条带的方法但精度有限能避开就避开。云影同样不能小看云覆盖区域的分类结果基本不可用就算选图时选了低云量影像边缘薄云和云影也要在后处理阶段单独标记和修正。4.2 文件管理和软件操作层面的坑文件路径不要用中文也不要用特殊符号。很多遥感工具基于GDAL老版本封装对非ASCII路径支持一直不好报错时排查半天最后发现只是路径问题。工作空间尽量用英文命名分级文件夹inputs、outputs、samples各放各的分类结果带上日期和版本号。这些细节看着琐碎项目周期长、文件版本多的时候能省不少事。栅格计算器整型除法的坑前面提过这里再强调一次任何涉及比值的运算先转Float再计算。这算是遥感数据处理的经典雷区不算NDVI可能还好算NDWI、EVI的各种指数时特别容易中招。4.3 分类结果转矢量的制图陷阱分类结果转矢量后小图斑会以密集碎面的形式出现直接出图的话整个图面像马赛克。正确顺序是先做聚类合并和筛除再转矢量转完之后在ArcGIS里做一次融合Dissolve按类别字段合并相邻同类要素图面会干净很多。出图配色也要注意类别多的时候颜色方案要有足够区分度同时考虑色弱人群的可读性。4.4 几个提升效率的小技巧用QGIS或Global Mapper预览大tif比ArcMap流畅得多确认数据没问题再进正式处理。批处理时优先用GDAL命令行或Python脚本不要手动逐个执行工具脚本跑完还能留下可复现的记录。DEM数据tif格式下载后先检查范围、坐标系和NoData值很多地形分析问题都出在NoData没处理好。最后再多说一句我在不少项目里见过同样的问题——算法从最大似然换成深度学习精度就是上不去回头一查全是样本或预处理埋下的雷。遥感分类这件事算法最多占三成数据和样本准备占七成。把波段结构摸清楚预处理做规范样本选扎实哪怕只用随机森林甚至最大似然也能做出一个能落地、能交付的分类结果。本文还有配套的精品资源点击获取