空间参考系统与投影:坐标系的选择与变换
说到空间参考系统,说白了就是给地球上的每个点一个唯一的“身份证号”。
我个人习惯把坐标系分成两类:一类是直接用地表经纬度标记的地理坐标系,另一类是通过数学变换把球面展平到平面上的投影坐标系。你想想看,地球是个不规则椭球体,非要把它压平到纸上,不做些变形怎么可能?
地理坐标系(GCS)
地理坐标系的核心,是定义了一组参数:椭球体、本初子午线、角度单位。全球最常用的地理坐标系就是 WGS84。
我在做项目时遇到过这样一件事:同事从不同部门拿到的数据,一个标着“WGS84”,另一个标着“GCJ-02”。结果叠到一起,两百米外的路硬生生对不上,排查了一下午才发现是坐标系没统一。
国内常见的还有 CGCS2000(中国大地坐标系 2000)。它的椭球参数比 WGS84 更贴合中国区域,但数值非常接近,很多时候可以直接当成同一个来用。当然,如果你做的是厘米级精度的大地测量,那就不能混用了。
| 属性 | WGS84 | CGCS2000 |
|---|---|---|
| 椭球体 | WGS 84 | CGCS2000 椭球 |
| 长半轴 a | 6,378,137.0 m | 6,378,137.0 m |
| 扁率 f | 1/298.257223563 | 1/298.257222101 |
| 适用范围 | 全球标准 | 中国及周边 |
投影坐标系(PCS)
地理坐标系是“球”,投影坐标系是“摊平的球”。你想想看,把一个橘子皮摊平,中间可能还好,边缘肯定裂了——投影变形就是这么回事。
投影变形一般有三种:长度变形、面积变形、角度变形。没有一种投影能同时保住这三样,只能根据用途选一个。
- 要测距离 → 选等距投影(比如 Equidistant Conic)
- 要算面积 → 选等面积投影(比如 Albers Equal Area)
- 要保形状 → 选等角投影(比如 Web Mercator、UTM)
常用投影:UTM
UTM(Universal Transverse Mercator)是我处理全球数据时用得最多的投影。它属于横轴墨卡托,把地球切成 60 个 6° 宽的带,每个带单独投影。
之前做跨国项目,数据来源从东欧到东南亚都有,我统一转成 UTM 对应的带号,后续的缓冲区计算、面积统计基本没出过问题。
常用投影:Albers 等面积投影
Albers 等面积圆锥投影,说白了就是让面积不变,形状略变。这在中国全国制图里很常用,因为它能很好地保住面积精度。
我做过一次全国土地利用类型统计,如果不用 Albers,用 Mercator 去算,东北地区的面积会偏大,直接导致结论出现偏差。
| 特性 | UTM (横轴墨卡托) | Albers (等面积圆锥) | Web Mercator |
|---|---|---|---|
| 变形类型 | 等角(角度保真) | 等面积(面积保真) | 等角(角度保真) |
| 常用场景 | 局部大比例尺、导航 | 全国制图、资源统计 | 在线地图(Google、OSM) |
| 适用范围 | 南北 80° 以内 | 中纬度地区 | 全球 |
| 歪曲感受 | 离中央经线越远变形越明显 | 南北两端略有压缩 | 越靠近极地越大 |
坐标系变换
坐标系变换不是简单的数学公式替换,它分两种:
- 同属地理系之间的变换(基准面转换):比如 WGS84 到 CGCS2000,或者 WGS84 到北京 54。这类变换最常用的是七参数法(布尔莎模型)或三参数简化版。
- 地理系到投影系的变换(投影转换):就是给经纬度加上分带参数,算出平面坐标 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
嗯,说到这里,你应该明白了:选对坐标系是空间分析的基础,而坐标系变换就是把数据从一种“语言”翻译成另一种“语言”。以后拿到新数据,第一件事就是查它的 EPSG 码,养成这个习惯,能省掉你很多排查时间。
最后记一句:坐标系不会改变数据的原始位置,它改变的是你如何描述那个位置。选择合适的投影,就是选择合适的方式来解读空间本身。