
简介面向GIS、遥感及地理分析从业者提供覆盖重庆市全域的30米分辨率数字高程模型。数据源自ASTER GDEM V3以GeoTiff格式存储并采用WGS84坐标系已拼接为连续DEM图层可直接用于地形可视化、坡度坡向提取、水文模拟、地质灾害评估及城市规划等场景。资源包共10个文件核心数据为TIF栅格另含TFW配准文件、PRJ投影定义以及Shapefile格式的重庆市行政区边界矢量数据便于按边界裁剪和分区统计整体压缩包大小约125.77MB。已有936人学习浏览。该数据既适合高校GIS与遥感课程实践也可支撑科研人员快速开展区域地形分析省去原始分幅拼接与坐标转换环节提升研究效率。1. 重庆DEM30米分辨率这不是一张图是一套能直接干活的地形底数做重庆区域的项目不管你是搞规划选址、地质灾害评估、流域分析还是通信基站覆盖仿真第一步永远卡在同一个问题上地形数据从哪来。网上能找到的免费DEM要么是90米分辨率用来做区县级分析勉强能看落到具体地块上就完全是另一回事要么找得到30米但下载流程折腾半天最后还可能拿到一堆没拼接、没处理好坐标系的分幅文件。这份重庆DEM30米分辨率就是拿来解决这个问题的——它已经把重庆全境的高程数据按统一标准处理好拿到手直接用不用再花一两天时间四处找数据、对坐标系、做拼接。它的核心价值就一句话30米分辨率是免费DEM里精度和覆盖范围最平衡的档位。重庆这种山地城市地形破碎度极高90米数据经常把关键的山脊、沟谷直接抹平而30米数据能勉强分辨出单条冲沟和局部陡坡足以支撑绝大多数前期分析和初步设计。适合的人很明确用ArcGIS、QGIS做空间分析的从业者、城乡规划与工程前期勘测人员、高校做地形相关研究的学生。需要说明的是这份数据是栅格TIFF格式不是点云也不是等高线它描述的是每一个30米格子里的平均高程值后续能不能算出坡度、坡向、提取等高线全看你怎么用它。2. 数据底细与坐标系打开文件之前先花三分钟搞清它是什么2.1 栅格结构每个像素就是一个高程采样点DEM的本质是一个单波段栅格每个像素的灰度值代表该位置的地面海拔高度单位是米。30米分辨率意味着每个像素对应地面30米乘30米的区域重庆的面积大约8.24万平方公里换算下来这份数据大约有九千多万个有效像素。处理这种体量普通配置的电脑用ArcGIS、QGIS直接打开和做常规分析是完全没有问题的不需要服务器。拿到数据后我建议你做的第一件事不是急着打开而是先用gdalinfo命令看一眼文件的基本属性。我自己拿到任何DEM的第一件事都是这个因为它能一次性告诉你坐标系、像素大小、数据范围和无效值设置比在GUI里翻属性窗口快得多。gdalinfo chongqing_dem_30m.tif输出里重点看这几项Size is后面的宽高像素数、Origin和Pixel Size决定影像覆盖的真实地理范围、Coordinate System决定你用哪个投影做后续分析。常见的坑是遇到NoData值为 -9999 或其他特殊值如果这个值没被正确识别后面做坡度计算时会出现一大片异常负值。看到NoData参数不是None的时候建议顺手把它单独设置好。2.2 投影与坐标系WGS84还是CGCS2000直接影响面积和坡度计算这份数据常见的坐标基准有两种WGS84经纬度坐标或CGCS2000高斯投影坐标。如果你拿到的是经纬度坐标版本那就必须接受一个现实——直接用它在ArcGIS里算坡度、算面积结果是错的因为经纬度坐标下X和Y方向的比例尺不一致。正确做法是先投影到合适的平面坐标系再做后续分析。Mercator投影不适合重庆因为重庆地处东经105度到110度之间高斯-克吕格投影才是国家标准地形图使用的投影方式。重庆跨了3度带的36、37两个分带所以你在处理的时候要特别注意你的数据落在哪个带。我一般的做法是用Albers等积圆锥投影做面积统计类分析用地形图等高线提取则用高斯投影两种用途分开处理。gdalwarp -t_srs projaea lat_125 lat_247 lat_00 lon_0105 datumWGS84 -tr 30 30 -r bilinear chongqing_dem_wgs84.tif chongqing_dem_aea.tif这段命令的关键在于-tr 30 30强制目标分辨率为30米-r bilinear用双线性插值做重采样。地形分析场景不要用最近邻法那会让表面变得像马赛克而三次卷积法虽然更平滑但计算量明显增大30米数据的原始分辨率已经比较有限再用平滑算法去卷积反而会丢失微地形信息所以我一直用双线性做折中。2.3 分幅与拼接用GDAL一行命令把散装瓦片合成整图很多渠道下载的DEM是按标准分幅存储的比如每幅覆盖经度1度、纬度40分。如果这份数据也是分幅的拿到的是一堆像DEM_106E_29N.tif这样的文件第一步就要做拼接。用GDAL的buildvrt先做一个虚拟目录再转TIFF好处是速度快、不用一次性把所有数据加载进内存。gdalbuildvrt chongqing_dem.vrt *.tif gdal_translate -co COMPRESSLZW -co TILEDYES chongqing_dem.vrt chongqing_dem_merged.tif-co COMPRESSLZW是无损压缩30米DEM这种连续表面用LZW能压到原来一半左右而且读写速度不受影响-co TILEDYES则让TIFF内部按块存储在ArcGIS里缩放浏览时明显更流畅。拼完之后记得用前文的gdalinfo再看一遍重点检查边界处的像素是不是对齐了。拼接后如果出现横竖方向的分幅接痕多半是相邻两幅图的投影参数不完全一致需要回退到原始文件逐一确认它们的坐标描述。这种情况在从不同渠道拼凑数据时很常见处理方式没有捷径只能重新设置投影再拼。3. 裁剪与地形因子提取在ArcGIS里把数据真正变成能用的信息3.1 按行政区或研究区裁剪栅格裁剪与掩膜提取的差别拿到重庆全境的DEM后你九成以上的工作都在某个局部区域进行比如某个区县、某个流域或某个工业园区的规划范围。这时需要先把数据裁剪到你的研究区边界。ArcGIS里有两个工具容易搞混一个是ArcToolbox 数据管理工具 栅格 栅格裁剪另一个是Spatial Analyst 工具 提取分析 按掩膜提取这两个工具我都用过差别在细节上。栅格裁剪相当于物理裁切输出范围严格对齐裁剪边界的外接矩形适合处理规则矩形区域。它的灵活性在于可以勾选「使用输入要素裁剪几何」此时会按照要素的实际形状裁出非矩形的结果但边界外的像素会被直接删掉不留NoData。按掩膜提取则是把掩膜范围内的像素保留范围外的像素变成NoData数据范围不变适合以点为掩膜提取某条线路两侧缓冲区内的高程。做地形分析时我推荐用掩膜提取因为它保留了NoData区域后续做坡度计算时不会因为边界的突变值产生异常坡面。import arcpy from arcpy.sa import * arcpy.env.workspace rD:\chongqing_dem arcpy.env.overwriteOutput True dem Raster(chongqing_dem_merged.tif) maskextract ExtractByMask(dem, study_area.shp) maskextract.save(dem_study_area.tif)ExtractByMask的参数逻辑很直接第一个是输入栅格第二个是矢量面。输出结果中研究区域外全是NoData。要注意的是面要素的坐标系必须和DEM的坐标系一致如果不一致ArcGIS会自动做实时投影但会拖慢处理速度而且投影转换这个步骤本身就会引入像素重排的误差如果你是要做精确面积统计先把矢量数据投影到与DEM一致的坐标系再跑这一步会稳妥得多。3.2 坡度与坡向计算参数设置决定结果是平滑还是细碎有了裁剪后的DEM接下来最常用的两个分析是坡度和坡向。这两个参数是地质灾害易发性评价、水土流失分析、光伏选址、基站覆盖仿真的基础输入。ArcGIS里用Spatial Analyst 表面分析 坡度工具关键参数有两个一个是计算方法另一个是Z因子Z Factor。计算方法里DEGREE输出的是度数PERCENT_RISE输出的是百分比在工程报告里通常用度数0到90度的范围直观明了。Z因子只在X、Y单位与Z单位不一致时才需要调整。如果你的DEM是经纬度坐标系Z单位是米那Z因子必须根据纬度做换算——赤道附近是0.000009重庆北纬29度附近大约取0.000008。忘记设置Z因子是最典型的错误之一后果是算出来的坡度整体偏大看似精确实际已经完全失真。from arcpy.sa import * out_slope Slope(dem_study_area.tif, DEGREE, 0.000008) out_slope.save(slope_degree.tif) out_aspect Aspect(dem_study_area.tif) out_aspect.save(aspect.tif)坡度结果中每个像素的值代表该位置的最大坡降方向上的倾角。重庆地区典型山地坡度在15到40度之间如果算出来的结果大面积集中在60度以上基本可以断定Z因子设错了。坡向输出是0到360度的方位角其中-1代表平地。后续如果要把坡向重分类成8个方位记得先把-1单独处理掉不要直接参与分类否则会多出一类「平地」干扰分析。3.3 高程分级与可视化作图让DEM输出成一张能放进报告的地图高程分级看起来简单但很多人会犯一个错误——直接用自然间断点法做默认分级结果在重庆这种高差超过2000米的区域主城区的低海拔区域全被压成同一个颜色看不清任何内部地形。我自己做重庆区域的图习惯用手动设置断点用等距分级法或者自定义关键海拔值。在ArcGIS Pro里右键图层打开符号系统选择分类方法为「手动」然后按照0到250、250到500、500到750、750到1000、1000到1500、1500到2000、2000到2800这七档来断。每一档选一个从绿到棕再到白的渐变色这样低海拔的河谷和平坝能区分出来高海拔的山脊线也不会糊成一团。图例标注的单位一定要写上「米」同时把等高线叠加到高程分级图上作为辅助参考线这个组合在报告里呈现的信息密度是最合适的。符号设置方案在ArcMap和Pro中完全兼容用这套思路调一次后续所有重庆图件都能复用同一种配色逻辑。4. 从DEM到等高线与三维视工程出图常用的两条实用路径4.1 等高线生成ArcGIS提等高线前的两个前置步骤很多刚接触DEM的人直接拿原始DEM去生成等高线结果在平坝和河谷区域得到一大堆密集的细碎多边形而在陡坡区域等高线又稀疏得没法看。这是因为原始DEM里包含了一些微小的局部起伏比如公路路堤、小型沟坎这些在30米分辨率下呈现为单个像素的高程跳变。直接用这种数据生成的等高线在制图比例尺较大时会产生大量锯齿状折线密度分布也被这些局部噪声干扰。所以我在提等高线之前必定先做一步焦点统计滤波。用Spatial Analyst 邻域分析 焦点统计统计类型选MEAN邻域窗口设3x3矩形。这一步的作用相当于对高程表面做一次低通滤波把单像素级的毛刺磨平。窗口太大不行过度的平滑会把真实的山脊和沟谷也一起抹掉3x3窗口在30米分辨率下恰好能保留地形大趋势、滤掉孤立噪声。from arcpy.sa import * dem_smoothed FocalStatistics(dem_study_area.tif, Rectangle 3 3 CELL, MEAN) dem_smoothed.save(dem_smoothed.tif) contour Contour(dem_smoothed, contour_10m.shp, 10, 500)Contour工具的参数依次是输入栅格、输出要素、等高线间距、起始等高线值。重庆地区做区域分析用10米间距比较合适拿到局部地块再用2米或5米的重做。起始等高线设500意味着从海拔500米开始追踪低于500米的区域不生成这在只关心某个海拔以上范围的场景下可以省去不必要的要素数量但需要注意如果是从最低海拔开始追踪就应该用DEM的最小值取整不要随意设一个值导致低海拔区域缺失。4.2 三维显示ArcScene与Blender导出STL的对比ArcGIS桌面版的ArcScene可以快速把DEM显示成三维地形操作很简单加载DEM图层右键打开图层属性在「基准高程」选项卡里设置将图层的高程从表面获取放大倍数字段设为1。这样就能在三维视图里拖拽旋转用来做汇报展示和初步判断地形起伏是足够的。但如果你的目标是做3D打印沙盘模型、导入三维渲染软件或者放到游戏引擎里做地形底图那就需要导出STL。ArcGIS的栅格转Mesh工具可以输出STL格式但默认输出的模型表面不太理想因为网格简化算法在处理陡坎时会有锐边。我自己一般用Global Mapper做中转它导出的STL在网格质量上比直出的更可控。具体做法是Global Mapper中打开DEM选择分析 地形操作 生成3D模型输出格式挑STL采样间距填30或不设置其他参数直接以原始分辨率输出。STL在Z轴方向会按高程值自动缩放导出来的模型看起来会是非常扁的一块这是因为水平范围动辄数十公里而高差只有几百米在3D打印软件里需要把Z轴放大3到5倍再打印视觉效果才正常。4.3 纵断面分析一条剖面线看清地形变化重庆选线类项目无论是输电线、公路还是天然气管线都需要做纵断面分析看沿线的高程变化。ArcGIS的3D Analyst 视线分析 剖面视图工具可以交互式地在地图上画一条线立刻生成沿线高程剖面。鼠标点击屏幕上的剖面图可以在图上拖动查看每个位置的具体高程方便找出最高点、最低点和局部凸起。剖面视图工具直接调用原始DEM不需要经过平滑处理。如果你发现自己画的剖面线转折点太少、曲线看起来太生硬那是剖面线本身的密度问题回去把线要素上的折点加密再重新生成一次。纵断面的XY轴比例尺默认是自动匹配的在ArcGIS Pro的剖面图属性里可以把X轴的显示范围固定为实际距离不要让它按折点序号显示否则横坐标的长度看起来会失真。5. 避坑清单重庆山地DEM处理时最典型的五个翻车现场5.1 现象裁剪出来的边界有锯齿状台阶用行政区边界裁剪DEM之后放大到边界附近能看到明显的锯齿状边缘台阶宽度约30米。原因很简单栅格像素是正方形网格矢量边界不可能正好落在像素边缘上边界穿过的像素被保留或剔除时只能按像素取舍。解决方法是裁剪后对边界做一步边界清理工具在Spatial Analyst 栅格编辑 边界清理选择平滑方式窗口大小设3像素。但要注意这个操作只改变边界附近的NoData分布不会改变地形本身做精确面积统计时仍然应该以矢量面积为准栅格面积仅作参考。5.2 现象坡度计算结果大面积异常偏高上一节提到的Z因子问题在处理重庆这种高纬度、大地形起伏的区域时特别容易翻车。经纬度坐标系下X方向的分辨率是0.00027度约30米Y方向也是0.00027度但Z的单位是米三个轴的单位不统一坡度算法无法直接计算。解决路径有两条一是把DEM投影到高斯或Albers等平面坐标系让X和Y变成米二是在坡度工具里手动填入Z因子。前者是一劳永逸的方案后者是应急手段——你后续做的所有面积、距离、叠加分析在经纬度坐标系下都是有问题的不只是坡度这一项。所以我的习惯是任何DEM到手第一件事永远是投影Z因子只是在没来得及投影时的临时方案。5.3 现象提取的等高线在河谷区域断开等高线在穿越长江、嘉陵江河谷以及一些窄深冲沟时经常出现断开或扭结。原因是河谷底部在30米分辨率下几乎没有有效像素——水面区域的高程数据来自采集时的滤波处理往往表现为异常低值或NoData。解决方法是提取等高线之前先做一次条件函数处理用SetNull把河流面要素范围内的像素设为NoData然后在等高线工具里把NoData的区域跳过再把断裂处用编辑工具手工连接。用地形图的河流图层配合操作是最常见的做法不要试图用平滑去修补断裂——平滑治标不治本只会让等高线在断开处绕一个更大的弯。5.4 现象坡度分级图在平坝区域出现大量无规律斑块重庆主城区的平坝区域比如渝中半岛、大学城一带原始地形高差很小但DEM里保留了建筑物和道路的微小起伏在坡度图上就成了密集的杂色斑块。这在做地质灾害易发性评价时会造成干扰。解决方法是先做邻域统计的滤波窗口大小可以适当加大到5x5这会损失一些微地形细节但对于区域尺度的评价来说提取的是宏观地形趋势这点损失是可以接受的。如果你做的是局地精细分析就不要用这种手段改用更精确的原始测量数据。5.5 现象ArcGIS打开大TIFF文件时转圈很慢30米全重庆拼接后的TIFF可能超过2GB直接加载到ArcMap里确实需要一些时间。这里有两个实用调优方向一是确认TIFF内部是否TILEDYES块存储没加这个选项的文件必须重转一次二是把TIFF生成金字塔文件在ArcGIS目录窗格中右键文件选择构建金字塔采样方法选双线性金字塔级别到足以覆盖显示缩放范围。经过这两步操作缩放浏览的流畅度会有明显提升。如果你还需要在同一区域叠加多个分析结果时效要求又比较高建议把这几个图层都导入文件地理数据库的栅格数据集栅格数据集在显示性能上比裸TIFF更好。6. 用山体阴影做立体渲染让地形分析图脱离「平面感」做完坡度、坡向这些常规分析后你会觉得图面还是缺少立体感。这里分享一个从制图角度让地形立刻「鼓起来」的方法——山体阴影与彩色高程叠加。原理是利用光照模型给每个像素生成一个基于地形走向的明暗值再把这个明暗值以一定的透明度叠在高程分级图上。这个做法能让平面的彩色分类图呈现出真实的地形起伏视觉在山脊、沟谷等地形转折处尤其明显。在ArcGIS里用Spatial Analyst 表面分析 山体阴影工具方位角Azimuth设315度西北方向入射这是国内地形制图的标准光照方向高度角Altitude设45度。输出的阴影值范围是0到255255代表完全受光面。然后在图层面板把坡度或高程分级图层放在下方山体阴影放在上方把阴影图层的透明度调到55%到65%。你会看到山脊线一侧亮、一侧暗整张图一下就立体了。如果想让效果更细腻可以把阴影和分级图在QGIS中用混合模式 叠加处理QGIS的光照计算对局部细节的保留优于ArcGIS默认的显示方案。Offset参数在QGIS里可以精细调整灯光的位移调到0.5的效果通常是地形的锐利程度和柔和度的中间位置。这个方案非常适合用在汇报PPT里——不是所有人都能看得懂等高线但立体阴影图几乎不需要解释读者看见的第一眼就知道是山地地形。用QGIS的方式处理代码层面可以通过r.sun或用gdal的hillshade命令实现gdaldem hillshade dem_study_area.tif hillshade_315_45.tif -azimuth 315 -altitude 45 -z 1.0 -compute_edges-z 1.0是垂直方向放大系数重庆这种高差区域用1.0就好不用额外夸大-compute_edges确保边界区域的阴影也参与计算不留白边。生成的hillshade_315_45.tif叠加在彩色分级图上后再做一次适度透明度调整就可以直接出图了。从那以后我每次做重庆区域的DEM分析出图之前都会强制跑一遍这个流程——叠加阴影图、调透明度、再导出一版效果图。这不算什么高深技术但确实是我觉得最实用的制图技巧也不挑软件平台希望帮到你。本文还有配套的精品资源点击获取