简介:面向地理信息系统从业者与空间数据学习者的全球DEM地形数据获取指引文档,围绕全球高程数据下载、免费GIS软件与入门教程三条线索整理资源入口,适合从事地形分析、坡度与水文模拟、城市规划及环境研究的初中级用户快速定位可用数据与工具。资源包共1个docx文件,约12KB,以文字链接清单为主,正文按全球地形数据、免费GIS软件、GIS相关教程分区,便于按需检索;其中地形数据同时给出百度网盘与天翼云盘地址,并注明后者下载速度较快。文件还汇总QGIS、GRASS GIS等免费软件及视频、操作指南、案例教程入口,可辅助完成DEM加载、地形分析与空间制图。已有6002人学习,适合希望降低数据获取与工具入门成本、快速搭建练习环境的GIS学习者参考。
1. 先把 DEM 说明白:它是一张给每个点记了高度的地图
有个同学第一次打开下载来的全球 DEM 数据,看到一坨灰不溜秋的图,第一反应是"是不是下错了"。其实没下错,那正是 DEM 的样子——Digital Elevation Model,中文叫数字高程模型,说白了就是把地表每个位置的海拔记成一个数字,密密麻麻排成一张大表格。普通地图告诉你路在哪、地方叫什么名字,DEM 只回答一个问题:这里有多高。全球 DEM 就是把陆地上的高度都收进来的一份公开高程数据,是 GIS 里做地形分析的底料。想知道哪块坡陡、水往哪流、两点之间看不看得见,没有它就只能靠猜。零基础也能碰,下面就带你跑通第一个例子。
2. 为什么零基础也值得学 DEM:它能干的事比想象中具体
很多人对 DEM 的第一印象是"听起来很专业,应该轮不到我"。其实它解决的都是很朴素的问题:这块地能不能盖房、水往哪边积、站在山顶能不能看到对面。学会用高程数据回答这类问题,比背一堆术语有用得多。这一章先把"学了能干嘛"讲清楚,你才知道后面的操作是为哪件事服务的。
2.1 先建立画面感:DEM 最常见的四类用途
第一类是坡度坡向。给你一块地,你想知道它平均多陡、朝向是哪边,这就是坡度坡向分析。坡度告诉你"陡不陡",坡向告诉你"朝南朝北"。做选址、做农业规划、评估一块地适不适合铺东西,这两张图是起点。它输出的是一张每个格子带角度值的栅格图,不是一句结论,所以你得会看色带。
第二类是水文分析。水往低处流,这句话在 DEM 上是可以算出来的。软件能根据每个格子跟邻居的高低差,推导出水流方向、汇流累积量、分水岭和汇水区。想做淹没范围模拟、找合适的蓄水位置、判断一片区域的水从哪来,都从这里起步。新手最容易忽略的是:水文分析对数据的"坑洼"极其敏感,原始 DEM 里一个不真实的小凹陷,就能让水流在半路断掉。
第三类是视线通视分析。给两个点,问它们之间能不能互相看见。通信基站选址、观景台设计、监控点位排布都会用到。它的原理并不玄学:沿着两点连线,逐段比较高程有没有被中间的地形挡住。
第四类是三维展示与晕渲。把平面高程数据加上光照,做出一张看起来有立体感的图。做汇报、做方案、给非专业的人讲清楚地形长什么样,这一类最讨巧,也是新手最容易获得成就感的方向。你不需要会三维建模,软件里点几下就有。
这四类用途有个共同点:输入都是同一份高程数据,输出都是图或者数字。也就是说,你只需要把"加载数据"这一个动作练熟,后面换工具只是换按钮。
2.2 以前卡人的是两件事:数据贵、软件贵
零基础学 GIS 的人,过去最常见的结局不是学不会,是还没开始就放弃。原因很实在:一头是数据,覆盖范围大的高程数据往往要申请、要走流程、要花钱;另一头是软件,商业 GIS 软件的授权费用对个人来说不便宜。两头一卡,热情三天就凉了。
现在这个门槛被拆掉了。一方面,全球范围的高程数据已经有可以公开获取的版本,覆盖所有陆地区域,拿来做练习完全够用;另一方面,开源 GIS 软件成熟得超出很多人的想象,装完就能读高程数据、能跑坡度、能做晕渲,界面和商业软件的思路也高度相似。这份资源把两头都凑齐了:地形数据、免费软件、配套教程,放在一起。
对新手来说这件事的意义在于:你可以今晚就开工,而不用先花两周搞明白"我该去哪申请数据"。学习这件事最怕中间断掉,一旦要等审批、等授权,多半就黄了。资源现成,反而是能不能坚持下来的关键。
顺带说一句,免费不等于凑合。开源 GIS 软件背后是很长的开发历史,插件生态也活得很好,很多单位的生产环境里就在用它。你用它入门学到的操作逻辑,换成商业软件基本能平移过去。
2.3 学它之前你真正需要会的东西,只有三样
不少人被"地理信息系统"这几个字吓住,以为要先学投影公式、要先会编程。入门阶段真不用。你需要的第一样是解压文件,第二样是装软件,第三样是理解"图层"这个概念。
图层这个事,用透明塑料片理解最快。一张塑料片上画了 roads,一张画了河流,一张画了高程,叠在一起就是一张完整的地图。GIS 软件里的每一个数据,就是一张这样的塑料片,你能单独开关、单独改颜色、单独调顺序。DEM 就是其中那张"只画高度"的塑料片。
编程也不是入门门槛。前面几个例子的全部操作都是点鼠标完成的。等你能熟练加载数据、改符号、跑分析,再回头学一点脚本,会发现脚本干的事就是把点过的按钮写成一行字,那时候学起来才顺。我第一次学的时候就是先啃代码,结果连数据都加载不对,白折腾了两周,这个顺序千万别反。
3. 上手前先认清三样东西:数据、软件、教程
这份资源里其实是三样东西打包在一起:全球地形数据、免费 GIS 软件、GIS 相关教程。新手常犯的错是拿到手先一股脑全解压,然后被一堆陌生文件名砸懵。这一章按"数据是什么、软件选哪个、教程怎么看"的顺序,把它们一个个认清楚,再动手。
3.1 全球 DEM 数据的三个参数:覆盖、分辨率、格式
看一份 DEM 数据,先看三个参数就够了。
覆盖范围决定你能研究哪块地方。全球数据意味着所有陆地区域都在里面,代价是文件大、加载慢。新手不必一上来就加载全球,先切一小块出来练手,效率高得多。
分辨率决定细节到什么程度。常见的有 30 米级和 90 米级两类格网,意思是每个格子代表地面上 30 米见方或者 90 米见方。格网越小,地形越细腻,文件也越大。打个比方,30 米像小马赛克,90 米像大马赛克,拼出来都能看出山形,但小马赛克能看出冲沟。新手用 90 米级练手完全够,等确定要做精细分析再换小的。
格式决定你用什么方式打开。全球高程数据通常以 GeoTIFF(扩展名 .tif)形式给出,这种格式把高程值和坐标信息一起装在文件里,GIS 软件直接能读。也有的按经纬度分成很多块,一块一个文件,文件名里带经纬度编号,用的时候按需取用。下载完先看扩展名,是 .tif 就走栅格图层加载,是压缩包就先解压再找里面的 .tif。
还有一个容易忽略的点:高程值本身有两种常见单位表达,米和整型缩放,个别数据会用一个缩放因子存高度,读出来是整数。如果你发现最高峰只有几百,那多半是没乘缩放因子。正规 GeoTIFF 一般不会有这个问题,但换数据源时值得先看一眼数值范围。
3.2 软件怎么选:免费的和商业的,先碰哪个
零基础最纠结的就是这一步。直接给结论:先碰免费开源的那款,理由是免费、装完就能用、社区教程多,而且它和商业软件的操作思路高度相似,将来要换过去不吃亏。
| 对比项 | 免费开源 GIS | 商业 GIS |
|---|---|---|
| 费用 | 不需要授权费 | 需要授权,个人学习成本高 |
| 安装 | 下载安装包,一路默认 | 安装包大,配置步骤多 |
| 上手难度 | 界面朴素,功能够用 | 界面完整,菜单层级深 |
| 高程分析 | 坡度、坡向、水文、晕渲都有 | 工具更全,参数更多 |
| 适合谁 | 零基础、自学、做练习 | 单位有授权、做生产项目 |
这张表不是要争谁更好,而是告诉你入门阶段该把时间花在哪。入门的目标是"理解地形分析的流程",不是"精通某个软件的每一个按钮"。流程学会了,换软件只是找按钮的位置。
商业软件那款不是不能碰。等你已经能独立跑完坡度分析,又恰好有授权可用,再去学它的高级工具会很顺。反过来,一上手就啃它,光是找工具在哪就能耗掉你半条命。
3.3 教程的正确用法:带着问题看,别从头看到尾
教程最容易变成"收藏了就等于学了"。我的建议是三遍法。
第一遍,只挑两节看:怎么加载数据、怎么改符号。看完立刻动手,把 DEM 加进去、把颜色改一遍。这两节是后面所有操作的地基,地基不牢,看再多水文分析也是白看。
第二遍,带着一个具体问题回去查。比如"我要做坡度图,教程里那一步的参数是什么意思"。这时候你是在找答案,不是在听课,记忆效率完全不一样。
第三遍,换自己的数据重做一遍。这一步最关键,因为教程里的示范数据通常很干净,你自己的数据会暴露坐标系不对、NoData 值异常这些真实问题。血泪经验:只看不做,一周后连软件图标在哪都得找。
教程里那些案例可以跳着看。案例分析的价值在于让你知道"这套流程能产出什么",不在于让你背下每一步。
3.4 下载和解压:放哪里、留多少空间、先开哪个包
资源里给了两个云盘入口,一个用的人多、速度偏慢,一个用的人少、速度明显快。赶时间就走快的那个,反正内容是一样的。下载前先看下磁盘剩余空间,全球范围的高程数据解压之后体积不小。
解压路径这件事值得单独说:不要放在带中文、带空格、层级特别深的目录里。有些 GIS 工具和脚本对路径很敏感,一个中文字符就能让程序报"文件不存在",而且报错信息还看不出原因。建议直接在某个盘符根目录下建一个短名字的英文文件夹,比如gis_data,把所有数据放进去。
解压顺序也有讲究:先解压地形数据,确认里面是 .tif 文件;再装软件;最后解压教程。别反过来,先装软件再发现数据解不开,你都不知道是软件的问题还是数据的问题。
4. 第一个例子:十分钟把 DEM 拖进软件,做出一张坡度图
前面都是铺垫,这一章开始动手。整个流程四步:装软件建工程、加载数据、跑坡度分析、可选地用代码读一次。每一步我都会说清楚点哪里、为什么这么点、出问题看什么。
4.1 第一步:装软件、建工程,把地基打对
- 找到资源里免费 GIS 软件的安装包,双击运行,安装路径用默认的英文路径,一路下一步。
- 装完打开软件,界面上会有菜单栏、左侧图层面板、中间画布、右侧工具箱。
- 新建一个工程,保存到你刚才建的那个英文文件夹里,文件名用英文。
- 打开工程的属性设置,找到坐标系选项,先保持默认,暂时不要手动改。
第 4 步是新手最容易翻车的地方。很多人一上来就想"我要设成某个投影",结果数据本身带着坐标系,两边一冲突,图就飘到不知道哪里去了。入门阶段的正确做法是:让工程跟着数据走,数据带什么坐标系,工程就用什么。
保存工程这个动作也别跳过。软件偶尔会崩,没保存的工程等于白做。养成习惯:每做完一步就按一次保存,成本一秒。
提示:安装路径和工程路径都别用中文,这一条能省掉你后面一半的报错排查时间。
4.2 第二步:把 DEM 加进来,先读懂那张灰白图
- 在菜单里找"图层",点"添加图层",选"添加栅格图层"。
- 在弹出的对话框里定位到你解压出来的 .tif 文件,选中,点"打开"。
- 图会出现在画布上,默认是一张灰白图。左侧图层面板里会多出一条记录。
现在解释这张图怎么看。软件默认会把高程值映射成亮度:高的地方亮,低的地方暗。所以你能直接看出山脊是白的、谷地是灰的。这不是因为它"长这样",而是因为软件帮你做了一次默认渲染。理解这一点很重要——后面你换个色带,它立刻变成彩色,但数据一个数字都没变。
接着用识别工具点几个位置,看看弹出的高程值。找一座明显发白的山顶点一下,再找一片暗的地方点一下,对比两个数字。这一步的意义是让你确认数据是真的高程,不是一堆乱码。如果点出来是 -32768 或者 -9999 这种古怪数字,那不是地面高度,是空值标记,说明这块格子没有有效数据,后面分析时要处理掉。
如果图整体偏黑或者偏白,看不出层次,多半是色带拉伸范围不对。在图层属性里找到符号化,把最小最大值设成实际的高程范围,图立刻就清楚了。
4.3 第三步:跑一次坡度分析,拿到第一张彩色结果
- 打开处理工具箱,在搜索框里输入"坡度",找到对应工具。
- 输入图层选你刚加载的那份 DEM。
- 输出文件指定到你的英文文件夹里,起个英文名,比如
slope.tif。 - 单位选项先用默认的度,运行。
- 跑完会自动加进图层,这时它是一张新的灰白图,去符号化里换成彩色色带。
跑完先别急着截图。看一眼输出图的高程范围之外的东西:坡度值应该落在 0 到 90 度之间(用百分比表示时是 0 到很大一个数)。如果整张图几乎全是同一个颜色,或者数值大得离谱,回头看我后面第 5 章的第一个坑,那是坐标系单位不一致的典型症状。
坡度图和原始 DEM 的关系值得说清楚:DEM 每个格子存的是"多高",坡度图每个格子存的是"这里的倾斜角度"。前者是原料,后者是算出来的成品。你以后做坡向、做水文,得到的都是这种"从 DEM 派生出来的新图层"。理解了这个模式,你就理解了 GIS 里大半的分析流程——加载一份底料,跑一个工具,得到一层新结果。
到这一步,你已经完整走了一遍"数据进、结果出"。剩下的就是换工具、换参数、换区域。
4.4 第四步:用五行 Python 确认数据能被程序读懂
图形界面能干活,但当你有一百个文件要处理时,手点就不现实了。这一步不是必须的,只是让你提前看一眼"程序眼里的 DEM 长什么样",顺便确认数据没坏。
先装两个库:
# rasterio 负责读写栅格数据,numpy 负责数组运算 pip install rasterio numpy然后是读数据的最小例子:
import rasterio # 打开一份 DEM,r 是数据集对象,with 语句保证用完自动关闭文件 with rasterio.open("gis_data/dem.tif") as r: elev = r.read(1) # 读第 1 个波段,得到一个二维数组 print("行列数:", elev.shape) # 数组形状,即行数 × 列数 print("高程范围:", elev.min(), elev.max()) print("坐标系:", r.crs) # 数据自带的坐标参考 print("像元大小:", r.res) # 每个格子代表的地面尺寸 print("空值标记:", r.nodata) # NoData 用什么数字表示逐项解释一下。r.read(1)里的 1 是波段编号,高程数据通常只有一个波段,所以固定读第一个;读出来的是一个二维数组,数组里每个数字就是一个格子的海拔,行列顺序和数据排列一致。elev.min()和elev.max()给你一个最粗的体检结果,正常的高程范围应该和你在地图上看到的山高度对得上。r.crs告诉你这份数据用的坐标系,后面所有位置相关的分析都依赖它。r.res是像元大小,如果输出的是零点几而不是几十,说明单位是度不是米,做坡度前需要先投影。r.nodata打印出来可能是 None,也可能是 -9999 之类,处理时要显式过滤掉,否则空值会被当成真实高度参与计算。
跑通这段,你就有了两条路:点鼠标,或者写脚本。以后处理大批量数据,脚本会救你的命。
5. 新手避坑:五个几乎人人都会踩的坑
这一章单独拿出来,是因为下面这几条几乎每个新手都会撞上一次,撞上之后往往卡半天。每条按"现象、原因、解决"写,遇到了直接对号入座。
5.1 数据和坐标类的三个坑
坑一:数据加载进来,位置跑到地图角落去了。
现象是图层能显示,但一叠加别的数据就完全对不上,或者图跑到了画布的边缘。原因基本是坐标系不一致:数据自带一套坐标参考,工程设了另一套,两边各说各话。解决办法是先看数据自带的坐标系信息,把工程设成一致,或者对数据做一次投影转换,统一到同一个坐标系下再分析。判断标准很简单:两份数据叠在一起,河流应该压着河道,对不上就是坐标系的问题。
坑二:高程值出现 -32768 或者 -9999 这种怪数。
现象是高程统计出来的最小值低得离谱,或者晕渲图上一大片死黑。原因是这些数字不是真实海拔,是数据用来标记"这里没有有效数据"的空值。解决办法分两步:符号化时把空值设成透明,让它不参与渲染;做统计和计算时,先把空值过滤掉再算最小最大值。忘了这一步,你的平均高程会被拉低一大截,坡向统计也会出现一堆莫名其妙的朝向。
坑三:坡度图整片一个颜色。
现象是跑完坡度分析,输出图几乎全是同一个灰度,看不出任何细节。原因通常不是数据坏了,而是水平方向和垂直方向的单位不一致:水平坐标用的是经纬度(单位是度),高程用的是米,算坡度时两边单位打架,结果自然失真。解决办法是先做一次投影转换,把数据转到以米为单位的投影坐标系下,再跑坡度。这个坑我见过太多次,每次都是同一个原因。
5.2 操作和性能类的两个坑
坑四:一加载全球数据,软件直接卡死。
现象是拖进文件后进度条走到一半就没了反应,风扇狂转。原因是数据太大,软件默认按全分辨率渲染整张图,内存瞬间吃满。解决办法有两个方向:一是先裁出一小块区域再分析,用裁剪工具按范围切出来;二是让软件建立概览,也就是低分辨率的缩略图,缩放时先看缩略图,放大才读原始数据。新手养成"先裁小、再分析"的习惯,能少熬很多夜。
坑五:解压报错、脚本报文件不存在。
现象是解压到一半提示错误,或者代码里路径明明写着就是找不到文件。原因通常是路径里有中文、有空格,或者层级太深超过了系统的路径长度限制。解决办法是把数据挪到一个短名字的英文目录下,路径里只留字母、数字和下划线。还有个小概率原因:下载没完成,压缩包本身是残的,重新下一遍就好。
6. 下一步学什么:从"会看"到"会算"的三段路
过了第一个例子,很多人会陷入"下一步学啥"的空转。我的建议是按三段走,每段都设一个能验证的产出,别贪多。
6.1 第一段:把常用动作练到不用想
这一段的目标是把加载数据、裁剪范围、改符号、导出图片这四个动作练成肌肉记忆。练手任务可以是:从全球数据里裁出你关心的那一小块,做一张晕渲图,导出一张能直接贴进文档的图片。过关标准是你不看教程也能从头做一遍。这一段大概一周,别嫌慢,地基就在这。
6.2 第二段:把派生的分析跑全
坡度、坡向、山体阴影、等高线,这四个都是从 DEM 直接派生出来的,跑法几乎一样:选工具、给输入、指定输出。跑完之后,试着解释每张图在说什么——哪条山脊最陡、哪片坡朝北。过关标准是你能对着图讲出三句人话,而不是只会说"这是我跑出来的"。
6.3 第三段:挑一个真实的小问题做完
这一段最重要。找一个你真正好奇的问题,比如某片区域的水往哪汇集、某个位置能不能看到远处。做完之后写一段两百字的说明,讲清楚你用了什么数据、跑了哪些步骤、结论是什么。
| 阶段 | 目标 | 练手任务 | 过关标准 |
|---|---|---|---|
| 第一段 | 动作熟练 | 裁剪一小块,做晕渲图并导出 | 不看教程能重做一遍 |
| 第二段 | 分析跑全 | 坡度、坡向、山体阴影、等高线 | 能对每张图讲三句人话 |
| 第三段 | 解决一个小问题 | 通视分析或汇水范围分析 | 能写出一段结论说明 |
三段走完,你再去碰更复杂的水文分析、再去学脚本批处理,会顺得多。因为那时候你知道每个参数在调什么,而不是照着教程按按钮。
我第一次学的时候,图省事跳过第一段直接去跑水文,结果水流在半路断掉,查了两天才发现是原始数据里有个不真实的小凹陷没填。从那以后,我每次拿到新数据都强制走一遍"看范围、看坐标系、看空值、看数值区间"这四步,不管多急都不省。基础检查这五分钟,能把后面五小时的排查省下来。
资源里地形数据、免费软件、教程都在,按第 3 章说的顺序解压,从第 4 章那个例子开始就行。希望帮到你。
本文还有配套的精品资源,点击获取