做地图的人应该都有这种体验:一旦要画世界级的地形地貌图,投影选择就成了绕不开的坎。以前我处理这种“全球底图”需求时,常用的Robinson投影看着舒服,但一做面积相关的分析就露馅;换成严格等积的Mollweide吧,视觉上又总觉得生硬。第一次看到Equal-Earth-Physical-Map-Raster这套栅格底图时,我第一反应是“终于有人把好看和保真这两件事拧到一起了”。这套用Equal Earth等面积投影制作的世界地形地貌全图,本质是一个把地形晕渲、海拔分层设色和等积投影全部预渲染好的全球栅格数据集,拿到手就能作为底图用,特别适合GIS分析出图、信息可视化,以及需要全球范围地貌背景的专题制图场景。这篇文章我就从投影原理、数据集组成、实际加载出图到常见坑位,完整过一遍。
1. Equal Earth投影:为什么值得单独为它做一张图
1.1 世界地图投影的两难:好看但失真,保真但难看
所有世界地图都面临同一个困局:地球是个球,图纸是张平面,把球面展开到平面,面积、形状、距离、方向这四样东西不可能同时保真。你保住其中一样,其他几样就得让位。这就是地图学里常说的“投影必然产生变形”。
过去很长一段时间,行业内做全球专题图的首选是Robinson投影。它的线条柔和,大陆轮廓看上去很自然,像一颗被轻轻压扁的橘子皮。但它有一个致命弱点:它不是等积投影。什么意思?在Robinson投影下,高纬度地区的面积被明显放大了。比如格陵兰在图上看着快赶上非洲了,实际面积却只有非洲的八分之一左右。如果你在这张图上做区域面积极统计、密度分析或者资源分布比较,结果会是错的,而且是系统性偏差。
与之相对,Mollweide投影是严格等积的,面积关系完全正确。可它的经线在极地收紧,视觉上像个竖着的椭圆,放世界地图总觉得有点“学术脸”,给非专业观众看时说服力不够。
Equal Earth投影就是为了打破这个僵局出现的。它在视觉上保留了Robinson那种自然柔和的观感,又在数学上保证了面积严格等积。这两个优点放在一起,基本就是为全球地形底图量身定做的。
1.2 Equal Earth投影的核心原理
Equal Earth投影由Šavrič、Patterson和Jenny三位制图学者在2018年正式提出。它属于伪圆柱投影家族:纬线是水平直线,经线是向两极收拢的平滑曲线,中央经线是直线。
它的核心几何思想是:把地球表面按等面积条件映射到一个圆柱面的变体上,然后展开成平面。关键调校发生在纬线的“纵向间距”上。一般的圆柱投影中,纬线间距是均匀的,这会导致高纬度面积被横向拉伸;Equal Earth则通过精心设计的非线性拉伸函数,让高纬度地区在垂直方向被压缩、低纬度地区在垂直方向被拉伸,从而补偿水平方向的面积误差,最终保证任意一块封闭区域的面积比例都与地球实际面积比例保持一致。
听起来很复杂,但实际效果很直观。用大白话说就是:“该大的地方就大,该小的地方就小,比例完全不虚标。”像俄罗斯北部、加拿大北极群岛、南极洲这些在等角投影里经常被吹得不成样子的高纬度区域,在Equal Earth投影下都回归了真实体量,同时大陆轮廓又依然舒展,没有Mollweide那种明显的“橄榄球感”。这一点对地形地貌底图来说尤其重要,因为山体分布、森林覆盖、沙漠范围这些信息一旦面积失真,读者对“某类地貌到底占地球多大比例”的判断就会被严重带偏。
1.3 与主流等积投影的横向对比
拿Equal Earth和另外几个常见等积投影放在一起比,差异一下就清楚了:
| 投影 | 等积性质 | 视觉舒适度 | 典型用途 | 主要问题 |
|---|---|---|---|---|
| Equal Earth | 严格等积 | 高,接近Robinson | 全球地形图、专题图、教学用图 | 相对较新,部分旧软件没有预设 |
| Mollweide | 严格等积 | 中,两极收紧明显 | 学术论文、气候分布图 | 视觉偏“椭圆”,非专业观众接受度低 |
| Sinusoidal | 严格等积 | 低,高纬度剪切严重 | 逐洲制图、小范围区域 | 全球图在极地方向极度压缩 |
| Eckert IV | 严格等积 | 中高,极地呈圆润弧线 | 全球统计图 | 经纬网较密,视觉稍显“密恐” |
| Robinson | 非等积 | 很高 | 装饰性地图、媒体配图 | 面积变形,不能用于面积分析 |
从这张表能看出来,Equal Earth在“等积”和“观感”两个维度的综合得分是最均衡的。所以现在很多GIS数据集都开始提供Equal Earth版本,世界地形地貌全图也顺理成章地以它作为默认投影。EPSG注册中心还给Equal Earth分配了官方坐标系代码EPSG:8857,全球范围通用版本直接引用这个编码就行,做数据交换时非常省心。
2. 地形地貌全图解析:一张栅格图里到底藏了哪些信息
2.1 海拔底子:从DEM到可视化表面
我们最终看到的是色彩丰富的“地形图”,但这张图背后其实是多层数据叠加的产物,不是随便拍一张卫星照片就完事。
最底层的数据是数字高程模型(DEM),也就是反映地表海拔的网格数据。常见来源包括SRTM、GMTED2010、GTOPO30等,它们记录了地球上每个格网单元的平均海拔值。以全球范围为例,常见的分辨率有30角秒(约1公里)和更精细的15角秒(约500米)。如果是用于制图的全球底图,通常会把高精度DEM重采样到统一分辨率,再经过拼接和裁剪,得到一个连续、无缝的全球海拔场。
有了DEM之后,要让它变成肉眼能看懂的地形,还需要两步关键加工。
第一步叫山体阴影(hillshade)。简单说,就是假设一个光源从西北方向照过来,根据坡向和坡度计算每个像素的明暗程度。山脊朝光的部位亮,背光的部位暗,这样原本只是一个平平的灰度海拔图,立刻就有了“立体感”。山体阴影本质上是一种增强视觉认知的手段,它不改变任何真实数据位置,只影响观感。
第二步叫海拔分层设色(hypsometric tint)。把海拔范围划分成多个区间,每个区间指定一种颜色:深海是深蓝,浅海是浅蓝,平原是绿色,高原是黄棕,高山是褐色,雪线以上是白色。这块全图做得好的地方在于,色带过渡非常自然,没有生硬的等高线“断层感”,即使不看等高线也能一眼分辨出喜马拉雅、安第斯、撒哈拉等地貌单元。
2.2 地形与海洋:栅格底图的双重属性
这套全图一个容易被忽略但又很加分的设计,是它对海洋地貌同样做了表达。传统的世界地图经常把海洋处理成一片均匀的蓝色,但这张图在浅海区域加入了大陆架晕渲,大洋中脊、海沟、深海平原也有一定程度的明暗变化。这样做的好处是,当你把点状数据或路径数据叠加上去时,海洋区域不会显得空荡荡,整体信息密度更均匀。
这一点在做全球航线、海底电缆、洋流研究或近海工程分布图时特别有用。以前我经常得在底图之外再叠加一层海洋深度色带来弥补,现在直接用这张栅格图,省掉一个图层的同时,出图效果也干净不少。
另外,它的陆地与海洋接壤处处理得很细致,海岸线附近的晕渲没有明显的锯齿或“白边”。这背后通常是制图师对掩膜层做了羽化和边缘融合,如果你自己用DEM手工做地形图,这一步是经常容易翻车的部位,平原过渡到海域时一旦色阶断层,整张图的质感就垮了。
2.3 栅格格式的技术规格与选型
既然标题里带“Raster”,就得聊清楚栅格版的技术参数。这套地形全图最常见的发布格式是GeoTIFF,这是一种把图像像素和地理空间定位信息(坐标系、范围、像元大小)打包在一起的标准格式,GIS软件打开即自动对齐到正确的地理位置。
分辨率方面,全球范围的通用版本常见尺寸在21600×10800像素左右,也就是每个像元对应约30角秒(约1公里地面距离)。如果要印刷大尺寸图纸,这个分辨率足够满足A0甚至更大幅面的出图需求;如果只是放网页上做预览,还会有更轻量的PNG或JPG版本。我不建议一上来就去下载最高精度的超大文件,除非你确实需要。我之前就干过这种事,下载了一个1.2GB的全球GeoTIFF,结果只是在做一张文章配图,最后不得不反复重采样,纯粹浪费时间和磁盘空间。
颜色深度上,常见的是8位RGB,也就是每个像素用红绿蓝三个8位通道描述颜色。至于带透明通道的RGBA版本,主要是为了让你把地形图叠加在其他影像底图上的时候,透明区域能透出下层图层。真要用这张图当底图,我一般优先选不透明RGB版,颜色更饱和,浅层的山体阴影细节保留得也更好。
3. 实操过程:把Equal Earth地形全图用起来
3.1 第一步:获取数据并检查文件信息
拿到数据后,第一件该做的事不是直接拖进软件就开画,而是先检查栅格的元数据。那就打开终端,敲一行命令查看GeoTIFF的完整信息:
gdalinfo EqualEarth_Physical_Map.tif这行命令会输出一大堆信息,我通常只重点看几项:文件大小和尺寸(Size is 21600, 10800)、像素大小(Pixel Size)、坐标系(Coordinate System is),以及数据范围(Corner Coordinates)。一个健康的Equal Earth版本,Coordinate System这一栏应该显示为Equal Earth投影,并且承载了EPSG:8857的编码。如果这栏显示的是WGS 84,也就是经纬度坐标,那说明这份数据还没有被真正投影过,只是把彩色地形图铺在了经纬度网格上,加载时必须多加小心。
如果手头没有GDAL环境,也可以直接在QGIS中加载栅格图层,然后右键图层,进入“属性 → 信息”,查看同样的元数据。这一步花不了一分钟,却能在后续避免大量莫名其妙的错位问题。
3.2 第二步:在QGIS中加载和叠加矢量数据
把GeoTIFF拖进QGIS后,正常现象是直接看到完整的世界地形图。如果图层没出现在预期位置,多半是坐标系定义缺失或文件损坏,这时需要手动指定坐标系。
接下来叠矢量数据,比如国界、河流、城市点。我习惯的做法是先把矢量数据转换到和栅格一致的坐标系,而不是依赖软件的实时投影。在QGIS中,右键矢量图层,选择“导出 → 另存为”,在CRS一栏填入EPSG:8857,保存为新文件后再加载,这样矢量与栅格之间就不需要每次渲染都做动态投影换算,叠加精度和渲染速度都更好。
如果数据量很大,或者你更习惯命令行,可以直接用ogr2ogr:
ogr2ogr -t_srs EPSG:8857 countries_equal_earth.shp countries_4326.shp这样做的好处是可以批量处理多个图层,而且结果一旦生成,后续反复出图都不会因为投影变换出现偏差积累。
3.3 第三步:重投影与构建金字塔
有时候你手头有一张大范围影像或者其他栅格底图,需要把它的投影转换成Equal Earth后再与地形全图叠加。此时用gdalwarp就能完成:
gdalwarp -t_srs EPSG:8857 -r bilinear source_world.tif output_equal_earth.tif这里-r bilinear指定了重采样方式为双线性插值,适合连续型数据比如卫星影像。
另一个很容易被忽略的操作是建立金字塔(overviews)。全球尺度的GeoTIFF非常大,在QGIS里缩放和平移时如果没有金字塔,每动一下视图计算机都要读全分辨率数据,卡顿是必然的。建金字塔的命令很简单:
gdaladdo EqualEarth_Physical_Map.tif 2 4 8 16 32这条命令会生成一系列降低分辨率的缩略层,软件在缩小视野范围时自动调用合适层,流畅度提升非常明显。实测下来,21600×10800的全图在建完金字塔后,即使在配置一般的笔记本上也能丝滑缩放。
3.4 第四步:出图时的布局设置
在QGIS的打印布局中,把地形全图作为底图放好之后,我建议添加经纬网网格。由于它本身已经是投影坐标,经纬网不再是直线,而是略带弧度的曲线,这会极大增强地图的专业感。
添加方式是在布局中选择“添加地图”,然后在“网格”选项里新建网格,间隔可以设置为30度或45度,标出经纬度标签。比例尺部分,因为投影在高纬度有面积保真但长度并不严格保真,所以比例尺只能作为参考,使用时应注明“该比例尺仅在赤道附近准确”。这一点写在地图附注里,能让你的出图严谨性提高一个档次。
4. 常见问题与排查技巧实录
4.1 加载后图层是“歪”的或完全错位
这个问题我踩过不止一次。现象是栅格加载后,图像位置不在预期范围内,或者和矢量数据完全对不上。
排查思路分两步:先看源数据定义。如果gdalinfo显示坐标系统是EPSG:4326,但文件内容明明已经是Equal Earth的平面效果,那就是数据在输出时丢了投影定义。解决办法是用gdal_edit.py手动写入坐标系统,而不是重新投影,因为重新投影会把已经处于平面坐标的影像当经纬度再转一次,结果会彻底变形:
python gdal_edit.py -a_srs EPSG:8857 EqualEarth_Physical_Map.tif如果是QGIS环境,也可以直接在图层属性里点击“指定CRS”,人工填入EPSG:8857。写入定义后,图像就会正确对齐。
4.2 打开全球大图时内存直接爆掉
全球高分辨率栅格文件动辄几百MB甚至上GB,电脑内存一紧张就卡死。最常见的原因是QGIS默认尝试加载全分辨率数据,这时候两个方法可以救急。
方法一是建立金字塔,这个前面已经说过,属于一劳永逸的手段。方法二是如果只是要局部区域,先裁剪再处理,用gdalwarp配合-te参数指定目标范围矩形:
gdalwarp -te -180 -60 180 90 -te_srs EPSG:4326 -t_srs EPSG:8857 big_file.tif subregion.tif裁剪后的文件体积小几个数量级,处理局部专题图完全够用。我自己在渲染某一洲范围的地貌图时,基本都是先裁剪再出图,内存占用基本不会超过1GB。
4.3 叠加不同底图后颜色差异明显
Equal Earth地形全图自带完整的色带和晕渲,一旦你叠加了其他卫星底图,两者的色调如果不匹配,视觉上会很脏。解决办法是不要拿它直接叠在Web墨卡托的在线底图上。它更适合作为唯一的连续背景,矢量要素则以半透明或线条方式叠加。如果确需混合使用,建议把其他底图的透明度调到70%以下,并且把地形全图的混合模式改为“叠加”或“正片叠底”,这样能保留地形体积感的同时兼顾底层影像的信息。
我试过把OpenStreetMap的注记透明化叠加在它上面,效果还行,但注记颜色和地形色带有冲突。最后我还是选择单独使用这张底图,搭配自己手动的注记图层,整体风格反而更统一。
4.4 常见问题速查表
| 问题现象 | 可能原因 | 解决办法 |
|---|---|---|
| 图是“歪”的且无法对齐 | 缺少或错误的投影定义 | gdalinfo检查,用gdal_edit.py或QGIS指定EPSG:8857 |
| 缩放平移卡顿严重 | 未建立金字塔 | gdaladdo生成2/4/8/16/32层概述 |
| 与矢量数据位置对不上 | 矢量/栅格坐标系不一致 | 将矢量导出为EPSG:8857,或动态投影后重新导出 |
| 渲染颜色偏灰 | 8位色深在显示时被拉伸 | 检查图层渲染设置,关闭自动色带增强,用原值显示 |
| 局部区域细节不够 | 全球底图分辨率有限 | 替换为该区域更高分辨率DEM重新渲染晕渲 |
| 出图比例尺不准 | 投影本身不是等距投影导致的正常现象 | 图面注明比例尺仅在参考纬线准确 |
4.5 一个小众但好用的技巧:局部区域增强
如果你需要突出某个特定区域的地形,不需要重新下载,直接用原图配合QGIS的“色带渲染”功能即可。复制一份原栅格图层,调整透明度曲线,将目标区域的亮度稍微拉高、其他区域压暗,形成“焦点地图”的效果。这一招在做论文配图和汇报展板时特别好用,几十秒就能完成视觉聚焦,省掉手动PS的功夫。
另外提醒一句,凡是涉及面积对比(比如“该区域占全球面积的百分比”)的出图,一定要确认底图和统计数据的投影一致且为等积投影。我在实际项目中见过不少同行拿Web墨卡托底图做了面积统计,结果高纬度数值偏大,被外审直接打回来。用了Equal Earth之后,这类问题基本不会再出现。
5. 一点个人体会
在我自己做过的一堆全球专题图里,Equal-Earth-Physical-Map-Raster这组底图的使用频率非常高。最初吸引我的是它省事:从渲染好的山体阴影到规范的投影参数全部就绪,导入即用,不需要我再重复DEM到晕渲到注记的漫长流程。真正让我觉得它是“长期饭票”的,则是它把等积特性和视觉表现力平衡到了一个可持续使用的水平——做分析图可信,做展示图也拿得出手。
最后再分享一个小操作习惯:我会把这张底图和它的投影定义文件放在同一个项目目录里,并且固定使用一次性的命名规范,比如equal_earth_physical.tif加同名.prj描述文件。这样不管是自己隔几个月回头复用,还是把工程打包发给同事,都不会出现“这是什么坐标系”的尴尬。数据资源再优秀,分不清坐标系的用法也会白搭。