空间参考系统与投影:坐标系的选择与变换

说到空间参考系统,说白了就是给地球上的每个点一个唯一的“身份证号”。

我个人习惯把坐标系分成两类:一类是直接用地表经纬度标记的地理坐标系,另一类是通过数学变换把球面展平到平面上的投影坐标系。你想想看,地球是个不规则椭球体,非要把它压平到纸上,不做些变形怎么可能?

地理坐标系(GCS)

地理坐标系的核心,是定义了一组参数:椭球体、本初子午线、角度单位。全球最常用的地理坐标系就是 WGS84。

我在做项目时遇到过这样一件事:同事从不同部门拿到的数据,一个标着“WGS84”,另一个标着“GCJ-02”。结果叠到一起,两百米外的路硬生生对不上,排查了一下午才发现是坐标系没统一。

国内常见的还有 CGCS2000(中国大地坐标系 2000)。它的椭球参数比 WGS84 更贴合中国区域,但数值非常接近,很多时候可以直接当成同一个来用。当然,如果你做的是厘米级精度的大地测量,那就不能混用了。

一点经验:我建议手里拿到数据后,先用工具查一下它标注的坐标系统(EPSG 编码最好),大部分坑都是“我以为它是 WGS84”挖出来的。用 GDAL 查 EPSG 码是不少老手的习惯。
属性 WGS84 CGCS2000
椭球体 WGS 84 CGCS2000 椭球
长半轴 a 6,378,137.0 m 6,378,137.0 m
扁率 f 1/298.257223563 1/298.257222101
适用范围 全球标准 中国及周边

投影坐标系(PCS)

地理坐标系是“球”,投影坐标系是“摊平的球”。你想想看,把一个橘子皮摊平,中间可能还好,边缘肯定裂了——投影变形就是这么回事。

空间参考系统知识体系 地球 椭球体 地理坐标系 GCS WGS84 / CGCS2000 投影坐标系 PCS UTM / Albers / 高斯-克吕格 三度带 / 高斯-克吕格 CGCS2000 常用 六度带 / UTM 全球通用 Lambert / Albers 等面积/全国区域 重投影 → 统一坐标系 数据集成的前提

投影变形一般有三种:长度变形、面积变形、角度变形。没有一种投影能同时保住这三样,只能根据用途选一个。

三种投影变形的取舍
  • 要测距离 → 选等距投影(比如 Equidistant Conic)
  • 要算面积 → 选等面积投影(比如 Albers Equal Area)
  • 要保形状 → 选等角投影(比如 Web Mercator、UTM)

常用投影:UTM

UTM(Universal Transverse Mercator)是我处理全球数据时用得最多的投影。它属于横轴墨卡托,把地球切成 60 个 6° 宽的带,每个带单独投影。

之前做跨国项目,数据来源从东欧到东南亚都有,我统一转成 UTM 对应的带号,后续的缓冲区计算、面积统计基本没出过问题。

实用技巧:判断自己数据落在哪个 UTM 带,可以用这个简单公式:带号 = floor((经度 + 180) / 6) + 1。36°N 的北京大致落在 UTM 50N。

常用投影:Albers 等面积投影

Albers 等面积圆锥投影,说白了就是让面积不变,形状略变。这在中国全国制图里很常用,因为它能很好地保住面积精度。

我做过一次全国土地利用类型统计,如果不用 Albers,用 Mercator 去算,东北地区的面积会偏大,直接导致结论出现偏差。

特性 UTM (横轴墨卡托) Albers (等面积圆锥) Web Mercator
变形类型 等角(角度保真) 等面积(面积保真) 等角(角度保真)
常用场景 局部大比例尺、导航 全国制图、资源统计 在线地图(Google、OSM)
适用范围 南北 80° 以内 中纬度地区 全球
歪曲感受 离中央经线越远变形越明显 南北两端略有压缩 越靠近极地越大
一个曾经踩过的坑:我曾经在做中国范围内的人口密度分析时,直接用 Web Mercator 算每平方千米人数。结果高纬度地区面积被夸大,密度严重偏低。后来换成 Albers 等面积投影,数据才正常。一定要先明确你是“算面积”还是“保形状”。

坐标系变换

坐标系变换不是简单的数学公式替换,它分两种:

  1. 同属地理系之间的变换(基准面转换):比如 WGS84 到 CGCS2000,或者 WGS84 到北京 54。这类变换最常用的是七参数法(布尔莎模型)或三参数简化版。
  2. 地理系到投影系的变换(投影转换):就是给经纬度加上分带参数,算出平面坐标 X/Y。这个过程只要知道 EPSG 编码,GDAL 一行命令就能搞定。

我建议所有变换操作都基于 EPSG 编码来做,不要去手动写公式,很容易搞错。GDAL 的 gdalwarp 是我最常用的工具。

举个例子,把 WGS84 的 GeoTIFF 转成 UTM 50N(EPSG:32650):

gdalwarp -s_srs EPSG:4326 -t_srs EPSG:32650 input.tif output_utm.tif

你看,就这样简单。

如果是矢量数据,用 ogr2ogr:

ogr2ogr -s_srs EPSG:4326 -t_srs EPSG:32650 output.shp input.shp
关于七参数:不同椭球体之间做基准面转换时,很多人会忽略七参数。我见过有人把北京 54 的数据直接当 WGS84 用,结果偏了几百米。如果有条件,最好从数据源获取该区域的七参数文件,或者用公共转换网格(如 NTv2 格式)。

嗯,说到这里,你应该明白了:选对坐标系是空间分析的基础,而坐标系变换就是把数据从一种“语言”翻译成另一种“语言”。以后拿到新数据,第一件事就是查它的 EPSG 码,养成这个习惯,能省掉你很多排查时间。

最后记一句:坐标系不会改变数据的原始位置,它改变的是你如何描述那个位置。选择合适的投影,就是选择合适的方式来解读空间本身。