
简介广州地形数据.rar是一份面向GIS从业者、城市规划人员及环境研究者的地形数据包内容涵盖广州地区边界、水系、道路等基础要素可作为数字高程模型DEM和数字地形模型DTM的数据来源用于坡度分析、地表形态解读和空间规划。压缩包共16个文件以adf栅格数据、nit索引文件、dat属性数据及log记录文件为主整体仅4.45MB轻量紧凑但结构完整便于分发和直接使用。已有178人浏览学习适合城市地形分析、交通线路选址、灾害风险评价与土地利用规划等场景也可作为生态保护与气候研究的基础图层。借助shp等通用格式读者可在ArcGIS、QGIS等主流GIS软件中直接导入、叠加与可视化快速提取海拔、坡度、起伏度等关键地形指标并生成等高线图、剖面图、坡度图等可视化成果为科研与工程实践节省前期数据准备时间也便于教学演示与学术研究。1. 拿到“广州地形数据.rar”你真正要处理的是坐标系和压缩包两层问题一个.rar文件本身没什么好说的真正让从业者卡住的是这三点第一压缩包可能设有密码而很多测绘数据在传递时习惯性加密一旦交接文档丢了解压就成了第一道坎第二解压之后你会拿到一堆 GDAL 能读、但普通预览软件打不开的栅格文件.tif、.img、.dem混在一起不知道哪个是主数据第三也是最容易被忽视的广州地区的公开地形数据大概率不是标准的 WGS-84 经纬度你需要先确认坐标系再谈裁剪、拼接和出图——否则后处理全是白做。这篇文章就围绕这条链路展开先讲怎么安全地解开 RAR 压缩包并处理加密文件再讲用gdalinfo识别广州地形数据的真实格式与坐标系然后给出用rasterio和 GDAL 做裁剪、镶嵌、投影和坡度分析的完整套路最后收在数据体积与可视化验证这个容易被忽略的环节上。适合 GIS 开发、测绘内业和做城市分析的数据工程师。2. 广州地形数据的常见形态与坐标系先用 gdalinfo 摸底再动手很多新人拿到压缩包解压后第一反应是双击.tif看能不能打开。这一步没错但远不够。地形数据和其他数据不同它的价值不仅在于“有海拔值”还在于投影信息是否完整、像元大小是否一致、波段解释是否正确。任何一个环节出错后面做等高线或坡度分析的结果都不可信。2.1 DEM 栅格与等高线矢量分清你手里的数据类型广州地形数据的常见载体有两类。第一类是数字高程模型DEM表现为单波段栅格每个像元记录一个高程值常见格式有 GeoTIFF、IMGERDAS Imagine、DTED和 Esri Grid。第二类是等高线矢量表现为SHP或DWG用线要素表示不同海拔的等高位置。两者的处理工具完全不同栅格走 GDAL矢量走 Fiona / Shapely 或 CAD 平台。判断一个文件是栅格还是矢量不需要打开软件在命令行里用资源管理器看扩展名就够了。.tif、.img、.dem几乎都是栅格.shp是矢量。但有一种容易误判的情况DEM 文件可能以.ascASCII Grid形式存在而.asc也能被文本编辑器打开很多人会误以为它是普通文档。注意ArcGIS ASCII Grid 是专门的地形数据交换格式第一行ncols和nrows是它的标志性开头。广州的地形数据如果是公开来源如 SRTM、ASTER GDEM、ALOS AW3D30通常是 WGS-84 地理坐标系下的 GeoTIFF如果是国土或规划部门的分发成果更可能是 CGCS2000 或西安 1980 坐标系的IMG或 File Geodatabase。这直接影响你后续用哪个投影做面积和坡度计算——地理坐标系的坡度结果单位是度投影坐标系的坡度才是无量纲百分比或真坡度这个区别在低纬度地区尤其明显。2.2 用 gdalinfo 读取文件头确认范围、像元和坐标系拿到任何地形栅格第一件事不是急着转格式而是读它的元数据。GDAL 自带的gdalinfo是最快的工具Linux 和 Windows 都可以用 OSGeo4W Shell 或 conda 环境里的 GDAL 直接调用。gdalinfo guangzhou_dem.tif输出里重点关注这几项。Driver: GTiff/GeoTIFF Files: guangzhou_dem.tif Size is 3601, 3601 Coordinate System is: GEOGCRS[WGS 84, DATUM[World Geodetic System 1984], PRIMEM[Greenwich], UNIT[degree]] Origin (112.950000000000000,23.950000000000000) Pixel Size (0.000277777777778,-0.000277777777778)Size字段表示栅格的列数和行数Origin是左上角坐标Pixel Size是像元分辨率。上面这个示例是 WGS-84 下的 1 弧秒数据约 30 米如果你做的是广州市中心区域的精细分析这个精度勉强够看地形大势但不足以支撑建筑尺度的坡度分级。如果Coordinate System显示Unknown或Local说明这个栅格文件的地理参考信息丢了。这种情况下不能直接使用需要用gdal_edit.py手动赋予坐标系——但前提是你知道它的原始坐标系。不知道就老老实实把数据发回给数据提供方确认别猜。广州用的投影带常见为 CGCS2000 / 3-degree Gauss-Kruger zone 38中央经线 114°EEPSG 代码是 4547如果是 WGS-84 / UTM zone 49N则对应 EPSG 32649。数据集来源典型分辨率坐标系使用建议SRTM 1 Arc-Second30 mWGS-84区域地形分析够用ASTER GDEM V330 mWGS-84山区细节略差平缓区可用ALOS AW3D3030 mWGS-84精度优于前两者推荐省级测绘成果 DEM5 m/10 mCGCS2000工程级分析首选需申请3. RAR 解压与加密文件处理命令行比图形界面更可控RAR 格式本身是 WinRAR 的专有格式虽然解压算法已经公开但压缩和解压的完整实现仍然依赖unrar或7-Zip。在自动化处理地形数据的场景里命令行解压是唯一可靠的方式——它支持批量解压、保留目录结构、处理分卷包还能把错误信息输出到日志里。3.1 unrar 与 7z 的常用解压参数Linux 下安装unrar-free或unrar皆可macOS 用 Homebrew 安装unrarWindows 下推荐装 7-Zip 并把7z.exe的路径加入系统 PATH。以下是我处理地形数据压缩包的常用命令。# 解压整个包保留原目录结构覆盖时不询问 unrar x -o guangzhou_dem.rar ./output/ # 只解压其中的 TIF 文件排除 SHP 文件夹 unrar e guangzhou_dem.rar ./output/ *.tif # 用 7z 解压自动处理分卷包.rar、.r00、.r01 7z x guangzhou_dem.rar -o./output -yx参数表示保留路径解压e表示把所有文件解压到同一目录不管原路径。地形数据往往带规范的目录结构比如按行政区划分文件夹所以我一般用x而不是e。-o是 unrar 的覆盖参数表示覆盖已存在文件-y是 7z 的全局自动确认参数跳过所有交互提示。解压中文文件名时有一个高频坑Windows 上用 WinRAR 压的包文件名是 GBK 编码Linux 下的 unrar 有时会解出乱码文件名。解决方式是先检查系统 locale在解压命令前加上LANGzh_CN.UTF-8或者用 Python 的rarfile库配合charset参数处理。3.2 加密 RAR 的合法处理路径热词里有不少关于查看 RAR 密码的内容。先说技术事实RAR 加密使用的是 AES-256而且对文件头和文件体采取不同策略。新版 WinRAR 默认加密文件头这意味着你连文件名都看不到暴力破解在密码长度超过 10 位时计算成本会迅速上升到不可接受的水平。16 进制编辑器查看 RAR 密码这个说法只对早期 RAR 2.0 格式有理论意义现代 RAR5 格式下密码信息不在文件中。合法可靠的路径是这四条。第一检查原始邮件或下载站的备注页很多数据分发的密码就写在页面上只是被忽略了。第二问数据提供方要交接说明。第三如果密码是自己之前设置的尝试用密码管理器的历史记录找回。第四如果数据来源合法且你有权使用但密码确实丢失可以联系数据供应商重新分发。自行暴力破解既不道德对长密码也几乎不可行这条路不要费时间。# 如果压缩包只是文件体加密但文件名可见老格式常见 unrar l guangzhou_dem.rarl参数列出压缩包内容。如果你能看到文件名但解压时提示密码错误说明是文件体加密如果连列表都弹密码框就是文件头加密了。对于前者有些文件可以用 7z 尝试读取元数据来判断文件数量。4. 地形数据的裁剪、拼接和投影转换用 rasterio 与 GDAL 落地解压完成、确认坐标系之后就进入真正的数据处理环节。广州的地形数据往往覆盖整个珠三角范围而你要的可能只是天河区或白云山周边这时候需要裁剪如果数据是分幅存储的还需要把多个瓦片拼接起来。这个环节我用 Python 的rasterio做原型复杂批量任务直接用gdalwarp。4.1 按行政边界裁剪 DEM用 GeoJSON 做掩膜裁剪有矩形裁剪和掩膜裁剪两种。矩形裁剪适合你只要一个经纬度边界框的场景掩膜裁剪适合按行政区划、流域或自绘多边形切出不规则形状。无论哪种操作都是先读取边界矢量再用rio.clip完成。import rasterio from rasterio.mask import mask import geopandas as gpd import json # 读取广州某个区的边界假设已有 guangzhou_district.shp gdf gpd.read_file(guangzhou_district.shp) gdf gdf.to_crs(EPSG:4326) geoms gdf.geometry.values # 用边界裁剪 DEM with rasterio.open(guangzhou_dem.tif) as src: out_image, out_transform mask( src, geoms, cropTrue, nodatasrc.nodata ) out_meta src.meta.copy() out_meta.update({ driver: GTiff, height: out_image.shape[1], width: out_image.shape[2], transform: out_transform }) with rasterio.open(guangzhou_clipped.tif, w, **out_meta) as dst: dst.write(out_image)mask函数的前两个参数分别是数据源和边界几何对象cropTrue表示自动计算外接矩形并裁掉多余区域。注意gdf.to_crs(EPSG:4326)这一步很关键——如果矢量是 CGCS2000 而你直接拿去裁剪 WGS-84 的栅格裁剪结果不会有物理错误但边界位置会偏移。确保矢量和栅格在同一个坐标系下再做掩膜。4.2 多幅地形瓦片镶嵌与投影转换广州的地形数据如果来自 SRTM通常按照经纬度分幅存储需要用gdalwarp合并成一个文件。gdalwarp同时也能完成投影转换两件事可以一次做完。# 把分幅 DEM 镶嵌并重投影到 CGCS2000 高斯投影 gdalwarp -t_srs EPSG:4547 -r cubic -tr 10 10 \ -co COMPRESSDEFLATE -co TILEDYES \ tile_*.tif guangzhou_merged_10m.tif-t_srs EPSG:4547是 CGCS2000 / 3-degree Gauss-Kruger zone 38这是珠三角工程测量的常用投影-r cubic指定重采样方法为三次卷积适合 DEM 这类连续表面数据-tr 10 10把输出像素设为 10 米如果源数据是 30 米这个操作用来量化到目标分辨率。-co COMPRESSDEFLATE -co TILEDYES是无损压缩加瓦片存储GDAL 读大文件时的性能会好很多。4.3 坡度、坡向与山体阴影计算地形数据最常见的衍生分析是坡度。用gdaldem一条命令就能出结果但参数含义要理解到位。# 计算坡度输出单位是度 gdaldem slope guangzhou_merged_10m.tif guangzhou_slope.tif \ -p -s 111120 # 生成山体阴影默认只给黑白效果 gdaldem hillshade guangzhou_merged_10m.tif guangzhou_hillshade.tif \ -z 1.0 -az 315 -alt 45-p表示输出百分比坡度不写-p输出度-s 111120是关键参数它表示水平与垂直方向的比例因子。当 DEM 是经纬度坐标系时一个纬度的水平距离约 111120 米如果没有-s参数坡度会被严重高估。-z是垂直拉伸倍数-az是太阳方位角-alt是太阳高度角。5. 检查裁剪成果用可视化验证数据质量与纹理细节处理完的数据不能直接拿去用图形化的检查比数字检查更直观。我通常把成果叠加在 QGIS 里配上 GEBCO 色带快速查看阴影覆盖和异常高程点重点验证像元的比例是否合理、广州主城区是否有明显的数据空洞。5.1 把结果转成 Pyramid TIFF 并生成缩略图DEM 动辄几百 MB直接用 QGIS 打开会很卡。先构建金字塔再生成一个低分辨率缩略图用来在网页端或报表里快速预览。# 构建金字塔 gdaladdo -r average guangzhou_merged_10m.tif 2 4 8 16 32 64 # 输出一个低分辨率 PNG 缩略图 gdal_translate -outsize 1024 0 -of PNG \ guangzhou_merged_10m.tif guangzhou_preview.pnggdaladdo对大型 DEM 的效果立竿见影QGIS 里缩放时的卡顿感会明显下降。-r average指定重采样方法为均值对连续表面的 DEM 来说比最近邻平滑得多。gdal_translate的-outsize 1024 0表示宽度 1024 像素、高度按比例自适应适合生成预览图。5.2 检查高程范围与无效值清理数据坑数据质量问题经常出在无效值上。SRTM 原始数据的水域部分高程值为 0ASTER 数据则可能有负值异常斑块这些在坡度分析中会被放大成假的峭壁和凹陷。用gdalinfo -stats快速查看每波段的最小值、最大值和无效值标记。gdalinfo -stats guangzhou_merged_10m.tif如果发现 min 值是异常负数比如-32768那代表有未处理的 NoData 空洞。修复方式是用gdal_fillnodata它会用周围有效像素插值填充。gdal_fillnodata -md 20 guangzhou_merged_10m.tif \ guangzhou_filled.tif-md 20表示搜索半径单位是像元。20 个像元对应 200 米范围的插值对地形数据来说已经足够平滑。再大就会把真实地形细节一起抹掉不建议盲目加大。5.3 最后的压轴技巧用 COG 转换提升分发与远程读取效率如果这份广州地形数据要共享给团队或嵌入 Web GIS不要直接发原始 TIFF。把它转成 Cloud Optimized GeoTIFF服务端才能支持 HTTP Range 请求只传输你当前视野范围内的数据块。gdal_translate guangzhou_filled.tif guangzhou_cog.tif \ -of COG -co COMPRESSLERC \ -co BLOCKSIZE512 -co OVERVIEW_RESAMPLINGAVERAGELERC 压缩对浮点 DEM 的压缩比远超 DEFLATE而且支持有损压缩模式对高程数据的精度损失基本不可感知。BLOCKSIZE512与常见的 Web 瓦片请求尺寸匹配OVERVIEW_RESAMPLINGAVERAGE保证缩小时地形纹理不丢失。转换完成后用gdalinfo guangzhou_cog.tif确认输出包含COG字样再用浏览器打开 QGIS 远程数据源测试一下拖动缩放没问题就可以发布了。本文还有配套的精品资源点击获取