ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

ArcGIS遥感影像处理全流程:从坐标统一到NDVI与矢量化实战

ArcGIS遥感影像处理全流程:从坐标统一到NDVI与矢量化实战 干GIS这行的人十个里有八个第一次碰ArcGIS都是为了处理遥感影像。我自己第一次用ArcGIS遥感影像处理流程走通完整项目还是10.2那时候完全不懂流程拿到影像就开裁结果投影对不上、波段选错返工了整整三天。后来带团队带新人才慢慢总结出这套流程其实有一条很清晰的主线——数据检查、坐标统一、影像预处理、指数计算、矢量化、拓扑检查和成果出图每一步都有它存在的理由。这篇就把我这些年跑过N个项目后沉淀下来的流程完整写一遍适合刚入门的学生、想系统梳理的GIS从业者以及被领导临时丢来一个影像处理任务的非专业同事。读完你会知道每一步为什么这么做、参数该怎么选、哪些坑绝对不能踩。我先声明一点这篇不堆教科书理论重点是我在项目里怎么操作、选择背后的逻辑以及踩过的坑。ArcGIS版本上我会兼顾ArcMap 10.x和ArcGIS Pro因为老项目很多还在用10.2、10.8新项目又大多切到Pro了两边我都说。1. 拿到影像别急着处理先做数据检查与坐标系统一1.1 三分钟检查影像的“底细”很多人打开ArcGIS后第一件事就是拖影像进来看到图上出花了就开始裁剪、矢量化这个顺序是错的。影像能不能用、要不要先做预处理完全取决于你手上这份数据的底细。我一般会花三分钟做四件事右键图层属性看“源”选项卡检查格式、波段数、像元深度、金字塔和空间参考。第一是格式。常见的有TIFF/GeoTIFF、IMG、JPEG、ENVI格式等。GeoTIFF带坐标信息JPEG一般不带。如果影像没有内嵌地理参考你后面做任何配准和叠加都会非常痛苦。第二是金字塔和统计信息。影像打开慢、缩放卡百分之七八十是因为没有构建金字塔。在ArcCatalog或Pro的目录里右键影像选“构建金字塔”用默认参数构建就行。统计信息缺失也会出问题典型表现是影像显示全黑或全白尤其是做拉伸渲染时。解决办法是用“计算统计信息”工具Calculate Statistics先算一遍再切到拉伸显示。第三是波段数。全色影像通常只有1个波段分辨率高但没颜色信息多光谱影像有3~8个波段做NDVI、土地利用分类都靠它。你要是拿着全色影像去算NDVI纯属南辕北辙因为近红外波段人家根本没采集。第四是空间参考。在“源”选项卡里直接看“空间参考”那行。这一项如果显示Unknown就说明影像没有任何坐标系信息。项目里我见过太多人拿着没有空间参考的影像直接裁、直接叠最后坐标对不上才开始查原因。建议养成习惯任何影像进项目第一件事就是确认空间参考没有就赶紧处理。提示在ArcMap里右键图层属性查看“源”选项卡是最快的检查方式ArcGIS Pro则在“影像属性”窗口里看。批量检查可以用“描述”工具或数据管理工具箱里的“获取栅格属性”来批量跑。1.2 坐标系统一定义投影和投影栅格不是一回事坐标系统一是新手最容易理解错的一步因为ArcGIS里有两个长得非常像的工具Define Projection定义投影和Project Raster投影栅格。这两者的差别是本质性的定义投影Define Projection只是给数据“贴一个标签”告诉软件这份数据是什么坐标系但完全不改变数据本身的空间位置。它适用于影像里的坐标信息丢失或者被误写的情况。投影栅格Project Raster会把影像像元重新计算到另一个坐标系下做的是真正的坐标变换会改变每个像元的位置。换句话说你不能用Define Projection去“改”坐标系那样只会把数据弄得更乱。正确做法是先搞清楚影像原本是什么坐标系、目标是什么坐标系然后用Project Raster做投影转换。关于坐标系类型遥感领域最常碰到的两类一类是地理坐标系用经纬度表示比如WGS84、CGCS2000另一类是投影坐标系把地球曲面展开成平面单位是米比如UTM、高斯-克吕格。做面积计算、距离量算、流域提取这类操作必须先把影像转成投影坐标系否则结果毫无意义。举个例子你的研究区经度大约117.5度如果用CGCS2000 3度带带号大概是39带117/3≈39中央经线就是117度。投影参数不能拍脑袋选要通过带号反推中央经线。设置时在Project Raster对话框里输出坐标系选“CGCS2000 / 3-degree Gauss-Kruger CM 117E”重采样方法我建议默认用双线性如果后面要做分类或提取精确像元值用“最近邻”法更保险因为它不会改变原始像元值。注意投影转换会改变影像的像元值和范围吗用“最近邻”重采样不改变像元值但会改变像元大小和位置用“双线性”或“三次卷积”会内插出新的像元值。所以要是后续做NDVI这类指数运算优先用最近邻或双线性不要用三次卷积带出异常值。1.3 影像配准控制点工具的正确打开方式还有一种常见情况你拿到的扫描图、历史影像或者无人机照片没有坐标信息但需要和现有矢量数据叠在一起用。这时候必须做几何配准也就是常说的Georeferencing。ArcMap里操作很直观加载影像后右键工具栏空白处打开Georeferencing工具条选好控制点GC点点击“Add Control Points”在影像上选一个特征点再在目标数据上对应位置点一下反复添加控制点并看残差。控制点数量上至少3个点才能做一阶变换6个点做二阶变换10个点做三阶变换。项目里如果只是把历史影像套到现有地形图上一阶或二阶足够了如果影像畸变严重、地形起伏大三阶才勉强够。要先保证控制点均匀分布在整幅影像的四个角和中心区域不要集中在一小块地方否则会出现“局部很准、四周全歪”的尴尬局面。控制点选点也很有讲究。首选道路交叉口、田埂角、建筑墙角这些稳定的地物拐点避开树林、阴影、水域边缘这些会动或者边界模糊的位置。配准后要看RMS均方根误差我给自己定的标准是控制在0.5个像元以内。10米分辨率影像就是5米内这就够了。配准完还有个关键决定是“更新栅格地理配准”还是“校正”。如果直接关掉工程ArcMap有时候会把配准信息写在辅助文件里容易丢更稳妥的做法是用Georeferencing工具条里的“校正Rectify”功能把配准后的影像另存为一个新文件。这步一定要做别偷懒。2. 影像预处理裁剪、镶嵌与显示优化2.1 影像裁剪的三种方式和适用场景数据检查完、坐标系统一之后才能进入预处理环节。裁剪是预处理里出镜率最高的操作但不同的需求对应不同工具别一上来就只会点Clip。第一种也是最常用的按掩膜提取Extract by Mask。适合你手里有一个矢量边界需要把影像切成这个边界范围的情况。工具位于Spatial Analyst Tools–Extraction–Extract by Mask输入影像和矢量边界输出就是带边界的栅格。这个工具的好处是结果刚好贴合边界不需要额外做掩膜转换。第二种是栅格裁剪Clip。它可以自定义矩形范围也可以选择某个矢量图层作为裁剪范围。很多人不知道Clip对话框底部有个“使用输入要素裁剪几何Use Input Features for Clipping Geometry”选项勾上后输出影像会按矢量边界精确裁剪而不是用矢量范围的矩形外框。如果想保留指定面比如只保留几块特定的地类图斑可以先按属性选择Select By Attributes选出目标面然后在Clip的“输出范围”里选择“所选要素”。第三种是环境设置里的处理范围Processing Extent。这个适合临时性裁剪我只想在当前图层显示范围内做运算又不想真的生成一个裁剪文件。在 ArcToolbox 里打开“环境设置”把处理范围设为“与图层相同”很多工具都会自动只在范围内运算输出结果范围也跟着走。裁剪完后要检查NoData背景。很多初学者裁剪完发现图上有大片黑色或透明区域以为是数据坏了其实是裁剪范围外的像元被设为NoData。处理办法有两个一是显示时在符号系统里设置忽略NoData二是后续做统计和分类时注意NoData不算有效值。如果NoData区影响后续的镶嵌或计算可以用“按掩膜提取”配合一张有效值范围掩膜来消除。实操心得裁剪之前先确认影像和矢量边界的坐标系一致。影像可能是WGS84经纬度矢量是CGCS2000投影米制直接裁出来的范围会完全错位。我处理过的最离谱一次两套数据差了几百公里就是因为坐标系没统一。2.2 镶嵌拼接与色彩一致性调整单景影像通常覆盖不了整个研究区需要把多幅影像拼到一起。ArcMap里对应的工具是“镶嵌到新栅格Mosaic to New Raster”ArcGIS Pro里用“栅格合并Raster Mosaic”更方便。镶嵌前必须检查两个东西波段数是否一致、像元类型是否一致。比如两景影像一景是3波段8位另一景是3波段16位直接拼会报错或出来一块一块的色差。像元类型可以在属性里看不一致时要用“复制栅格Copy Raster”先把像元深度统一再把两景归一。镶嵌方法Mosaic Method的选择也要理解。默认是BLEND渐变重叠区按权重平滑过渡适合大多数场景如果两景影像是同一传感器同一天拍的用FIRST或LAST也可以如果两景影像重叠区差异特别大BLEND容易造出中间色带我一般会先做色彩匹配再选BLEND。如果镶嵌完出现明显色差需要做色彩调整。ArcMap 10.8在Mosaic工具里有“色彩校正”选项支持直方图匹配ArcGIS Pro的“栅格合并”里有更完善的“色彩映射”和“接缝线”功能。操作上先选一幅参考影像用直方图匹配把其他影像向参考影像靠拢再生成接缝线把切割线放在差异最小的地方。接缝线这步很多人忽略但它对成果美观度影响极大尤其在镶嵌林区、农田这类纹理复杂的影像时接缝线位置选不好拼接痕迹一眼就能看出来。镶嵌后的黑边处理也是一个大坑。多幅影像拼完边缘经常出现黑色NoData条带影响出图。可以先把NoData值设为NoData显示或叠加一个矢量边界做掩膜提取把边缘黑边切掉。简单粗暴但很有效。2.3 显示优化黑色影像和拉伸渲染前面提到“影像全黑”其实还有一种常见情况是影像带外扩黑边或者影像本身动态范围集中在很小区域默认显示方式看不出细节。这时候需要用拉伸渲染。在图层属性—符号系统里把显示方式选为“拉伸Stretch”类型选“百分比裁剪”Percent Clip一般用2%~98%或2%~99%的统计范围就能看到非常明显的增强效果。不要选“自定义”然后瞎拉容易出现偏色或死白。如果是单波段灰度影像想用伪彩色显示增强层次感可以在符号系统里选“色带”配色方案逐渐过渡到绿黄红色带这对做NDVI和DEM可视化都非常实用。多波段影像如果主要做目视解译用标准假彩色组合近红外、红、绿三个波段分别对应R、G、B能让植被显示为红色灌丛和林地的区分度比自然色高很多。显示优化不是“面子工程”直接关系到你后面矢量化时能不能看清地物边界。就是这一步做不好很多人就会在一个不清晰的底图上去画线、画图斑结果就是边界靠猜精度完全没法保证。3. 从影像到指标NDVI与植被覆盖度计算3.1 栅格计算器算NDVI公式、波段和避坑点处理完影像重点来了。很多时候我们要的不是一张“图”而是一个可量化的指标NDVI归一化植被指数就是这个领域最常用的一个。NDVI的公式其实很简单NIR和Red波段的差除以它们的和。但在ArcGIS栅格计算器里写公式要小心数据类型如果影像像元值是整型Integer直接做除法的结果会被截断成整数。我见过有人算出NDVI结果只有0和1就是栽在这里。正确写法是NDVI Float(NIR波段 - Red波段) / Float(NIR波段 Red波段)用Float()强制转成浮点型再做除法结果才会落在-1到1之间。具体波段号取决于传感器Landsat 8/9NIR是第5波段Red是第4波段Landsat 5/7NIR是第4波段Red是第3波段Sentinel-2NIR是第8波段10米Red是第4波段高分一号WFVNIR是第4波段Red是第3波段在栅格计算器里波段写法通常是“xxx.tif / Band 4”要看清楚图层列表里的名称再选。算完之后用“识别Identify”工具点几个点再看一下直方图分布。NDVI正常范围应该在-0.2到0.9左右水体是负值或接近0裸土和建筑接近0植被随覆盖程度的增加而增加。如果你的结果全在0到1之间且分布特别极端大概率是波段选错或数据类型问题。注意算NDVI之前务必确认影像已经经过大气校正或者至少是反射率产品。如果是原始DN值直接算结果虽然也能出但不同时相、不同影像之间的NDVI不可比。项目里做时序分析时这个问题尤其致命。3.2 估算植被覆盖度FVC的实操细节NDVI是基础指标但很多项目要求的是植被覆盖度Fractional Vegetation CoverFVC。计算最常用的模型是像元二分模型FVC (NDVI - NDVI_min) / (NDVI_max - NDVI_min)关键在于NDVI_min和NDVI_max怎么确定。理论上它们是纯裸土和纯植被的NDVI值但实际影像里很难找到完全纯净的像元。我的做法是统计整幅影像NDVI的累积频率分布取累积频率2%~5%对应的NDVI作为NDVI_min取95%~98%对应的NDVI作为NDVI_max。这个阈值可以在ArcGIS里通过“栅格分区统计”或“直方图”功能查看也可以用Excel对采样点统计后算出来。栅格计算器里的公式就是FVC (NDVI - 0.1) / (0.8 - 0.1)实际阈值按你统计出来的结果填。算完后结果在0到1之间但有些像元可能小于0或大于1要加一行Con条件函数做限制FVC Con((NDVI - NDVI_min) / (NDVI_max - NDVI_min) 0, 0, Con((NDVI - NDVI_min) / (NDVI_max - NDVI_min) 1, 1, (NDVI - NDVI_min) / (NDVI_max - NDVI_min)))这样输出的覆盖度值域就规整在0~100%后续做分级统计才不会有异常值捣乱。得到FVC栅格后可以按自然间断点分级比如划分成低覆盖度0~0.3、中覆盖度0.3~0.6、高覆盖度0.6~1再转成矢量面计算各级面积比例。这一步在ArcToolbox里用“重分类”和“栅格转面”就能完成转出来再按各级做面积统计一张标准的植被覆盖度专题图就出来了。3.3 NDVI与FVC成果的后续应用NDVI和FVC不是算完就完了很多项目需要把它们作为输入变量继续分析。举例说做生态质量评价时会用FVC作为绿色度指标做土地利用变化时会用NDVI的时间序列来判断植被退化趋势。这些应用都建立在NDVI结果可靠的基础上。另外一个容易被忽略的点是NDVI或FVC这种栅格成果交付时最好附带一个简短的元数据说明包括影像原始时相、分辨率、坐标系、计算公式和阈值。我见过不少项目在验收阶段被专家问“你这个覆盖度阈值怎么来的”回答不上来就很尴尬。4. 矢量化与专题应用实战4.1 DEM水文分析提取流域边界流域边界提取是遥感影像处理里一个典型的专题应用和NDVI一样它依赖的不是光学影像而是DEM数据。ArcGIS里的水文分析模块Spatial Analyst Tools–Hydrology把这套流程做得非常标准化。第一步填洼Fill。DEM数据里总会有一些坑洼陷坑这些凹陷会导致水流无法正常汇流。填洼阈值默认即可但如果你的DEM在河谷、道路桥涵区域有大量凹陷可能需要设定一个限制阈值避免把真实地形也填平。填洼前先看DEM范围填完之后对比一下统计值变化太大说明原始DEM质量有问题。第二步流向Flow Direction。基于填洼后的DEM用D8算法计算每个像元的水流方向。这是后续分析的基础参数默认就行。第三步流量Flow Accumulation。统计每个像元上游有多少个像元汇流过来。流量值越大说明这个位置越可能是河道。提取河网时流量阈值设置很关键阈值设小河网密集支流多设大河网稀疏只保留干流。我一般先跑一遍看结果再对照影像微调。一般1000到5000之间试几次多数情况能找到一个合适值。第四步用“栅格计算器”或者“地图代数”把流量大于阈值的像元提取为1其余为NoData得到的栅格就是河网。接下来“河流链接Stream Link”和“分水岭Watershed”两个工具可以逐条河流提取集水区。如果只要一个完整流域就先设定一个出水口用“浇灌Snap Pour Point”把出水口捕捉到流量最大像元上再执行Watershed。最后把流域栅格转成矢量面Raster to Polygon加上边界平滑Simplify Polygon工具一张流域边界图就完成了。这里有个硬性要求DEM必须是投影坐标系否则流量、面积、阈值全是错的。4.2 CAD数据转SHP与拓扑关系检查遥感影像处理的项目通常不只产生栅格成果还会大量涉及矢量数据。最常跨界的场景之一是把CAD数据转成SHP或地理数据库要素类。ArcMap里直接打开CAD文件会在图层里出现点、线、面、注记等要素类。但直接打开的CAD是只读的没法编辑和做拓扑因此要先转成要素类。ARC工具箱里有“CAD to Geodatabase”工具把CAD文件导入到要素数据集或要素类中。导入后要注意CAD里很多需要用到的属性存在扩展数据里比如图层名、颜色、线型默认不会带进SHP属性表。如果有“按属性筛选”的需求用“CAD要素批量導入”或者FME会更省力。CAD文字乱码问题也特别常见。导入后中文注记显示为乱码绝大多数原因是CAD字体文件和ArcGIS的字体映射不一致。可以做两件事一是检查CAD里的文字样式尽量用常用字体比如宋体、黑体二是在ArcMap里调整符号系统的字体设置或者在导入后把注记转换为ArcGIS标注再修改字体。如果是导出CAD时产生乱码则在CAD工具里设置“FONTALT”等参数来匹配字体。拓扑关系检查是交付前必须做的一步。建立拓扑的前提是数据要在同一个要素数据集Feature Dataset里方法是先在Catalog里新建一个要素数据集设置好坐标系然后把要素类导入进去右键选“新建拓扑”。拓扑规则根据项目需要选面要素不能重叠Must Not Overlap——地类图斑必须满足面要素不能有缝隙Must Not Have Gaps——行政区边界、地类图斑必须满足线要素不能压盖Must Not Overlap——道路边线、宗地边界常用端点必须被其他要素覆盖Endpoint Must Be Covered By——河流交汇常用这里就对应了日常说的“不要压盖线”“不要有缝隙”。运行拓扑后ArcMap会生成错误点通过“错误检查器”逐条修复。修复方式有“合并”“裁剪”“创建要素”等具体看错误类型。检查尖锐角尖角虽然ArcGIS没有直接内置的“尖锐角检查”工具但可以通过拓扑或空间SQL实现。更省事的做法是安装社区开发的“尖锐角检查”插件Add-In。如果不想用插件也可以用地类转折点角度计算把线转成折点、计算相邻线段夹角小于设定阈值比如15度的标记为尖锐角再人工去核实。虽然方法土但很稳尤其在质检环节非常好用。概化工具Simplify Polygon也在矢量处理中经常用到。地类边界线太过细碎用“概化”工具可以保持几何形状的前提下减少节点数量出图更清爽。但概化阈值别设太大否则边界变形严重反而产生拓扑错误。我习惯阈值设为像元分辨率的0.5~1倍然后跑一遍拓扑再修一遍错误。4.3 叠加在线底图与天地图调用矢量成果总得有个底图来衬托。ArcMap和ArcGIS Pro都支持调用在线地图服务在国内最受用的当属天地图。天地图是国家地理信息公共服务平台坐标基准是CGCS2000数据合规且免费申请Key即可用。ArcGIS Pro里调用天地图很简单搜索“天地图”在线服务或直接添加WMTS服务器URL填入天地图官方发布的地址然后在“参数”里填入申请的Key。ArcMap 10.x也可以用“添加WMTS服务器”的方式加载。申请Key的时候选择“浏览器端”类型直接把Key填到URL里就能用。有个坑要注意天地图不同层级是不同比例尺叠加大比例尺矢量图时底图可能因为加载层级不够而模糊。解决办法是设置底图的显示比例范围或者在出图时把在线底图换成离线底图数据。在线底图始终是辅助最终成果要尽量避免依赖在线服务否则换个环境演示就“白屏”。之前网上还有人问“arcgis如何导入在线地图”除了天地图OpenStreetMap和Esri自带底图服务都能直接加。但国内做项目合规和安全考量首选还是天地图。5. 高频问题排查与排错经验实录5.1 数据显示和字段格式问题做GIS这么久被问得最多的其实是各种“看起来小但很费时”的问题。我把高频的整理成一个速查表你遇到类似情况直接照着查问题现象主要原因解决思路字段里0.5显示成.5数字格式设置问题在字段属性/标注属性里设置数字格式保留整数位导入CAD文字乱码字体映射缺失或不一致调整CAD字体或转注记后修改字体打开影像全黑/全白拉伸显示没设好或统计信息缺失符号系统选拉伸2%~98%百分比裁剪并计算统计信息影像放大模糊拖拽卡顿金字塔缺失构建金字塔图层位置整体偏移坐标系不一致或定义投影错误检查坐标信息重新投影或做地理配准字段小数点前不显示0这个问题特别坑。很多人在属性表里看值是“0.56”很正常但一标到图上就变成“.56”看着就别扭。解决办法是右键图层属性进入“标注”选项卡点“符号”后面的“符号”按钮再进入“格式”设置在“数字”里设成显示两位小数带前导零。这属于纯显示设置不会改动实际字段值。5.2 安装、License与工具箱运行问题ArcGIS的安装问题常年是搜索热点尤其是10.2、10.8的安装教程和License Server无法启动。说句实在话如果是个人学习和项目需要我建议直接上ArcGIS Pro或者新一点的10.8版本太老容易和Windows系统、杀毒软件打架。“License Server点击启动没反应”的排查顺序我一般是这样先看系统服务里有没有ArcGIS License Manager服务确认服务已启动再检查安装目录和许可文件的路径是否包含中文最后看防火墙有没有拦截8600端口。大多数情况是杀毒软件把服务禁了或者许可文件没放对位置和软件本身没关系。新装的ArcGIS服务无法启动十之八九是端口被占用或授权过期。命令行试一下netstat -ano | findstr 8600找到占用进程关掉或换端口。如果授权有问题重新执行LicenseServerAdministrator里的“重新读取许可”命令即可。还有一个常见问题是“工具箱工具运行到一半报错”。这大概率是输入数据的路径问题、输出路径没权限、或环境设置里临时目录空间不足。建议把工程文件和输出路径都放在纯英文目录下路径别带空格和中文能避开90%的奇奇怪怪报错。5.3 制图输出与成果交付问题制图输出环节的坑也不比分析少。“地类符号太密了怎么办”这个问题非常典型图斑小、符号多整个图面看上去一片黑。解决思路有几个一是调整符号的显示比例范围。在图层属性的“常规”选项卡里设置“比例范围”——低于某个比例尺就不显示符号只在放大到一定程度才显示。二是简化符号本身比如把填充图案改成纯色填充加细边框。三是用标注代替符号设置标注权重、最小显示尺寸关键图斑才显示。图例名称要改成符合项目要求的叫法不要直接显示字段值。右键图层属性—符号系统—双击要改的图例项在“标注”里填新名称即可。“转CAD后地类没有”这个问题也很有代表性。SHP转CAD时面填充符号比如地类花纹没法转成CAD的填充样式转到CAD后看起来就是空壳子。如果必须转有几个土办法一是用CAD的“填充”命令重新填充二是在ArcGIS里把符号系统用颜色纯色表示转出去至少面还在三是给面要素加一个“类型”字段CAD里按字段分层分色。制图完成后输出图片分辨率要按用途选。打印用选300 DPI以上屏幕分享用150 DPI就可以了。输出PDF时一定要选“矢量化”选项不然图上的线划字体会糊掉。关于ArcGIS API for JS部署、Add-In开发这类偏二次开发的问题我这里只说一句如果不是要做WebGIS系统这些不需要深究。遥感影像处理的核心还是数据整理、分析和成果表达工具链再花哨也是为这个服务的。最后分享一个我自己的经验。干这行这么多年真心觉得ArcGIS遥感影像处理流程本身不复杂真正让新手崩溃的是每一步之间的衔接。坐标没统一后面算什么都没意义波段没分清NDVI就是错的拓扑没建好出图就被质检打回。所以比起只学单个工具我更建议你先把整条线完整走一遍。我们团队现在有个土办法新项目启动先建三个文件夹——原始数据、中间过程、最终成果文件名统一按“日期_区域_坐标系_用途”命名比如20250315_某区_CGCS2000_NDVI.tif。这套命名规范帮我省了无数找数据、对版本的麻烦推荐你也试试。
返回列表