全国城市坡度数据生产全流程:从DEM提取到GIS分析实战

发布时间:2026/10/3 18:54:03
全国城市坡度数据生产全流程:从DEM提取到GIS分析实战 1. 这份坡度数据集到底包含什么做城市规划、选址分析、农地评估、道路选线这些活儿的人应该都经历过一个特别头疼的阶段临时要找一份全国城市的坡度数据网上翻半天不是要注册下载版权受限的原始DEM就是下载下来还要自己按行政区裁剪、算坡度、再转格式一套流程下来半天就搭进去了。我这边的做法是用公开的DEM数据源统一处理把全国地级及以上城市含部分省直辖县级行政单元按行政区边界逐一裁剪、计算坡度再整理成两套配套文件一套是矢量数据直接可以在ArcGIS、QGIS、SuperMap这类GIS软件里打开分析另一套是Excel数据方便不熟悉GIS或者只想快速看统计数据、做图表的同事直接使用。两者信息同源字段结构基本一致可以根据自己的工作习惯选择。1.1 矢量格式和Excel格式分别怎么理解很多人一听到“矢量数据”就发怵其实可以简单理解成矢量数据是一张带坐标的“地图图层”里面每个要素都有明确的边界、位置和属性。就拿这套坡度数据里的面要素来说每一个面代表一个坡度分级区块属性表里通常包含城市名称、行政代码、平均坡度、最小最大坡度、面积等字段。矢量格式最大的好处是能叠加做空间分析比如你把某市的坡度面数据叠到土地规划图上一眼就能看出哪些地块不适合开发建设。相比栅格数据矢量数据在出图制图时也更干净审图、汇报时不会出现一堆锯齿状的像素点。Excel数据则相当于把矢量属性表“抽出来”做一个纯表格版。每一行是一条要素记录列字段包括城市名、坡度等级、各等级面积占比等等。不会开GIS软件或者只是想快速算一下全市坡度分级占比、做个统计报表的直接打开Excel就行。两张表通过字段匹配后也可以用于后续的数据透视、求和、做图表非常直观。1.2 371个城市的统计口径问题这里必须提前说清楚一个容易踩坑的点371这个数字不是拍脑袋定的。统计口径上国内“城市”既可以指直辖市、地级市、地区、自治州、盟也可以把省直辖县级市单独拿出来。如果只算传统地级行政区划常规口径大约在330多个但如果把部分省直辖县级市、直管县等独立行政单元也算进来数量就会接近370上下。所以你在收到这套数据后第一件事不是去算坡度、做分析而是先核对行政区名称和行政区划代码。建议拿最新的行政区划代码表做一个比对确认你关心的城市在不在里面、对应的名称是否是最新版本。以前就碰到过同事拿着旧口径去核对新代码结果对不上号白白折腾了半天。这个细节在做跨部门汇报时尤其重要数据口径错了后面所有分析结论都可能被质疑。2. 坡度数据的底层原理和生产流程很多人只知道“坡度越大越陡”但真要问坡度是怎么算出来的、用多少米的DEM数据生产比较合适可能就说不清了。我简单梳理一下这部分是数据使用的底层逻辑也决定了你对数据精度的预期。2.1 坡度的算法核心最大坡降法坡度在数字地形分析里简单定义是地表某一点处高程变化率最大的方向上的角度。专业软件里通常用Horn算法在DEM的3×3邻域窗口内分别计算出东西方向和南北方向的高程变化率再合成最大坡降方向最后换算成坡度角。公式写出来是这个样子东西方向变化率(dz/dx) ≈ ((c 2f i) − (a 2d g)) / (8 × cellsize)南北方向变化率(dz/dy) ≈ ((g 2h i) − (a 2b c)) / (8 × cellsize)坡度 arctan(√((dz/dx)² (dz/dy)²)) × 180 / π其中a到i是3×3窗口内各像元的高程值cellsize是DEM栅格分辨率。说白了坡度反映的是“这个像素点跟周围8个邻居相比落差有多大”。所以DEM分辨率对结果影响非常大30米分辨率下一个像素点边长30米坡度细节相对平滑12.5米分辨率下一些小的沟坎、边坡会被更细致地反映出来。做山地项目、灾害评估最好选高分辨率做城市尺度的大范围统计分析30米足够。2.2 DEM源数据怎么选SRTM、ASTER GDEM还是ALOS城市尺度项目里最常用的DEM数据是以下三种数据源分辨率覆盖范围优点缺点SRTM DEM30m / 90m全球开放获取、应用成熟、细节稳定高山区部分区域有空洞ASTER GDEM30m全球覆盖较全、更新相对好某些区域噪点略多、局部有异常ALOS AW3D3030m / 12.5m全球精度高、阴影峡谷地区表现好原始数据下载流程相对复杂我自己做大量城市批量处理时优先用SRTM 30米。原因很简单开源、易获取、算法兼容性好大多数二线以上城市的城区和近郊都有较干净的DEM覆盖。对于重点山区城市或者要分析城区起伏剧烈区域时可以单独用ALOS 12.5米重新计算一份两者结果做横向对照。这里有一个容易被忽视的细节不同DEM源算出来的坡度分布是有差异的。各位拿到的这套数据如果标注了数据源请务必在文档里保留来源信息。后续写论文、出报告时审稿人或评审专家大概率会问一句“用的什么DEM、什么分辨率”回答不上来就很尴尬。3. 实操全流程从DEM到矢量数据再到Excel既然做了371个城市的批量生产背后的流程必须清晰、可复用。下面这套步骤是经过多轮优化后的版本你在本地只处理一个城市也能照搬。3.1 前期准备和软件选择工具方面我推荐ArcGIS Pro或者QGIS。ArcGIS Desktop 10.x也能跑但处理大范围批量数据时效略低QGIS开源免费功能不输商业软件尤其适合预算有限的个人和小团队。参数建议分析坐标系统一使用CGCS2000或WGS84地理坐标系面积统计时再投影到Albers等积投影避免度数坐标导致面积失真。栅格分辨率30米。坡度单位度degree。输出格式矢量用Shapefile或GeoPackageExcel用xlsx。3.2 核心步骤坡度提取、栅格转面、属性导出我以ArcGIS Pro的操作界面为例流程分成以下五步。第一步填充洼地可选但推荐。原始DEM里会有一些由于采样误差造成的伪洼地直接算坡度容易在一个小坑里出现异常值。填洼工具用起来很简单但要注意如果是大江大河真实地形造成的凹陷填洼后会把真实地形抹平。稳妥做法是先看一眼研究区整体地形再决定是否填洼。城市建成区一般填洼影响不大。第二步坡度工具提取。在Spatial Analyst工具箱里选择“坡度”工具输入DEM设置输出单位为度Z因子保持1.0。Z因子只在水平方向单位与垂直方向单位不一致时才需要修改比如经纬度坐标系下就要根据纬度换算比例因子投影坐标系下一般不需要动它。第三步重分类坡度等级。这个看项目需求。常见分法是平坡0-5°、缓坡5-15°、中坡15-25°、陡坡25-35°、急陡坡35°。在栅格计算器里或者用重分类工具分别赋值为1、2、3、4、5。分好类后栅格数据会大幅简化为后续转矢量和统计做准备。第四步栅格转面。使用“栅格转面”工具输入重分类后的栅格勾选“简化面”选项。这里会得到一个矢量面图层每个面要素的“网格代码”字段就对应坡度等级。需要注意不勾简化时面要素数量极其庞大一个中等城市可能跑出几十万个碎面后续导出Excel会很卡。简化后数量能减少大半但也别期待它像手工数字化那么精确——这个尺度下追求边界完美不现实重要的是面积统计和空间分布趋势。第五步面积计算加属性导出。在矢量面的属性表里新增一个Area字段用几何计算工具计算每个面的面积。然后右键属性表选择Export导出为dbf或xlsx文件。dbf文件在Excel里直接打开有时会乱码我一般会在QGIS或Python里转成真正的xlsx字段用中文也不怕出问题。3.3 批量生产371个城市的脚本化思路处理一个城市走一遍界面没问题但371个城市靠手动点工具手都会点废掉。现实做法是用Python借助ArcPy或者GDAL写脚本批量跑。核心思路就三步循环遍历行政区划矢量文件中的每个城市要素用城市边界裁剪分幅DEM再执行坡度、重分类、栅格转面输出矢量图层和Excel统计表并汇总到统一文件夹。脚本里注意设置环境的缓冲区范围比如Extent设为城市边界外扩100米避免裁剪边界处出现无值区域影响边缘像元的坡度计算。这个细节看起来小但直接影响边界区域的数据质量尤其是沿海城市或沿江城市边界位置经常有一圈空白值。4. Excel端的整理与应用技巧Excel数据虽然只是矢量属性表的“降维版”但很多人收到后在Excel里操作时依然会碰壁。我结合这些年被问得最多的问题专门讲几个实操点。4.1 用数据透视表快速完成坡度分级统计拿到Excel数据的第一个高频需求统计每个城市各坡度等级的面积和占比。最快捷的办法是用数据透视表。把“城市名称”拖到行把“坡度等级”拖到列把“面积”拖到值区域汇总方式选“求和”一分钟就能得到一张“城市×等级”的交叉统计表。如果还想算占比可以在透视表外面加一个公式也可以直接建立计算字段。个人建议不要在透视表里改太多而是把透视结果复制成值再到旁边用SUMIFS函数计算各等级占比。理由是透视表一旦刷新手动加的公式容易错位得不偿失。这里结合一个常见需求说一句如果表格里面积字段是文本格式比如从某系统里导出时带了千分位逗号SUMIFS会算不出来。这时候需要先把列格式改成“常规”然后用“分列”功能或者用选择性粘贴里的“加零”方式把文本转数值。4.2 Excel数据常见的复制粘贴和批量处理坑做数据整理的人大概都遇到过类似场景从GIS属性表复制几十行数据准备粘到Excel里结果Excel要么没反应、要么粘贴出来全是合并成一格。我总结下来原因多半出在三个地方剪贴板被其他程序占用特别是开了浏览器或网页版Excel原数据里包含特殊字符如换行符、制表符Excel会理解成多行多列看着就像乱掉Excel文件本身过大程序卡顿导致粘贴无响应。比较稳的解决办法是先复制到记事本里“过一次水”再从记事本复制到Excel。这样能过滤掉大部分不可见字符粘贴成功率极高。如果还是不响应就把Excel进程重启一遍或者干脆用Python的openpyxl写个几行代码读取CSV再写进xlsx十几万行数据几十秒就搞定。4.3 大数据量下Excel的处理思路371个城市的坡度矢量如果全要素导出面数量可能是几百万行普通Excel大概率扛不住。所以我在生成Excel数据时做了一层预聚合只输出每个行政区的坡度分级面积、平均坡度、最大最小坡度这些统计指标而不是把所有碎面逐条列出来。如果确实需要明细再提供按重点城市拆分后的分城文件。这个思路其实也适合你自己做数据处理时参考能用统计解决的问题不要强行塞明细。Excel再大也有瓶颈但空间数据再大也照样能分析。两个工具各干各擅长的活才是正确姿势。5. 这套数据能拿来干什么五大应用场景拆解很多人拿到数据后的第一反应是“哦坡度知道了”但下一步就不清楚了。我举几个真实场景帮大家把数据和业务场景连接起来。5.1 城市规划中的建设用地适宜性评价做城市总体规划或者控规前期研究时坡度是最基础的自然限制因子之一。规范里一般建议建设用地坡度不宜过大超过25%的坡地约14度开发成本会急剧上升。实际操作中规划团队会把坡度重分类成“适宜建设”“限制建设”“禁止建设”再叠加生态红线、基本农田、地质灾害易发区等图层综合做多因子评价。这套数据可以直接提供各城市的坡度等级面层叠加之后能快速算出每个城市“适建区面积占比”。我见过一个做某三线城市的团队用这类数据十分钟就筛出了几个适合做新城拓展的低丘缓坡区域而在过去他们可能要现场踏勘加等高线人工判读好几天。5.2 交通与市政选线道路选线、管线走廊设计都离不开坡度。公路纵坡过大影响行车安全排水管线坡度不足会造成污水沉积。虽然具体施工图设计阶段必须用高精度测量数据但在项目可研和方案比选阶段用全国统一的坡度数据做宏观分析已经足够筛掉大批明显不可行的走廊带。这个阶段的关键是把坡度面和线路缓冲区做叠加统计算各方案中陡坡段的长度占比。如果你们手里还有全国乡镇级矢量数据或者村级边界数据可以进一步把坡度统计表落到乡镇甚至村一级分析结果会更有落地感。5.3 农业与林业适宜性分析坡度影响农机作业效率、水土流失风险和果园茶园建园成本。农业规划时常用坡度数据判断哪些区域适合大规模机械化耕作哪些区域更适合发展林果经济。例如某地计划推广高标准农田可以先以坡度小于6度为主要筛选条件再叠加土壤数据、灌区范围形成候选地块清单。5.4 地产开发与场地竖向设计地产项目前期拿地测算时地块坡度直接关系到土方工程量、边坡支护成本和地下室结构方案。两个看起来同样大小的地块一个坡度3度、一个坡度8度开发成本差距可能是千万级别的。这个时候把城市尺度的坡度数据叠加在地块红线范围上能很快得到地块内部的坡度分布为初步投资测算提供依据。5.5 气象与灾害风险区划坡度因子在地质灾害危险性评估里的重要性不用多说滑坡、泥石流的发生与坡度有很强相关性。气象部门做暴雨洪涝风险区划时也经常用坡度作为地表产汇流参数之一。这些应用对数据质量要求较高建议使用高分辨率DEM生成的坡度成果且最好用多个相邻像元做窗口滤波消除单点噪声。6. 踩坑记录与排查技巧实录做这种全国性批量数据不可能一点问题不遇到。我把几个最有代表性的坑写出来帮大家省点时间。6.1 常见问题速查表问题表现可能原因解决办法某个城市坡度数据大面积空白DEM原数据在边界存在无值区域裁剪DEM时先外扩缓冲再裁剪回原边界面积统计结果与官方国土面积偏差大使用了度数坐标系计算面积投影到等积投影后再算面积Excel打开属性表乱码Shapefile的dbf编码问题用UTF-8编码重新导出或通过CSV中转个别城市坡度值普遍偏高DEM原数据存在条带噪声更换其他DEM源或使用低通滤波处理栅格转面后碎面太多原栅格重分类类别多且像元碎先进行“众数滤波”或“简化”处理再转面ArcGIS处理时内存溢出数据范围过大分城市逐个处理并设置适当的内存和环境参数6.2 一个典型修复案例某沿江城市出现大片异常陡坡我第一次批量处理到某沿江城市时发现坡度分级结果里沿江区域出现了大片的“陡坡”这明显不合理——江边应该是平缓滩地才对。排查过程如下先在ArcGIS里打开原始DEM发现沿江部分的高程值出现了阶梯状突变这是典型的SRTM数据在陡峭峡谷和宽阔水域边界处的伪值。简单处理办法是对像素值进行条件判断把江面高程异常清除更稳妥的做法是结合水体数据把水域范围内的DEM像元做掩膜剔除再对周边像元做插值填充。这个案例提醒我任何公开DEM都不是完美的河流边界、地形阴影区是最容易出问题的位置。拿到成品数据后最好抽几个典型城市看一眼空间分布而不要只依赖Excel表格里的数值。6.3 几个独家的实操心得最后分享几个不太会写在正式文档里的经验。第一栅格转矢量之后如果只是做面积占比统计其实没必要转。直接在栅格属性表里统计像元个数乘以单像元面积得出的面积结果和转矢量后统计相差不到千分之一但速度会快上几个数量级。所以只有在需要做空间叠加、出专题图时才有必要转矢量。第二导出Excel前尽量把面积字段单位统一成“公顷”或“平方千米”。不要说用平方米也行——一旦数据到了汇报场景单位换算错误是我见过最多的低级失误。第三收到这类共享数据后记得自己抽查3到5个城市用在线地形图或者高程服务做一个目视比对。不用太复杂把矢量坡度面叠加到卫星影像上看看那些标为陡坡的区域是不是真的有山地、丘陵的形态。这一步能帮你提前发现数据中可能存在的系统性偏差比拿到数据就闷头做分析稳妥得多。我自己在处理这批371个城市的过程中最大的体会是数据共享的价值不仅在于数据本身更在于让每一个拿到它的人都能少走弯路。哪怕省下的只是“找DEM、裁剪、算坡度”这一个小时的重复劳动对赶项目的人来说也是实打实的帮助。后续如果有人需要我打算再把乡镇级、村界级的坡度切片也整理出来毕竟行政区划颗粒度越小对基层项目的参考价值就越大。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询