简介:全球地形数据ETOPO1为全球陆海一体的数字高程模型,以GeoTIFF格式提供,分辨率约2千米,坐标系统为WGS1984,适用于GIS制图、地质研究、海洋测绘及教学演示等场景。压缩包内共3个主文件,包括主数据文件tif、金字塔概览ovr及辅助元数据xml,完整覆盖全球陆地与海底地形信息,整体大小约266MB。目前已有3020人学习下载,数据经过整合可直接加载至ArcGIS、QGIS等主流平台使用。该数据集融合了陆地高程与海洋深度,便于用户进行全球尺度地形分析、剖面提取、可视化渲染及三维建模,是地理信息相关从业者与科研人员的高质量基础底图数据。 做地形分析的人,十有八九都会碰到这样的文件:从 SRTM、ASTER GDEM 或者 Copernicus DEM 下载的全球地形数据,后缀名几乎清一色是.tif。TIF 或者说 GeoTIFF,已经成为栅格地形数据最通用的容器,ArcGIS、QGIS、南方 CASS 这些工具对它都能识别,但识别归识别,真用起来问题一个接一个:文件太大打开卡死、在 CASS 里插进去不知道下一步怎么办、想导出一个 TIF 边界范围半天找不到工具、各种范例资源也不知道去哪里下。
这篇文章就围绕“全球地形数据 TIF 格式”这条主线索,把我在项目里反复走过的流程完整串一遍:先说明全球地形数据有哪些来源、TIF 地形文件和普通影像文件有什么本质区别;再讲范例下载时怎么选数据、怎么避免一下下载全世界;然后重点解决两个高频痛点——TIF 文件太大怎么办,以及 ArcMap 中如何导出 TIF 数据边界;最后聊南方 CASS 加载 TIF 后该如何做数据处理。适合刚接触地形栅格数据的测绘、GIS 从业者和学生,也适合已经拿到数据但被各种格式问题卡住的朋友。
1. 先搞清楚:全球地形数据的 TIF 到底是什么
1.1 主流全球地形数据源与 TIF 组织方式
全球公开地形数据现在已经很丰富,关键是你得知道自己拿到的 TIF 是哪家的、分辨率多少、坐标怎么组织的。我常用的几套数据如下:
| 数据源 | 标称分辨率 | 覆盖范围 | 常见格式与位深 | 适用场景 |
|---|---|---|---|---|
| SRTM | 30米 / 90米 | 南北纬 60° | GeoTIFF,16 bit 整型,单波段 | 大范围地形分析、等高线生成、坡度坡向 |
| ASTER GDEM | 30米 | 南北纬 83° | GeoTIFF,16 bit 整型,单波段 | 高纬度补充,SRTM 覆盖不到的区域 |
| ALOS AW3D30 | 30米 | 全球 | GeoTIFF,16 bit 整型 | 精度要求较高的小流域建模 |
| Copernicus DEM | 30米 / 90米 | 全球 | GeoTIFF,16 bit 或 32 bit 浮点 | 目前我最推荐的新全球地形底图 |
这些数据下载下来,绝大多数是按照经纬度分幅的,比如N39E116就代表北纬 39 度、东经 116 度这一格。所以“全球地形数据”并不一定是一个巨大的 TIF,更多时候是一堆按图幅命名的 TIF,需要你自己拼接或者按范围裁剪。来源我后面细说,这里先明确一点:TIF 只是容器,真正决定数据质量的是源和分辨率。
1.2 TIF 地形文件和普通影像 TIF 有本质区别
很多新手把地形 TIF 当成卫片来用,一打开发现是灰蒙蒙一片,甚至全黑,就以为数据坏了。其实地形 TIF 和普通影像 TIF 是完全不同的东西。
普通影像 TIF 通常有三个波段,红、绿、蓝,每个像元记录的是颜色值,比如 RGB 三个 0 到 255 的数。地形 TIF 则只有一个波段,每个像元记录的是高程值,可能是整型(比如 SRTM 用 16 bit 整型)也可能是浮点型(比如某些高精度 DEM),显示的时候如果不做拉伸,自然就是黑白灰一片。
另外,地形 TIF 会带很多“额外信息”:一个是地理参考,可能是内嵌在文件头里,也可能以.tfw世界文件的形式放在同目录下;另一个是NoData,用于标记无效区域,比如海洋、云遮挡区、雷达阴影区。处理全球地形数据时,NoData是最容易踩坑的地方——不处理它,后续做填挖方、坡度分析、等高线生成都会被无效像元误导。
为什么大家都用 TIF?说白了,GeoTIFF 开放、支持内部压缩、能叠加金字塔,而且 GDAL 这个底层库对它的支持极其完善。它已经成了栅格数据交换事实上的标准,所以全球地形数据几乎清一色是 TIF。
2. 范例下载与数据选型:别急着把全世界都下载下来
2.1 从哪里下载全球地形数据 TIF
很多朋友一搜“全球地形数据 tif”,第一反应是找个网盘链接。我不建议这么干,一是不知道数据是否被处理过、投影是哪套、有没有裁剪过;二是版本混乱,出了问题你根本不知道源头是哪。正规渠道其实很多,而且全部公开:
- USGS EarthExplorer:最经典,SRTM、ASTER GDEM 都有,可以按框选范围直接下载。
- NASA Earthdata Search:需要注册,适合下载 ALOS 和部分 SRTM 产品。
- Copernicus Data Space Ecosystem:下载 Copernicus DEM 的正规途径,支持按范围检索。
- AWS Open Data:Copernicus DEM 有公开的 S3 存储,速度很快,适合程序化批量下载。
- 国内一些科研数据平台也可以找到镜像,适合网络条件不太方便直接访问国外站点的情况。
下载时不要直接点“全球拼接版”,除非你确定自己需要全球尺度。实操里更聪明的做法是:先根据项目范围确定需要的图幅编号,只下载覆盖工作区的几景,作为“范例”把流程跑通,再决定是否扩大范围。这里的“范例下载”不是下载 demo 文件,而是下载覆盖你目标区的样例图幅,验证数据格式、坐标系、清晰度,都满足要求后,再进入批处理。
2.2 下载时要注意的坐标系、尺寸和命名规则
地形 TIF 下载时最容易忽略的是坐标系问题。SRTM 和 Copernicus DEM 大多自带地理坐标系 WGS84,也就是经纬度坐标,单位是度。如果你后续要算面积、坡度,或者要和地方坐标系叠加,就需要投影转换,不能直接拿着经纬度的 DEM 算距离。
图幅命名规则也要熟悉。以 SRTM 为例,文件名通常包含南/北纬度和东/西经度,如N39E116,这代表图幅左下角在南纬?其实是 N39、E116 附近。不同数据源的命名略有差异,但基本都是“纬度+经度”的组合。下载前要把目标范围换算成图幅编号,不然就得多下载很多无关区域。
文件后缀.tif旁边如果同时有.tfw和.prj文件,说明坐标信息完整,可以放心用。如果只有孤零零一个.tif,加载后大概率会“跑偏”,后面配准就很麻烦。我的习惯是下载完先看一遍文件目录,缺了.tfw及时补,别等到进软件才发现。
3. TIF 文件太大怎么办:从数据组织层面优化
3.1 为什么全球地形 TIF 动辄几个 GB
好几个朋友问过我“GIS 里 TIF 文件太大怎么办”,他们往往拿到的是全球合并好的 DEM。你可以简单算一下:SRTM 30 米分辨率全球覆盖,按 16 bit 整型存储,以赤道附近每 1°见方 3600×3600 像元左右,单景大概 25MB;如果直接拼接成一整幅未压缩的 GeoTIFF,全球几百 GB 都不是夸张数字。如果是 32 bit 浮点格式,体积还要再翻一倍。
文件大主要有三个原因:一是像元数太多,分辨率高没办法;二是位深高,浮点比整型占空间;三是没有压缩,很多下载原始数据或者自行拼接时没选压缩选项。所以优化思路也是围绕这三点来的。
3.2 快速压缩、建金字塔和转 COG 的实操方案
推荐一套我从项目里沉淀下来的优化流程,不需要 ArcGIS 工具箱,用 GDAL 命令行就行,Windows 下装一个 OSGeo4W 或者 QGIS 自带的命令行都能跑。
压缩转格式,把未压缩 TIF 转成压缩 TIF:
gdal_translate -of GTiff -co COMPRESS=DEFLATE -co ZLEVEL=9 input.tif output.tifDEFLATE是无损压缩,高程数据压缩率通常相当可观,ZLEVEL=9是最大压缩级别。如果追求兼容性,也可以用LZW。注意压缩后第一次读取会比未压缩慢一点点,但磁盘占用和传输时间大幅降低,总体是赚的。
更推荐的做法是转成 COG(Cloud Optimized GeoTIFF):
gdal_translate -of COG -co COMPRESS=DEFLATE input.tif output_cog.tifCOG 的优势在于内部以块为单位存储,并且自带金字塔,互联网服务端读取时可以直接按需拉取局部数据,不用把整个文件下载下来。ArcGIS Pro 和 QGIS 读取 COG 都很顺畅,实测下来大幅减少“加载全球 TIF 卡死”的情况。
如果只是某个区域文件大,但精度要求不高,直接重采样降低分辨率,体积可以缩小数倍:
gdalwarp -tr 0.000833333333333333 -r bilinear input.tif output_90m.tif-tr后面是输出像元大小,0.000833333333333333约等于 90 米。也可以先按范围裁剪:
gdal_translate -projwin 116 40 117 39 input.tif 裁剪.tif在 ArcGIS 里面如果不想用命令行,至少做两件事:一是右键栅格图层,在属性里计算统计值并构建金字塔;二是如果数据只是用于叠加展示,不要硬拼接成大文件,用镶嵌数据集或栅格目录管理分幅 TIF,同样能缓解“文件太大”的压力。
4. ArcMap 中导出 TIF 数据边界:把影像范围变成矢量面
4.1 导出边界到底导出的是什么
“arcmap 将 tif 数据边界导出”这个操作看着简单,但很多人理解有偏差。TIF 的边界不是简简单单一个矩形框,而是有效像元的外轮廓。因为地形 TIF 经常带有 NoData 区域,比如海洋、空洞,这些区域的像元值无效,如果直接画矩形,边界就会包含大片无数据区。导出边界的本质是把有效像元范围栅格化成一个或者多个矢量面,方便后续制图、接边检查、生成图廓、和数据清单管理。
4.2 用栅格计算器和栅格转面导出边界
在 ArcMap 里我最常用的方法,是不需要额外扩展工具箱,用基础空间分析模块就能做。
首先,加载你的 TIF。打开 ArcToolbox,找到 Spatial Analyst Tools -> Map Algebra -> Raster Calculator,输入表达式:
Con(IsNull("你的TIF文件名"), 0, 1)这个表达式的意思是:如果像元值是 NoData,就输出 0;否则输出 1。这样得到一张只有0和1的临时栅格,1就是有效数据区域。如果你确认高程数据没有负数问题,也可以简单写成"你的TIF文件名" >= 0,但用IsNull更安全。
然后打开 Conversion Tools -> From Raster -> Raster to Polygon,输入刚才生成的临时栅格,字段选Value,勾选“简化面”或根据需要取消。生成的面就是 TIF 的有效像元边界。如果结果是一堆细碎的小面,是因为 NoData 区域把有效数据切碎了,可以在数据管理工具里的 Dissolve 把相邻面融合成一个整体。融完以后,用 Feature to Polygon 或 Editor 清理一下孔洞,就是一份干净的边界矢量。
如果你电脑里有 GDAL,更快的命令行做法是先用 gdal_calc 生成 mask,再 polygonize:
gdal_calc.py -A input.tif --outfile=mask.tif --calc="A>=0" --NoDataValue=0 gdal_polygonize.py mask.tif -mask mask.tif boundary.shp这个方法适合批量处理几十个 TIF 时使用,一次性全跑完,不需要手动点工具。
4.3 导出边界的实际用途
导出后的边界面可以用来做数据接边检查,比如查看相邻图幅之间的重叠度;也可以放到专题图上当图廓线,或者转成 KML 在在线地图里快速预览工作范围。我通常会把所有下载的 TIF 边界合并成一个范围面,当作项目数据的“索引图层”,后面谁再问哪些区域有数据,直接看这个面就行,不用反复加载大栅格。
5. CASS 加载 TIF 后怎么做数据处理:从配准到绘图的完整流程
5.1 CASS 加载 TIF 的两种方式
CASS 是基于 AutoCAD 平台的,加载 TIF 本质上是插入光栅图像。我试过几种方式:一种是直接用 CAD 的“插入光栅图像”命令,在命令行输入IMAGEATTACH选择 TIF;另一种是通过 CASS 菜单“工具”->“光栅图像”->“插入图像”。二者都能把影像显示出来,但 CASS 和 GIS 不同,它不会因为你 TIF 里有坐标信息就自动把影像放到正确位置,所以经常出现影像在屏幕上一个地方,已有图形在另一个地方。处理的核心就是“配准”。
如果你的 TIF 旁边有.tfw文件,CASS 在某些版本里可以通过“光栅图像纠正”对话框读取该文件实现初步定位,但实际项目中我更推荐手动配准,因为 CASS 用的坐标系统往往和地方坐标有关,光靠世界文件还不够。操作也很简单,选 3 个以上均匀分布在影像上的特征点,比如道路交叉口、房角、明显地物点,和已有 CAD 底图上对应点做对齐。用 CASS 菜单的“工具”->“光栅图像”->“图像纠正”,逐个点选控制点,纠正完成后影像就能“落”到正确坐标上。如果只用 CAD 命令,也可以用ALIGN对齐命令,但精度以及对含透明 NoData 的 TIF 处理不如前者。
5.2 配准完成后,如何基于 TIF 做数据采集
很多测绘人关心的“cass 加载 tif 文件后怎么做数据处理”,本质上无非两件事:一是把影像当作底图,在上面画地物、房屋、道路;二是从地形 TIF 中提取高程信息,生成等高线。
地物采集很简单,CASS 里该画线画线、该点符号点符号。关键问题是,地形 TIF 在 CASS 里是没有“像元值”概念的,CASS 不会告诉你鼠标点的地方高程是多少。所以如果你拿到的 TIF 是 DEM,想在 CASS 里直接用它点高程点,是行不通的。
正确做法是把高程提取这一步放在 GIS 里做。我的常规流程是:先在 ArcGIS 中加载 DEM TIF,用 Spatial Analyst 或者 3D Analyst 里的 Contour 工具生成等高线,等高距根据成图比例尺设置,比如 1:10000 地形图取 2 米或 5 米等高距。生成等高线后,可以直接把线图层转成 DXF,再到 CASS 里打开,作为新图层叠加到影像上。这样既保留了 DEM 的高程精度,又发挥了 CASS 在成图编辑方面的特长。后续在 CASS 里要做的工作只是检查等高线、修短线、剔除噪声,以及给等高线赋正确的高程属性。如果需要高程点,也可以在 ArcGIS 中通过 DEM 提取一批均匀采样点,把点转成 DXF 导入 CASS,再转成 CASS 的高程点实体。
5.3 CASS 处理大 TIF 的坑
CASS 对大型栅格的处理能力很有限。一个几百 MB 的 TIF 插进去很容易卡顿,尤其是缩放平移时。我建议在进 CASS 之前,先在 GIS 里把 TIF 裁剪到工作区范围,并压缩,输出成带.tfw的标准 TIF 或 JPG。如果只是当看影像底图,我甚至用过带坐标的 JPG 替代 TIF,加载速度快很多,但前提是不要丢失定位信息。另一个坑是灰度 TIF 在 CAD 里显示全黑,原因是范围拉伸方式不一样,解决办法是把显示环境里的亮度对比度调一下,或者在输出前用图像处理软件把灰度 TIF 增强一下再插入,但注意不要改变坐标关系。
6. 常见问题与排查技巧实录
下面这份速查表是我在多个项目里反复遇到并验证过的问题,直接可以当成模板用:
| 问题现象 | 可能原因 | 解决办法 |
|---|---|---|
| TIF 在 ArcMap 显示全黑 | 单波段高程数据未做拉伸;位深过大 | 图层属性里选择拉伸显示,计算统计值,或者转成 8 bit 显示副本 |
| 全球 TIF 打开特别慢 | 文件未压缩、无金字塔、体积过大 | 构建金字塔,转 COG,按范围裁剪 |
| CASS 插入 TIF 后不显示 | 文件路径有中文或者位深不支持 | 换到纯英文路径,转成 8 bit TIF 或 JPG |
| 影像与 CAD 图形位置差很远 | 未配准,坐标系不一致 | 用图像纠正功能选控制点配准 |
| 导出 TIF 边界时把黑边也包含进来 | 没有正确设置 NoData | 用 IsNull 生成有效像元 mask,再转面 |
| SRTM 数据有空洞 | 原始数据覆盖不足 | 使用 Fill 工具或邻域插值处理 |
| TIF 自带坐标但在 CASS 里对不上 | 中央经线或投影参数不一致 | 在 CASS 中重新定义坐标系,或转换成地方坐标系后再加载 |
最后分享几个我个人的习惯。首先,全球地形数据下载后,不要直接扔进 ArcMap 或 CASS,先用gdalinfo看一眼投影、NoData 和文件体积,心里有数再处理。其次,能分幅就不拼接,能裁剪就裁剪,这样文件大、加载慢的问题能少一大半。再次,给同事或领导交付 TIF 时,尽量同时附一个.tfw文件和说明文档,不然很多人根本不知道坐标信息在哪里。CASS 流程中,我最推荐的还是“GIS 生成等高线 -> DXF 导入 CASS 编辑”,而不是拿着影像在 CASS 里硬描,效率完全不是一个级别。这套流程反反复复用下来,稳定省心,基本没出过什么岔子。
本文还有配套的精品资源,点击获取