首页 GIS基础理论 ArcGIS坡度分析都是0?坡度分析出错和分级出图

ArcGIS坡度分析都是0?坡度分析出错和分级出图

作者: GIS研习社 更新时间:2026-05-20 10:37:35 分类:GIS基础理论

做水土保持评价、建设用地适宜性分析、道路选线、耕地坡度分级或地形制图时,ArcGIS坡度分析是 DEM 处理里最常用的一步。实际项目中最容易卡住的不是工具入口,而是结果一片 0、工具运行失败,或者坡度等级图不知道怎么输出。本文围绕坡度结果全为 0、ArcGIS坡度分析出错和 ArcGIS坡度分级怎么出图,给出一套从 DEM 检查到分级制图的排查流程。

问题背景:ArcGIS坡度分析都是0通常发生在哪里

坡度工具看起来只需要输入 DEM,但它依赖高程值、像元大小、坐标单位、Z 单位和处理环境。任何一个环节不一致,结果都可能明显异常。最常见的表现是输出栅格显示全黑、属性统计最小值和最大值都接近 0,或者分类后只剩一个坡度等级。

在教学和项目数据中,ArcGIS坡度分析都是0 常见于四类场景:输入栅格本身不是高程数据,DEM 被错误重采样成近似平面,坐标系或垂直单位没有处理好,以及先把坡度结果转成整数导致小坡度被截断为 0。还有一种情况是显示方式误导了判断:图层标注或符号化只显示整数 0,但实际栅格像元可能是 0.13、0.48、0.92 这类小数坡度。

因此排查时不要只看地图颜色。应先查看栅格统计值、像元值、空间参考和处理消息,再判断是工具参数问题、DEM 质量问题,还是制图表达问题。

ArcGIS坡度分析都是0排查流程示意图
坡度分析前先检查 DEM、坐标单位和环境参数,再根据坡度结果做重分类和制图输出。

核心原理:坡度值为什么依赖 DEM、坐标单位和 Z 因子

坡度本质上是高程变化量与水平距离的关系。ArcGIS 的 Slope 工具会在每个像元周围使用邻域高程值计算最大变化率,再输出坡度角度或百分比坡度。如果一个像元周围高程几乎没有变化,坡度自然接近 0;如果高程值、水平单位和垂直单位不一致,计算结果就会偏大、偏小或失去实际意义。

这里有三个概念必须分清。第一,DEM 的 XY 单位来自坐标系,可能是米,也可能是经纬度的度。第二,Z 单位来自高程值本身,常见是米,也可能是英尺或经过比例缩放的整数值。第三,Z 因子或 Z 单位参数用于让垂直单位和水平单位在计算时保持一致。不同 ArcGIS 界面中参数名称可能略有差异,但原理相同。

坡度异常时,先问三个问题:输入是不是 DEM,DEM 的水平单位和高程单位是否一致,输出坡度是否在查看统计值后再分级。不要先把连续坡度栅格强行转整数。

操作步骤:从 DEM 到坡度结果的可靠流程

下面这套流程适合 ArcGIS Pro 和 ArcMap 中常见的 DEM 坡度计算。菜单位置可能不同,但检查顺序可以通用。

  1. 确认输入是真正的 DEM。打开栅格属性,检查最小值、最大值、像元大小和 NoData。若高程范围只有 0 和 1,或只有少数分类编码,它不是可直接计算坡度的高程面。
  2. 检查坐标系。如果 DEM 是经纬度坐标系,正式项目建议先投影到适合研究区的投影坐标系;如果使用支持地理距离计算的方式,也要明确高程单位。不要把 Define Projection 当成 Project Raster 使用,前者只是声明坐标系,后者才会转换坐标。
  3. 处理垂直单位。确认高程值是米、英尺还是带比例因子的整数。如果 DEM 值需要乘以 0.1 或 0.01 才是实际高程,应先用 Raster Calculator 还原高程值,或在计算时设置正确的单位换算。
  4. 设置环境参数。在 Geoprocessing Environments 中设置 Extent、Cell Size、Snap Raster 和 Mask。排错阶段建议 Snap Raster 和 Cell Size 都以 DEM 为准,避免因为范围或像元大小不一致导致结果异常。
  5. 运行 Slope 工具。在 ArcGIS Pro 中可从 Analysis > Tools 搜索 Slope;在 ArcMap 中可从 Spatial Analyst Tools 的 Surface 工具集中找到。输出单位可选 Degree 或 Percent Rise,常规坡度分级制图通常使用 Degree 更直观。
  6. 查看输出统计值。运行后先打开栅格属性,查看最小值、最大值、平均值和标准差,再用 Identify 或 Explore 检查局部像元值。不要只根据图层颜色判断结果。
  7. 保存中间结果。把坡度栅格保存到 File Geodatabase 或本地短路径文件夹,避免输出路径过长、同步盘占用或文件名特殊字符造成后续工具失败。

ArcGIS坡度分析出错:按报错类型排查

遇到坡度工具报错,不要只记住最后一句红色提示。应展开 Geoprocessing Messages,查看是输入数据错误、扩展许可错误、环境范围错误,还是栅格格式错误。不同错误的处理方式完全不同。

  • 工具不可用或许可不可用。Slope 通常属于空间分析相关工具。如果工具灰掉或提示许可问题,先确认 Spatial Analyst 扩展是否可用,并检查当前项目是否能正常调用该工具箱。
  • 输入栅格无效。检查 DEM 是否能正常显示、是否存在损坏金字塔或统计信息、是否位于可访问路径。必要时复制到本地 File Geodatabase 后重试。
  • 处理范围没有有效像元。Extent 或 Mask 设置错误时,工具看到的可能是一块空区域。排错时先清空 Mask,把 Extent 设为 DEM 范围,再运行小范围测试。
  • NoData 过多或边界异常。坡度计算依赖邻域像元,NoData 边缘会影响结果。若研究区裁剪后边界过碎,可先检查 DEM 是否需要补洞、镶嵌或合理裁剪。
  • 输出位置不合适。路径太长、无写入权限、文件名重复、中文特殊符号混用或网络盘不稳定,都可能造成工具失败。建议先输出到本地工作库。
  • 坐标系未知或错误。Unknown 坐标系不会让每次运行都失败,但会让坡度结果无法解释。若坐标系确实未知,应先追溯数据来源,不要随便指定一个看起来接近的坐标系。

坡度结果全为 0 的重点检查清单

如果工具能运行,但结果几乎全是 0,可以按下面顺序定位。这个问题往往不是单一按钮造成的,而是 DEM 值域、单位和后处理叠加后的结果。

  1. 看 DEM 高程范围。如果 DEM 最小值和最大值相同,或者研究区只截到一片水面、平地或填充值,输出坡度接近 0 是正常结果。
  2. 看坡度栅格是否为浮点值。Slope 输出通常应保留小数。若你在后续使用 Int、Raster to Integer 或字段显示时只看到 0,先查看原始浮点坡度值。
  3. 检查是否过早重分类。例如把 0 到 5 度全部归为 0,或把小于 1 度的坡度用 Int 截断,最终地图自然只显示 0。坡度分级建议使用 1、2、3、4 这类等级编码,不要用 0 代表所有低坡度。
  4. 检查坐标和 Z 单位。如果 DEM 是经纬度坐标,而高程单位是米,或高程单位是英尺但按米处理,结果可能明显异常。投影、Z 因子和 Z 单位要成组检查。
  5. 检查显示拉伸和分类标签。有时图层符号化把 0.0 到 0.9 都显示成同一类,标签也四舍五入为 0。打开栅格属性和像元查询能更快判断。
  6. 换一个小样区复算。选择一块地形起伏明显的区域裁剪 DEM,再运行 Slope。若小样区正常,问题多半在环境范围、研究区地形或后处理;若仍为 0,再回查 DEM 和单位。

ArcGIS坡度分级怎么出图:重分类、符号化和版面输出

坡度分析结果通常是连续浮点栅格,不能直接当成坡度等级图交付。回答这个问题,核心步骤是先计算连续坡度,再按标准阈值重分类,最后进行专题符号化和版面整饰。

常见的坡度分级可以按项目标准设置。例如耕地评价、建设适宜性、水土保持和道路选线各自可能采用不同阈值。没有明确行业标准时,可先使用项目方给出的等级要求,不要随意套用网上的分级表。

  1. 运行 Slope 得到连续坡度。输出单位建议与分级阈值保持一致,例如阈值是 2 度、6 度、15 度、25 度,就输出 Degree。
  2. 使用 Reclassify 重分类。把坡度范围转换为整数等级,例如 0 到 2 度为 1,2 到 6 度为 2,6 到 15 度为 3,15 到 25 度为 4,大于 25 度为 5。
  3. 给等级建立含义。在栅格属性表或制图图例中写清楚每个等级对应的坡度范围,避免只显示 1、2、3、4、5。
  4. 设置符号系统。坡度等级图一般适合使用由浅到深的分级色带。颜色要能表达坡度增加,但不要让低等级和高等级难以区分。
  5. 必要时转面。如果要和行政区、地块或规划分区做矢量叠加统计,可在重分类为整数栅格后使用 Raster To Polygon。不要把连续坡度栅格直接转面。
  6. 进入 Layout 出图。添加图名、图例、比例尺、指北针、坐标格网、数据来源和制图说明,再导出 PDF 或 PNG。正式成果中应注明 DEM 来源、分辨率和坡度分级标准。

ArcPy 批量计算示例

如果有多个行政区或多期 DEM,可以用 ArcPy 固化流程。下面示例展示从坡度计算到重分类的基本结构,实际使用前应把路径、投影和分级阈值改成项目自己的标准。

import arcpy
from arcpy.sa import Slope, Reclassify, RemapRange

arcpy.CheckOutExtension("Spatial")
arcpy.env.workspace = r"D:\gis_project\work.gdb"

dem = r"D:\gis_project\data.gdb\dem_projected"
arcpy.env.snapRaster = dem
arcpy.env.cellSize = dem
arcpy.env.extent = dem

slope = Slope(dem, "DEGREE", 1, "PLANAR")
slope.save("slope_degree")

remap = RemapRange([
    [0, 2, 1],
    [2, 6, 2],
    [6, 15, 3],
    [15, 25, 4],
    [25, 90, 5]
])

slope_class = Reclassify("slope_degree", "Value", remap, "NODATA")
slope_class.save("slope_class")

这段脚本的关键不是代码行数,而是把 Snap Raster、Cell Size 和 Extent 固定下来。批处理最怕每个 DEM 的像元对齐、输出范围和 NoData 规则不一致,后续叠加统计会出现边界错位。

常见坑点:结果能出来不代表能直接交付

  • 只定义投影,不做投影转换。如果 DEM 坐标本来是经纬度,却被直接 Define Projection 成投影坐标系,数据位置和距离关系会错,坡度也不可信。
  • 忽略 DEM 分辨率。30 米、10 米和 1 米 DEM 得到的坡度细节不同。分辨率越高,局部变化越敏感,也更容易出现细碎等级。
  • 把 NoData 当 0 高程。NoData 是无数据,不是海拔 0 米。错误填 0 会在边界制造陡坡或大片异常坡度。
  • 先裁剪再发现边界异常。边界像元缺少邻域信息,可能出现边缘 NoData。正式结果可适当扩大 DEM 裁剪范围,计算后再按研究区裁切。
  • 坡度单位混用。Degree 和 Percent Rise 不是一回事。分级阈值是多少度,就不要拿百分比坡度结果直接套用。
  • 用自然断点替代业务阈值。自然断点适合探索数据分布,不一定适合作为耕地坡度、工程适宜性或风险等级的正式标准。
  • 只看颜色不看数值。色带拉伸会改变视觉感受,但不会改变像元值。交付前必须查看统计值和抽样点。
  • 连续坡度直接转面。连续浮点栅格转面会产生大量碎面,也不利于解释。应先重分类为整数等级,再决定是否矢量化。

工具和方法比较

坡度任务不只是一个 Slope 按钮。不同工具负责不同环节,选错工具会让排错复杂很多。

工具或方法 适合场景 注意点
Slope 从 DEM 计算连续坡度栅格 先确认坐标单位、Z 单位、输出单位和环境范围
Project Raster 把经纬度 DEM 转到适合分析的投影坐标系 不是 Define Projection;需要选择合适重采样方法和像元大小
Raster Calculator 修正高程比例、处理异常值、按条件生成掩膜 表达式要保留浮点精度,不要过早转整数
Reclassify 把连续坡度转换为等级栅格 阈值应来自项目标准,输出建议使用整数等级编码
Raster To Polygon 把坡度等级栅格转为面,用于矢量统计或制图 只适合重分类后的整数栅格,不适合连续坡度结果
Layout 导出 制作最终坡度等级图、专题图和报告配图 图例必须写明坡度单位、等级范围、DEM 来源和分辨率

实践检查清单

正式提交坡度结果前,可以按下面清单逐项确认。

  • DEM 是否有合理高程范围,是否存在大面积 NoData 或填充值。
  • DEM 是否使用适合研究区的空间参考,水平单位是否清楚。
  • 高程单位是否明确,是否需要设置 Z 因子、Z 单位或先做比例换算。
  • Cell Size、Snap Raster、Extent 和 Mask 是否与 DEM 和研究区一致。
  • Slope 输出单位是否与后续分级阈值一致。
  • 是否查看过坡度栅格的最小值、最大值和抽样像元值。
  • 是否保留连续坡度原始结果,再另存重分类等级结果。
  • 坡度等级是否有明确业务含义,图例是否写清范围和单位。
  • 如果要转面,输入是否已经是整数坡度等级栅格。
  • 版面输出是否包含数据来源、DEM 分辨率、坐标系和制图日期。

FAQ:坡度结果全为 0、工具报错和分级制图

ArcGIS坡度分析都是0,是 DEM 坏了吗?

不一定。结果全为 0 可能是 DEM 本身很平、研究区范围截到了低起伏区域,也可能是坐标单位、Z 单位、显示精度或后续整数转换造成的。先查看 DEM 高程范围和坡度栅格统计值,再判断数据是否有问题。

ArcGIS坡度分析出错应该先看哪里?

先看 Geoprocessing Messages 的完整信息,再检查输入 DEM、Spatial Analyst 许可、Extent、Mask、输出路径和坐标系。这类坡度工具报错多数可以通过小样区测试定位,不建议一开始就反复重装软件或重启项目。

ArcGIS坡度分级怎么出图才规范?

规范出图的关键是三步:先用 Slope 输出连续坡度,再用 Reclassify 按项目阈值生成整数等级,最后在 Layout 中配置图例、比例尺、指北针、数据来源和分级说明。不要直接把连续坡度栅格当等级图交付。

坡度输出应该选 Degree 还是 Percent Rise?

取决于项目标准。常见坡度等级图多使用 Degree,因为 2 度、6 度、15 度这类阈值更直观。如果规范要求百分比坡度,就使用 Percent Rise,并确保分级表也使用百分比阈值。两种单位不能混用。

为什么坡度图边界有 NoData?

Slope 需要邻域像元参与计算,边缘缺少完整邻域时可能生成 NoData。可以在计算前使用比研究区稍大的 DEM 范围,计算完成后再按研究区边界裁剪。这样能减少最终图面边缘空洞。

坡度分级后是否一定要转成面?

不一定。如果只是栅格专题图和栅格叠加分析,保留等级栅格通常更直接。只有在需要和地块、行政区、管控边界做矢量叠加统计,或者成果格式要求面要素时,才把重分类后的整数坡度等级栅格转为面。

总结

ArcGIS坡度分析要稳定,关键是先把 DEM、坐标单位、高程单位和环境参数检查清楚。结果全为 0 时,重点看 DEM 值域、坡度浮点值、Z 单位和是否过早转整数;工具报错时,按许可、输入、范围、NoData 和输出路径逐项排查;需要坡度等级图时,先计算连续坡度,再重分类、符号化和版面输出。把这套流程固定下来,坡度等级图怎么出就不再是单纯的制图问题,而是一条从数据质量到成果表达都可复核的 GIS 工作流。

相关文章