拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

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

ArcGIS读取DEM/IMG数据全流程:从格式识别到预处理避坑指南

ArcGIS读取DEM/IMG数据全流程:从格式识别到预处理避坑指南 最近在做地形分析手头刚好拿到一批DEM数据文件后缀是.img。说到.img很多刚接触ArcGIS的朋友第一反应是“这不是光盘镜像文件吗”但在GIS里.img是Erdas Imagine的栅格格式里面装的很可能就是一个数字高程模型DEM。这个DEM记录了每个像元的高程值是坡度、坡向、等高线、流域分析等等所有地形相关操作的底子。这篇不是什么高深教程就是我个人处理Arcgis读取DEM/IMG数据的学习记录把从拿到文件、确认格式、加载到ArcMap里、再到正确显示和后续预处理的完整过程捋一遍顺便把容易踩的坑都列清楚。适合刚接触GIS、准备做地形分析或者遥感数据处理的朋友参考。1. 内容整体设计与思路拆解1.1 DEM和IMG到底是什么为什么总是一起出现DEMDigital Elevation Model说白了就是一个栅格文件每个像元存一个高程值。你把它想象成一张灰度图亮的地方海拔高、暗的地方海拔低这张“灰度图”的每一个格子都对应地面的一个真实位置和海拔这就是DEM。它是地学研究里最基础的数据之一坡度、坡向、山体阴影、等高线、汇水区、可视域分析全都从它派生。而IMG是Erdas Imagine软件定义的一种栅格格式在遥感测绘行业用得极其频繁。很多专业遥感软件如ERDAS、PCI、ENVI默认就把数据存成IMG数据供应商也大量使用IMG来交付DEM成果特别是较高分辨率的DSM/DEM产品。所以你只要在这个行业里接触地形数据一定会遇到“一个.img文件和DEM数据绑定在一起”的情况。ArcGIS对IMG的支持是原生的这一点比某些其他GIS软件要省心。你不需要额外装插件ArcMap和ArcGIS Pro都能直接打开。但原生支持不代表永远不会出问题我实际用下来发现IMG文件能不能顺利读取很多时候取决于它的内部结构——有没有金字塔、有没有坐标信息、有没有压缩、是不是包含多个波段。所以读IMG之前最好先对数据本身做个了解后面出乱子的概率会小很多。1.2 拿到DEM数据之后最该先确认的三件事我每次拿到一个新的DEM/IMG文件不会立刻双击往地图里塞。先花三十秒看三件事格式、坐标、值域。第一格式对不对。确认后缀是不是.img如果不是.img是.rrd或者无后缀那要检查是不是文件缺失或者目录路径带中文或空格导致识别异常。第二坐标信息。右键属性或者用ArcCatalog看“空间参考”如果显示“未知”那这个数据后面做面积、坡度、叠加分析时会非常麻烦。第三值域和NoData。看栅格统计里的最小值和最大值如果高程范围明显不合理比如一块山区DEM最小值为0那大概率里面有无效值或者背景值没设置好。这三件事看着不起眼但能帮你避开后面80%的坑。尤其是NoData没处理干净的话后面生成等高线会断做坡度分析会出现负值填洼的时候报错各种莫名其妙的问题全都来。数据到手先检查这是做GIS最基本的职业习惯。1.3 为什么“读取”这一步值得专门写一篇很多人觉得“读取”不就是把文件拖进软件吗真不是。读取这个动作背后涉及栅格格式解析、金字塔创建、拉伸方式渲染、坐标系识别、数据范围计算等一系列机制。同一份DEM/img在不同软件版本、不同加载方式下结果可能完全不一样。我见过不少人在ArcGIS里把IMG拖进去以后画面上要么全黑要么花花绿绿完全不是地形该有的样子然后就开始怀疑数据坏了。其实数据没坏只是拉伸方式不对或者数据范围太大还没建金字塔又或者是加载时没注意坐标系警告。这个“读取”环节恰恰是新手最容易摔跤的地方也是最值得系统捋一遍的地方。所以我这篇记录的核心思路很直接把一次完整的“拿到DEM/IMG数据→顺利读取→正确显示→完成基础预处理”的过程拆开讲每一步都说明为什么这么做踩过的坑也一并交代。不管你是学生还是刚转行做GIS分析按这个流程走一遍至少能保证数据读进来不再翻车。2. 读取前的准备工作与数据源选择2.1 高分辨率DEM数据从哪里来在讲读取操作之前先说说DEM/IMG数据一般哪里来。因为这个话题我反复被问很多初学者卡在第一关不知道去哪里下载靠谱的DEM。公开的数据源里最常用的几个是地理空间数据云国内访问快提供ASTER GDEM 30米、SRTM 90米/30米等数据选好范围就能下载默认下载的常是IMG或TIFF格式。USGS EarthExplorer数据最全SRTM、ALOS PALSAR、Lidar衍生的DEM都能找到注册后可下载速度看网络情况。OpenTopography主打激光雷达数据可以自己设定范围下单输出高分辨率DEM很多国外的高精度DEM都从这来。国家地理信息公共服务平台和相关省市数据服务部分地区提供更高精度的成果数据但使用要遵守数据授权协议。下载时重点看三个指标分辨率30米还是12.5米、坐标系WGS84地理坐标还是UTM投影坐标、数据版本ASTER GDEM有V2/V3版SRTM也有多个版本。有些平台下载下来的DEM文件名带了一串乱码不细看后缀根本不知道是IMG。我一般下载完会先统一放在一个英文路径的文件夹里文件名改成“研究区_分辨率_来源”这种格式避免后面工程路径出错。2.2 常见栅格格式对比IMG、TIFF、GRID读IMG之前心里最好有个格式图谱。GIS里常见的栅格格式就那几种我整理了一个简单的对照表格式开发者特点常见场景IMGERDAS支持金字塔和压缩历史包袱重但行业认可度高遥感影像、DEM、DSM交付TIFF/GeoTIFF通用通用性最好几乎全行业支持坐标信息写在文件头或tfw里数据交换、发布服务、科研GRIDESRIArcGIS原生格式没有独立文件存在文件地理数据库中本地分析、中间结果ASC/ASCII通用纯文本可读性好但体积巨大简单数据交换、写脚本测试CRFEsri云栅格格式适合大数据和分布式处理大规模影像分析为什么很多DEM是IMG一个是历史习惯遥感行业早期ERDAS太流行大量成果数据以IMG形式沉淀下来另一个是IMG格式本身支持内嵌金字塔和压缩处理大范围影像时性能不错。ArcGIS虽然原生支持IMG但在有些精简安装里缺少对应的栅格驱动或者版本太老对新型压缩算法兼容不好就可能导致读取失败。真遇到这种情况我一般的处理办法是用Data Interoperability扩展工具转一下格式或者直接找供应商要TIFF版本速度更快。2.3 软件版本与环境准备ArcGIS的版本直接影响读取体验。我用过ArcMap 10.2、10.8和ArcGIS Pro 3.x感受差别挺大。ArcMap 10.x是经典桌面软件很多人还在用加载IMG一般没问题但大文件响应慢UI缩放有虚拟化问题读取大数据量时容易卡。ArcGIS Pro是新一代软件64位架构多线程渲染打开同样的IMG速度会明显更快推荐的安装方式是在ArcGIS Pro里操作。另外还有ArcGIS Engine适合做二次开发普通分析一般用不到。软件环境上需要留意的是第一尽量用完整安装包别用精简版精简版容易缺栅格格式驱动。第二如果出现打不开某些IMG的情况检查一下是否安装了“数据互操作扩展模块”Data Interoperability这个扩展能极大提升格式兼容性。第三工作目录和源数据目录都不要带中文和特殊符号避免莫名其妙的读取失败。这一点我踩过坑后面会详细说。关于软件的安装与授权我建议使用正规授权渠道。ArcGIS个人版现在也有比较灵活的使用方式学生可以用学校的教育授权。别在安装破解上花太多时间把精力放在数据和分析上更值。3. 核心细节解析与实操要点3.1 在ArcMap中读取IMG的四种姿势读取IMG的方式有好几种每种适用场景不同我一个个说。第一种直接拖拽。在Windows文件夹里选中.img文件直接拖进ArcMap的图层区域。这是最快的办法ArcMap会自动识别并添加。注意如果拖进来以后提示“无法识别的数据源”大概率是文件路径有问题或者扩展名被系统隐藏了实际文件名可能不叫.img。这时候打开“文件资源管理器”的“查看”选项勾选“文件扩展名”再确认一遍。第二种通过“添加数据”按钮。点击工具栏上的黄色加号在“查找范围”里找到文件文件类型选择“所有格式”或“栅格数据集”双击即可添加。这种方式比拖拽更稳定因为它走的是ArcGIS自己的数据识别通道不会因为系统文件关联出错而加载失败。第三种通过ArcCatalog目录树。在ArcCatlog里找到img在预览标签里先看一眼数据信息确认无误后再拖入地图。这个方式最大的好处是能提前看到缩略图和元数据避免加载错误数据。我个人习惯是凡是新数据一律先到ArcCatlog里过一眼再决定加不加进地图。第四种用“复制栅格”工具。如果文件在外部目录读起来总报错最快解决办法是用ArcToolbox里的“数据管理工具→栅格→栅格数据集→复制栅格”把IMG复制到当前项目的文件地理数据库中。复制时可以顺便改坐标系、改波段数、设置金字塔相当于一次导入优化。这是我最推荐的工程化做法因为文件一旦进入GDB后面所有处理都快很多。3.2 读取之后的显示与符号化设置IMG加载成功之后很多人会遇到一个经典问题画面上全黑或者白花花一片根本看不出地形。这通常不是数据问题而是显示拉伸没调好。DEM这类单波段栅格ArcMap默认可能使用“最值拉伸”或“标准差的拉伸”如果数据里有极端值或NoData渲染结果就会变成一团黑。解决办法是右键图层打开“图层属性”切到“符号系统”标签在“拉伸”类型里选择“最值-标准差”同时把“统计”选择为“来自当前显示范围”或“来自数据集”。一般设置成“裁剪百分比拉伸”最小1%、最大99%就能看到非常清晰的地形起伏亮的地方是山脊暗的地方是沟谷。如果还是全黑检查一下“符号系统→显示背景值”选项。有些IMG把无效值设置为0或者-9999地形有效值本身在几百上千米渲染时就等于大片区域被无效值占了。这时候在“显示NoData为”里勾选“透明”或设置为无色问题就解决了。还有一个技巧在“符号系统”里把色带换成适合地形的“高程色带”从浅绿到棕到白不仅好看而且能直观看出高低分布。有个细节必须提拉伸统计如果选择“当前显示范围”当你缩小或放大地图时颜色会随着范围变化而变化这容易给人造成“数据变了”的错觉。如果只做一次出图建议选择“数据集”级别的统计保证不管怎么缩放颜色都稳定。3.3 坐标系统一与投影处理IMD格式本身不强制带坐标信息所以很多第三方给的DEM/IMG文件打开时会弹出“未知空间参考”的警告。这个时候一定要停下来处理不要点个确定就继续干活否则后面所有分析都可能错得离谱。先判断数据本来应该在哪个坐标系里。国产数据通常用WGS84地理坐标系或CGCS2000国外数据则可能是UTM投影。如果你能确定它本来是投影坐标但文件里没写就用“数据管理工具→投影和变换→定义投影”给它补上正确坐标系。如果数据要用于面积计算、坡度坡向、水文分析我强烈建议把地理坐标系DEM转成投影坐标系再用。原因很简单坡度是百分比或度数如果输入数据是经纬度ArcGIS默认把经纬度当平面距离算结果虽然能出但单位完全不对尤其是高纬度地区误差很大。转换时用“数据管理工具→投影和变换→栅格→投影栅格”输出坐标系选适合当地的投影比如国内的常用高斯-克吕格CGCS2000 3 Degree GK Zone或者UTM带号重采样方法选“双线性”或“三次卷积”。这里顺便提醒一下DEM插值重采样的选择直接影响后续地形因子的精度。比如坡度分析用“最近邻”会产生明显锯齿高程值本身用“双线性”平滑一点如果要用做水文分析重采样方式对流向有一点影响但一般双线性、三次卷积差别不大。核心是别默认保持最近邻。坐标系统一这一步是最容易被新手跳过的但它真的是后面一切分析的地基。3.4 批量读取与数据的组织方式实际项目里很少只有一个IMG经常是一大堆分幅的DEM文件。这时候如果一个个拖进地图图层列表会爆炸分析也不好做。我的习惯是先把多个IMG合并成一个整体或者做成镶嵌数据集。合并用“数据管理工具→栅格→栅格数据集→镶嵌至新栅格”把所有DEM统一到同一坐标系、同一像元大小后拼起来输出一个大的IMG或TIFF。如果数据量太大拼接后文件可能几个GB用ArcMap处理会卡这时候建议用“创建镶嵌数据集”Mosaic Dataset它对大数据量的管理效率高得多可以动态镶嵌、按需加载不用真把它们拼成一个文件。另外要提醒的是数据组织方式。建工程时先建一个文件地理数据库File Geodatabase在里面建好几个数据集原始数据、中间数据、最终成果然后把IMG统一导入GDB。这样既避免乱七八糟的路径引用也方便后续的批量处理和共享。工程文件夹的路径不要有中文不要放在桌面或者下载目录尽量放在磁盘根目录下的英文文件夹里比如D:/DEM_Project。这个习惯能帮你省掉很多读取失败的问题。4. 实操过程与核心环节实现4.1 一个完整的上手流程下面我按平时自己操作的顺序写一遍从拿到DEM IMG到正常显示、保存工程文件的全流程。你可以照着走一遍。第一步检查文件。打开文件资源管理器确认IMG文件大小、后缀、所在路径。建议路径全英文比如E:/Data/dem.img。第二步打开ArcCatalog浏览到该文件在“预览”标签页看一下缩略图和范围。如果能看到地形影像说明基本可读如果提示异常则需要换工具或换数据。第三步打开ArcMap或Pro点击“添加数据”按钮找到dem.img双击添加。此时留意地图下方状态栏有没有坐标系警告以及图层面板有没有出现一个带高程值范围的图层。第四步右键图层打开属性在“源”标签页查看“像元大小”“波段数”“空间参考”和“金字塔”。像元大小一般是米或度波段数应该是1空间参考最好不是“未知”。第五步切换到“符号系统”设置拉伸为“最值-标准差”或“裁剪百分比”NoData设为透明。这时候地形应该正常显示了。第六步如果坐标系缺失或错误用“定义投影”修正如果要做面积、坡度分析再“投影栅格”到合适坐标系。第七步保存ArcMap文档.mxd或Pro工程.aprx路径同样保持英文。后续继续处理时直接打开工程文件数据路径就都联好了。整个过程大概十分钟熟手更快。但就是这十分钟能看出一个人处理栅格数据的习惯好不好。别嫌这一步简单很多后期翻车都是因为这一步跳过了哪个环节。4.2 读取后第一时间要做的几个预处理操作数据能正常显示了接下来通常要做几个预处理操作把DEM清理成适合分析的形态。裁剪。研究区往往只是整个IMG的一部分。用“空间分析工具→提取分析→按掩膜提取”输入DEM和矢量边界就能得到研究区的DEM。如果矢量边界是面要素直接用它裁剪如果是点坐标范围可以用“栅格裁剪”工具并勾选“使用输入要素裁剪几何”。裁剪之后的文件记得重新存一个别覆盖原始数据。处理NoData。很多DEM在云覆盖区、水体区会出现空洞直接做后续分析会出问题。可以用“地图代数→栅格计算器”写一个条件语句把NoData替换成周围有效值的插值结果。更简单的办法是用“焦点统计”计算邻域平均值再在栅格计算器里填洞。这一步在水文分析里尤其重要。统一分辨率。如果下载了不同分辨率的DEM拼一起可以用“重采样”工具统一到同一像元大小。注意重采样方法坡度分析用“双线性”优于最近邻但如果是分类数据就不适合插值。标高数据本身建议用“双线性”或“三次卷积”。统一坐标。前面已经说了这里再强调一遍不同数据源的DEM坐标系可能不一致做镶嵌和叠加前一定统一到同一个坐标系。这个顺序不能反先定义投影再重采样再裁剪最后再做派生分析。4.3 从DEM生成常用派生数据数据准备好之后最常做的几个地形分析工具基本都集中在“3D Analyst工具”和“空间分析工具”两个工具箱里。坡度Slope工具路径是“空间分析工具→表面分析→坡度”输入DEM输出坡度和坡向可以设置坡度单位是度还是百分比。这个工具对分辨率敏感像元大小越小坡度细节越丰富但数据量也越大。坡向Aspect和坡度同路径输出每个像元面对的方向北、东北、东等常用于植被分布和太阳辐射分析。山体阴影Hillshade工具路径同上需要设置太阳高度角和方位角默认是315度方位、45度高度做可视化底图非常漂亮。等高线Contour工具路径“空间分析工具→表面分析→等高线”设置等高距比如5米或10米。等高线生成后是线要素可以直接制图或导出CAD。水文分析系列先“填洼”Hydrology→填洼把DEM里的凹陷填掉然后“流向”D8算法再“流量”最后设置一个阈值提取河网。这一套是当前最常用的流域提取流程但千万记住顺序别乱不填洼直接算流向结果会有大量断头河和假河道。如果你是做区域尺度的地形分析我建议DEM先重采样成适合区域分析的稍粗分辨率比如把30米重采样成90米这样坡度坡向看起来更平滑也不会有太多细碎噪声。5. 常见问题与排查技巧实录5.1 常见报错速查表以下是我在处理DEM IMG时遇到过的典型问题整理成一张速查表方便你直接对照解决。问题现象可能原因解决办法拖入IMG后提示无法识别数据源路径含中文/空格、文件扩展名被隐藏、软件缺栅格驱动复制到英文目录在ArcCatalog里确认文件安装Data Interoperability扩展加载后有“未知坐标系”警告文件头没写空间参考信息先确认数据真实坐标系用“定义投影”补上地图显示全黑或全白拉伸方式不对、NoData未处理、统计范围不匹配符号系统→拉伸→最值标准差/裁剪百分比NoData设为透明高程值明显异常有负值或0背景值被当作有效值、转换时单位错误检查范围统计用栅格计算器把无效值设为NoData处理大区域时ArcMap卡死没建金字塔、内存不足右键图层→数据→创建金字塔用ArcGIS Pro重新打开镶嵌后的DEM有明显接缝相邻数据坐标系/分辨率不一致先统一坐标系和像元大小再做镶嵌裁剪后出现黑边裁剪工具参数没设置好使用“按掩膜提取”勾选合适范围或裁剪后设置背景值为NoData提取等高线断裂DEM里存在NoData或空洞先插值填洞再提取等高线IMG有多个波段直接用高程模式不对数据是多光谱IMG而不是DEM检查波段数如果是多波段需要先提取特定波段单波段再分析打开工程文件提示数据路径找不到.mxd或.aprx移动了文件夹用“设置数据源”重新定位或保持工程和数据的相对路径一致这张表是我长期实操的浓缩不敢说覆盖所有情况但基本涵盖了新手到中级用户最常见的拦路虎。遇到问题时先别慌按表一步步排查大多数都能解决。5.2 我踩过的几个坑希望你绕开第一个坑文件路径带中文。一开始我贪方便把DEM放在“C:\用户\张三\下载\DEM数据\某区域.img”结果ArcGIS怎么都读不出来。后来把所有数据统一挪到“D:\DEM_Project\Data”下问题立刻消失。这不是玄学而是ArcGIS对Unicode路径的支持在某些版本里并不完美特别是在调用后台工具时容易出问题。第二个坑没看坐标系就做坡度分析。我有一次直接从网上下载了一个WGS84地理坐标系的DEM没有转投影就直接做坡度分析结果坡度值最大才十几度地形明明很陡却完全看不出来。后来发现是因为经纬度单位是度而ArcGIS把度当米用了。以后凡是做坡度、坡向、流域分析我都会先投影到合适的高斯-克吕格或UTM投影坐标系再算地形因子结果才对。第三个坑填洼不检查数据范围。做水文分析时我对一个DEM直接执行填洼结果提示“无法计算”或报错。后来才发现数据里面有大片NoData和负的深度值。好在水文工具比较敏感处理前先裁剪、填洞、检查有效范围流程就顺了。第四个坑加载大数据量IMG时没建金字塔。以前处理一个2GB的山体阴影数据打开一次要卡五分钟旋转缩放基本不能动。后来右键数据→“创建金字塔”第一次访问明显变快很多后面基本流畅了。大数据量栅格用金字塔是必须的。5.3 一些能提升效率的小技巧说几个我平时实测下来比较有用的小技巧能省不少时间。善用“复制图层属性”。做一批同类型的栅格出图时先设置好一个图层的拉伸和色带右键图层→“复制图层属性”再选中其他图层粘贴样式就统一了。不用一个个重新调。把中间产物统一放到文件地理数据库里。很多人在分析过程中生成一堆临时IMG/TIFF散落在文件夹里过两天自己都忘了哪个是哪个。我习惯在GDB里建三个数据集RAW原始、MID中间、RES成果每一步工具输出路径都指定到对应位置。这样工程既整洁又好追溯。用批量处理。ArcToolbox里的绝大多数工具支持“批量”模式。比如要对10幅IMG依次定义投影可以右键工具→“批处理”一次把所有文件加进去工具自动循环执行。这个功能对做片区级分析特别有用。配置好默认地理数据库。在ArcMap/Pro的选项里把“默认地理数据库”设置到当前工程的GDB路径这样所有中间结果默认就会存进去省去每次手动改输出的麻烦。6. 写在最后一点个人经验处理DEM和IMG数据这件事说难不难但很考验流程意识。我见过很多朋友把大量时间花在“加载数据后显示不对”这个问题上其实根源就是没有养成先检查、再加载、后分析的顺序。我个人在操作中最实用的小习惯是每次拿到新DEM数据第一步永远是右键查看属性里的“源”把坐标系、像元大小、有效值范围抄下来贴在数据旁边的TXT里。等以后再遇到问题至少知道是哪一步出的错。这个习惯帮我少踩了很多坑。希望这篇Arcgis读取DEM/IMG的学习记录能帮你在地形分析的路上顺畅一点。等你把数据读顺、显示调好、预处理跑通后面那些坡度、等高线、流域分析就都只是水到渠成的事了。
返回列表