新闻详情

新闻详情

首页 / 资讯中心 / 详情

中国范围DEM栅格数据获取与预处理实战指南

发布时间:2026/10/2 2:46:09来源:尧图网络
中国范围DEM栅格数据获取与预处理实战指南
简介一份覆盖全国范围的1km分辨率DEM栅格数据源自SRTM 30m高程数据经ArcGIS镶嵌拼接、重采样后得到坐标系为WGS-84格式为TIFF可直接在ArcGIS中打开适用于地形分析、栅格计算、空间分析等场景如坡度坡向提取、水文分析、可视域分析适合地理信息专业学生、科研人员及需要全国尺度高程数据的开发者作为基础数据使用。资源包共7个文件以主TIFF栅格文件为核心另含金字塔文件、地理配准文件、属性表及元数据等辅助文件压缩后约26.51MB文件结构清晰便于直接加载。目前已有695人学习下载。数据完整正确在保留宏观地形特征的同时大幅减小了数据体积可用于课程设计、区域地形研究或作为其他分析的底图数据能够节省数据预处理时间也便于直接用于制图与初步建模。1. 中国范围的DEM栅格数据先弄清楚你拿到的到底是什么做区域水文分析、日照模拟或者变电站选址时很多人第一步就卡在数据上。网上下载的“中国范围的DEM栅格数据”可能是30米分辨率的ASTER也可能是90米的SRTM甚至可能是经过拼接但坐标系乱掉的tiff。打开ArcMap一加载要么位置跑到海里要么值域全黑这时候才意识到DEM不是一张普通图片它每个像元的值代表高程栅格的组织形式、投影、无效值编码直接决定后续所有分析能不能跑通。这篇文章就围绕中国范围的DEM栅格数据从获取渠道、预处理、踩坑到实际应用给你一条能照着走的落地路径。适合要用DEM做坡度、坡向、等高线提取或者做流域划分的从业者新手能跟步骤熟手可以跳过基础看避坑。2. 获取中国范围DEM的可靠渠道从省级30米到全国12.5米怎么选2.1 主流数据源对比分辨率、覆盖范围和坐标系差异中国范围的DEM栅格数据最常见的选择是这四类SRTM90米/30米、ASTER GDEM30米、ALOS AW3D3030米和Copernicus GLO-3030米。另外国内还有12.5米的ALOS PALSAR衍生DEM以及测绘部门生产的省级30米DEM比如“山东省dem数据30米”这类按省分发的成果。我的选择习惯是做全国尺度宏观分析用SRTM或ASTER都行SRTM在平坦地区表现更稳做省市级的精细项目优先Copernicus GLO-30或国内省级30米成果要提取微小地形特征才考虑12.5米。分辨率不是越高越好高分辨率数据量成倍增长处理时间也长先想清楚分析的最小单元是什么。坐标系是另一个容易翻车的点。SRTM和ASTER原始数据多为WGS84经纬度Copernicus也是WGS84但有些省级成果可能用西安80或CGCS2000高斯投影。拿到数据第一件事就是打开属性表看坐标系别等投影到GIS里才发现错位。2.2 下载与组织用脚本批量拉取并按分幅管理常见的下载渠道是USGS EarthExplorer、地理空间数据云、NASA Earthdata以及各省级地理信息公共服务平台。这些网站大都支持按范围检索但直接点鼠标下载几十个分幅很痛苦。我一般用Python脚本批量下载以USGS的SRTM为例先通过Scene List获取数据ID再拼接下载链接。# 批量下载SRTM分幅示例使用requests和retry机制 import requests import time # scenes.csv包含要下载的分幅名称和URL with open(scenes.csv, r) as f: for line in f: name, url line.strip().split(,) try: r requests.get(url, timeout30) r.raise_for_status() with open(f{name}.tif, wb) as out: out.write(r.content) print(f{name} 下载完成) time.sleep(1) # 避免请求过快被限流 except Exception as e: print(f{name} 失败: {e}) # 失败后记录到retry.txt稍后重试这段逻辑很简单从CSV读取分幅名和URL逐条下载失败就记下来。参数注意点timeout设30秒防止网络卡死导致脚本挂起sleep(1)是给服务器喘息时间批量下载时很关键。下载完一定要检查文件大小SRTM单幅30米tif通常在10-30MB如果只有几KB大概率是错误页面。2.3 数据完整性检查先看一眼值域和范围下载几十个分幅后不要急着拼接。先写个脚本遍历所有文件检查每个栅格的像元类型、无效值、最小最大值。这一步能提前发现损坏文件或坐标系不一致的分幅。from osgeo import gdal def check_dem(path): ds gdal.Open(path) band ds.GetRasterBand(1) stats band.ComputeStatistics(0) print(f{path}: min{stats[0]}, max{stats[1]}, noData{band.GetNoDataValue()}) print(f 尺寸{ds.RasterXSize}x{ds.RasterYSize}, 投影{ds.GetProjection()[:50]}...) ds None # 遍历目录下所有tif import glob for f in glob.glob(rE:/dem_data/**/*.tif, recursiveTrue): check_dem(f)这里用GDAL读取关键是检查NoDataValue。SRTM默认无效值是-32768ASTER是-9999Copernicus则可能是0或负值。如果你拿到的DEM没有设置NoDataValue后面算坡度时会把无效值当真实高程产生一堆异常值。这一步虽然简单却能省下后面好几个小时的排查时间。3. 把原始DEM整理成可用栅格投影、裁剪、镶嵌与格式转换3.1 投影与坐标系统一先转成目标投影再做后续中国范围横跨多个分带如果你的分析范围在省市级通常需要一个统一投影。常见做法是转换为CGCS2000或WGS84的UTM分带投影或者用Albers等积投影做全国分析。我一般用GDAL的gdalwarp命令来重投影它支持重采样方法选择。# 将WGS84经纬度的DEM重投影到UTM 50N并重采样为30米像元 gdalwarp -t_srs EPSG:32650 -tr 30 30 -r bilinear -ot Int16 \ input_wgs84.tif output_utm50n.tif参数说明-t_srs指定目标投影-tr设置像元大小这里强制为30米-r bilinear是双线性重采样对DEM这种连续表面比较合适不要用最邻近法否则地形会有明显锯齿-ot Int16设置输出为整型DEM一般用整型米就够了。注意重采样会改变原始高程值尤其在坡度变化大的山区双线性会平滑掉一些细节如果后续要做高精度坡长因子建议保持原始像元大小只做投影转换。3.2 按行政区或研究区裁剪用矢量边界裁出正好大小的栅格拿到中国范围的DEM后经常只需要某个省或某个流域。这时用矢量边界裁剪能大幅减少数据量。ArcMap里的Extract by Mask工具能做但批量处理效率低。我更习惯用gdalwarp加-cutline参数一步完成裁剪和重投影。# 用山东省边界裁剪DEM并设置裁剪范围外的值为无效 gdalwarp -cutline shandong.shp -crop_to_cutline -dstnodata -32768 \ china_dem.tif shandong_dem_30m.tif-crop_to_cutline让输出严格贴合矢量边界边界外的像元不保留而是变小-dstnodata把边界外的值设为-32768这样后续统计不会把无数据区域算进去。注意如果矢量边界坐标系和DEM不一致一定要先统一gdalwarp会尝试自动转换但最好自己先检查避免边界错位导致裁剪出空白。3.3 多幅镶嵌解决重叠区和无效值条带中国范围DEM由多幅分幅镶嵌而成相邻图幅间常有重叠且在接边处可能出现高程不一致。直接用ArcGIS的Mosaic工具如果重叠区处理策略不对会产生明显的接缝线。我一般用gdal_merge.py或gdalbuildvrt先构建虚拟栅格再转成tiff。gdalbuildvrt不会真正拼接只创建一个索引文件后续处理时按需读取速度很快。# 构建VRT虚拟栅格然后转成正式tiff gdalbuildvrt -srcnodata -32768 -vrtnodata -32768 all_dem.vrt *.tif gdal_translate -co COMPRESSDEFLATE -co TILEDYES all_dem.vrt china_dem_merged.tif注意-srcnodata和-vrtnodata都是-32768保持无效值一致。转tiff时开启DEFLATE压缩和TILED分块能显著减少磁盘占用同时提高ArcGIS读取速度。如果镶嵌后边缘仍有黑边说明部分分幅的无效值没被识别需要回到第2.3节检查NoDataValue。3.4 格式转换tiff转dem文件与栅格数据组织形式ArcGIS用户常遇到“arcgis将tiff转dem文件”的需求。本质上ArcGIS的DEM文件就是ESRI GRID格式是一个文件夹里面存放着dblbnd.adf、hdr.adf等一系列文件不是单个文件。用ArcToolbox的“Raster to Float”或“Copy Raster”都能转。但更通用的做法是直接用GDAL转成GeoTIFF几乎所有软件都认。如果你非要ESRI GRID可以用gdal_translate加上of选项# 将任意格式DEM转为ESRI GRID格式 gdal_translate -of EHdr -ot Int16 china_dem_merged.tif china_dem_merged生成的是china_dem_merged文件夹里面有.hdr和.raw文件这就是ESRI的DEM文件。不过现代GIS完全支持直接读tiff没必要特意转。真正需要关心的是栅格数据的组织形式是整幅单文件还是分幅瓦片对于中国范围这种大数据量我建议采用TPK或Mosaic Dataset组织方式ArcGIS Pro里创建镶嵌数据集或者用GeoTIFF分幅文件夹配合VRT这样后续加载小范围时不会卡死。4. DEM栅格数据的常见预处理坑与排查黑匣子里的血泪经验处理中国范围DEM最大的问题不是算法而是数据本身的坑。下面这几条是我实际踩过的每条都按现象—原因—解决来写。4.1 下载的dem文件加载后一片黑现象在ArcMap加载DEM tiff图像全黑拉伸显示也没用。打开属性表最小值和最大值都是0或者相同。原因最常见的是下载的文件不是DEM而是别的栅格产品。另一个可能是数据是16位有符号整型在ArcMap中默认按8位显示导致拉伸失效。也可能是数据本身全是无效值。解决先右键图层属性在符号化里选择“拉伸”设置拉伸类型为“最小-最大”。如果还是黑用GDAL读一下最小值和最大值判断是否真的全为无效值。如果没问题再检查数据是否被加密或转换成其他编码。4.2 坐标范围飘到海里或者完全对不上现象把中国范围的DEM和已有的矢量边界叠加DEM跑到太平洋中间或者偏移几十公里。原因坐标系不一致。最典型的是SRTM原始数据是WGS84经纬度而边界用的是CGCS2000高斯投影。解决第一步在ArcMap中查看DEM属性里的“Extent”和“投影坐标系”如果显示“GCS_WGS_1984”而经纬度范围超过360或负值说明数据本身有问题如果范围正常但位置不对那就是投影定义错误。用“定义投影”工具重新指定坐标系然后“投影栅格”转成目标坐标系。切记先“定义”再“投影”顺序反了会二次偏移。4.3 镶嵌后接边处出现明显的高程诡异条带现象两幅相邻DEM拼接后沿接缝线有一道深色或亮色条纹高程值突变几十米。原因两幅数据来源于不同传感器或不同处理版本比如一幅是SRTM 3.0另一幅是SRTM 4.1且没有做接边匀色。解决如果两幅数据重叠可以用gdalwarp的-blenddist选项设置一个缓冲距离进行羽化。我一般用100到200米。如果完全没有重叠就得手动编辑。另一种做法是重采样到同一起始原点再镶嵌但最省事的还是统一数据源下载时尽量选择同一批次生成的数据。4.4 DSM和DEM混淆建筑树冠被当成地面现象拿着12.5米的ALOS数据做坡度分析结果城市区域坡度异常大房屋位置出现高坡。原因ALOS PALSAR有DSM和DEM两个产品。DSM是表面模型包含建筑物和树冠高度DEM是去除地表物体后的高程。很多人下载时没区分把DSM当DEM用了。解决下载时看清产品名。ALOS AW3D30是DSM不是纯DEM。如果你需要真正的地面高程优先用SRTM或Copernicus GLO-30这些是经过处理的DEM。如果一定要用ALOS需要自己滤波去除地物这属于另一套流程不如直接换数据源。4.5 山东省dem数据30米省级数据和全球数据精度对不上现象下载了山东省的官方30米DEM和全球SRTM 30米做对比同一个点高程差几十米。原因省级DEM往往是基于1:1万或1:5万地形图生产高程基准可能使用1985国家高程基准而SRTM使用EGM96大地水准面两种基准之间存在系统性的高程差异在山区可达几十米。解决项目要求高精度时以省级数据为准不要强行混合使用全球数据。如果必须混用做一个局部回归校正。在ArcGIS中用“栅格计算器”对两块重叠区域做差值分析生成一个差值表面然后把全球数据整体加上这个差值场。5. 让DEM栅格真正派上用场坡度、坡向、等高线与导出Excel5.1 从DEM提取坡度和坡向参数怎么设这是DEM最基础的应用。ArcGIS的“坡度”工具会计算每个像元的最大变化率输出单位默认是度。坡向则是每个像元最陡坡度的方向范围0到360度。操作上直接用工具即可但要注意如果你之前把DEM重投影了坡度结果会受投影影响。一般建议在投影坐标系下做坡度因为经纬度坐标的南北和东西方向实际距离不同算出的坡度会有扭曲。# 使用Python脚本来做坡度计算 from osgeo import gdal dem gdal.Open(shandong_dem_30m.tif) slope_grid gdal.DEMProcessing(slope.tif, dem, slope, formatGTiff, slopeFormatdegrees) slope_grid Nonegdal.DEMProcessing的slopeFormat参数有两种degrees和percent。如果后续要做水土流失因子计算一般用percent做坡向分类则用degrees。还有一点坡度工具会在边缘产生一圈低值像元因为计算窗口无法覆盖。如果边缘区域对你重要先对DEM做一点外扩缓冲区。5.2 提取等高线从栅格到矢量线等高线是DEM最直观的成果。ArcGIS的“等高线”工具需要设置等值线间距。对于30米DEM山区用50米或100米间距平原用10米或20米。间距太小会生成大量短线导致文件巨大且不好看。# 通过GDAL提取等高线间距100米 gdal_contour -a elev -i 100 shandong_dem_30m.tif contours.shp-a elev给属性表增加一个高程字段后续可以按高程值做标注。注意gdAL生成的等高线可能会在平坦区域产生密集的短弧线最好先对DEM做低通滤波或者平滑后再提取。如果你只是为了出图可以直接在ArcGIS中拉伸显示不必强行提取等高线。5.3 arcmap栅格数据转化导出为excel把高程采样点变成表格很多从业者问“arcmap栅格数据转化导出为excel”这本质是两次转化先栅格转点再点转表。第一步用“栅格转点”工具把每个像元变成一个点属性表里就有X、Y和高程值。但如果整个省30米分辨率有上千万个点Excel根本装不下。所以常规做法是先按范围或条件筛选。比如只提取坡度大于25度的像元。# 用GDAL将特定区域的DEM转为文本再导入Excel gdal_translate -of XYZ -srcwin 5000 5000 1000 1000 shandong_dem_30m.tif dem_sample.xyz-srcwin参数依次是起始列、起始行、列数、行数这里提取了1000x1000的窗口。输出的XYZ文件前两列是坐标第三列是高程值直接导入Excel或csv。这种方法比ArcGIS的“导出至Excel”更省内存也不容易崩溃。5.4 用剖面工具做地形起伏分析剖面分析对线路工程很有用。ArcGIS的“剖面图”功能需要先画一条线要素然后工具会沿线采样高程并生成图表。但我常用一个更简单方式把线转为多个点用“多值提取到点”获取每个点的高程然后导成表格做曲线。import geopandas as gpd import numpy as np from osgeo import gdal # 在线要素上按等距生成采样点 line gpd.read_file(route.shp).iloc[0] distances np.arange(0, line.geometry.length, 250) # 每250米采一个点 points [line.geometry.interpolate(d) for d in distances] # 创建点要素DataFrame并导出 gdf gpd.GeoDataFrame({dist: distances}, geometrypoints) gdf.to_file(route_points.shp)采样间距根据你需要的精度设定一般取DEM分辨率的5到10倍。比如30米DEM间距150到300米就够。导出的shp在ArcGIS里用“多值提取到点”加上高程生成表格后就能画剖面线。6. 进阶构建一个中国范围DEM本地数据库的小方案做了多次区域项目后我总结出一套适合中国范围的本地数据组织方式既能应付快速加载也方便重复使用。方案核心是按省或流域分块存储使用GeoTIFF格式文件名统一为“省名_分辨率_来源_版本.tif”比如“Shandong_30m_copernicus_v3.tif”。每个分块旁边放一个同名.qmd文件记录元数据内容包含坐标系、无效值、高程范围、生产日期。通过DataStore或GDAL的VRT把所有分块串联但不生成物理拼接文件。# 创建虚拟栅格将所有省级分块纳入一个VRT gdalbuildvrt -srcnodata -32768 -vrtnodata -32768 ChinaDEM.vrt \ /data/dem/Shandong_30m.tif \ /data/dem/Henan_30m.tif \ /data/dem/Shaanxi_30m.tif这样ArcGIS或QGIS加载ChinaDEM.vrt只读取当前视图范围内的分块几百GB数据不卡。我的习惯是定期用gdalinfo检查每个分块是否完整并把检查结果写入日志防止磁盘故障悄悄损坏数据。另一个进阶技巧是制作一个简单的Web服务用MapServer发布DEM WMS这样团队里其他人不用安装GIS就可以直接在地图上查询高程。跑通后用Python写一个高程查询API输入经纬度返回该点的高程值对后续编码工作特别方便。我的实际教训是下载DEM时多花半小时做完整性校验远胜过后处理时对着一整块数据黑屏发呆。希望你尽早把这些检查环节固化到流程里省下的时间够你多做两个项目了希望帮到你。本文还有配套的精品资源点击获取
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

OpenRig:Node.js+tmux+Codex+YAML 构建的本地AI开发装备 2026/10/2 3:40:25

OpenRig:Node.js+tmux+Codex+YAML 构建的本地AI开发装备

1. OpenRig 是什么:一个被误读的开源项目名与真实技术现场OpenRig 这个词在当前中文技术社区里,正经历一场典型的“语义漂移”——它既不是某个广为人知的成熟开源项目(比如 OpenCV、OpenSSH 那样有明确官网、文档和 GitHub star 数&#xff…

阅读更多 →
Gradle 8.13升级避坑指南:Android构建配置与兼容性问题全解析 2026/10/2 3:40:25

Gradle 8.13升级避坑指南:Android构建配置与兼容性问题全解析

用Gradle 8.13这件事,我从收到Android Studio弹窗提示升级就开始折腾,前后在两个老项目和一个新项目上踩了不下十来个坑,有些是配置写法变了,有些是插件兼容性出了问题,还有些纯粹是文档没更新导致误判。这篇就把我实测…

阅读更多 →
YOLO快递包装缺陷检测实战:小目标、遮挡与产线落地 2026/10/2 3:40:25

YOLO快递包装缺陷检测实战:小目标、遮挡与产线落地

简介:本资源是面向计算机视觉初学者与YOLO算法实践者的快递物流场景缺陷检测专项数据集,聚焦包装盒完整性、破损、开封状态等典型工业质检问题,适用于课程设计、毕业设计及轻量级项目实战。数据包共2000个文件,含1201份YOLO标准TX…

阅读更多 →
SLAM回环检测原理与RK3588实战部署指南 2026/10/2 3:40:25

SLAM回环检测原理与RK3588实战部署指南

1. 什么是SLAM回环检测:不是“认出老地方”,而是让地图不漂移的救命机制你拆过扫地机器人吗?或者看过ROS2 Gazebo里那个小车在虚拟房间里转圈建图?它一边走一边画地图,看起来很聪明——但走着走着,地图就歪…

阅读更多 →
Python操作MySQL进阶:从连接管理到生产级配置 2026/10/2 3:40:25

Python操作MySQL进阶:从连接管理到生产级配置

1. 连接管理为什么是Python操作MySQL的第一道坎先说一个我观察了很久的现象:很多Python开发者,特别是写过两三年业务代码的人,操作MySQL的水平基本停留在“能跑通CRUD”这个阶段。具体表现就是,每个函数里都写一遍pymysql.connect…

阅读更多 →
mysql_secure_installation 详解:MySQL安全基线配置实践 2026/10/2 3:40:19

mysql_secure_installation 详解:MySQL安全基线配置实践

在Linux服务器上装完MySQL,接下来的第一件事几乎都绕不开mysql_secure_installation这个安全脚本。我见过不少新同学在教程里看到这行命令就直接跳过,理由是"我本机用,怕什么"。直到某次一台没跑安全脚本的测试机被扫描器直接拖走数…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉