GIS 新手避坑:地理坐标系、投影坐标系、Define、Project 到底怎么用?(为什么数据会错位?)
(这篇文章经过chatGPT润色)
刚学 GIS 的时候,坐标系真的很容易把人绕晕。
什么地理坐标系、投影坐标系、WGS84、北京54、CGCS2000、Define Projection、Project……名字都很像,但意思完全不一样。
我也是反复踩坑之后,才终于把这块理顺。这里整理成一篇笔记,看完之后,至少能搞明白这几个问题:
-
地理坐标系和投影坐标系到底有什么区别
-
为什么同一个地方,换个坐标系数值就变了
-
ArcGIS 里的 Define 和 Project 到底差在哪
-
平时处理下载的数据,应该按什么顺序统一坐标系
一、先搞清楚:坐标系其实主要分两层
GIS 里的坐标系,最核心的其实就是两类:
-
地理坐标系
-
投影坐标系
可以把它们理解成:
-
地理坐标系:决定“地球长什么样”
-
投影坐标系:决定“怎么把地球画到平面上”

- 图片由nano banana pro绘制
二、什么是地理坐标系?
地理坐标系,英文叫 GCS(Geographic Coordinate System)。
这个东西可以简单理解成:用来描述地球的数学模型。
因为地球不是一个完美的球体,所以在 GIS 里,必须先假设一个“地球模型”,然后才能确定一个地点的位置。
地理坐标系通常用:
-
经度
-
纬度
来表示位置,单位一般是 度(°)。
常见的地理坐标系有:
-
WGS84:最常见,很多 GPS、谷歌地球、网络地图数据都用它
-
CGCS2000:我国目前常用的国家坐标基准
-
西安80
-
北京54
你可以这样记:
地理坐标系就是“底子”。
底子不对,后面全都容易错。
三、什么是投影坐标系?
投影坐标系,英文叫 PCS(Projected Coordinate System)。
它的作用就是把球面上的经纬度,转换成平面上的坐标。
因为我们在 GIS 里经常要做这些事:
-
算距离
-
算面积
-
做缓冲区
-
做叠加分析
-
做栅格运算
这些操作如果直接用经纬度,往往不方便,或者误差大。所以要先把经纬度“摊平”,变成平面坐标。
这时候坐标单位通常就不再是“度”了,而是:
-
米
-
有时也可能是千米等
常见的投影坐标系或投影方式有:
-
Albers(阿尔伯斯)
-
高斯-克吕格
-
UTM
-
Web 墨卡托
你可以这样记:
投影坐标系就是“画法”。
地理坐标系是地球的底子,投影坐标系是把这个底子画到平面上的方法。
四、一句话记住两者区别
这一句最重要:
地理坐标系是底子,投影坐标系是画法。
再直白一点:
-
地理坐标系决定“这个点在地球上怎么表示”
-
投影坐标系决定“这个点在地图平面上怎么表示”
五、为什么同一个地方,换个坐标系后坐标值会变?
很多新手都会疑惑:
明明是同一个地方,为什么换了坐标系以后,经纬度或者坐标数值变了?
原因其实不难理解。
地球上的那个点的真实位置当然没动,变的是描述它的位置的方法。
比如:
-
在 WGS84 下,这个点算出来是一组经纬度
-
在北京54 下,这个点又会算出另一组经纬度
就像同一个长度:
-
用厘米量,是一个数
-
用英寸量,又是另一个数
数字变了,但东西还是同一个东西。
所以坐标转换的本质就是:
-
先确定这个点真实在地面上的位置
-
再按照新的坐标系规则,重新计算它的坐标值
所以转换之后,坐标数值会变,但位置应该还是能对上。
六、几种常见坐标系之间,大概会差多少?
这个在实际工作里特别重要。
1. WGS84 和 CGCS2000
这两者非常接近,很多普通应用里差别非常小,通常不太容易看出明显偏移。
所以平时如果只是普通制图、一般叠加展示,很多时候看起来像是能对上的。
但如果是高精度工作,还是要尽量区分清楚。
2. WGS84 / CGCS2000 和 西安80 / 北京54
这几种就不能随便混用了。
如果不做正规转换,直接叠加,通常会出现明显偏移,常见是几十米到上百米,严重时会直接影响分析结果。
所以只要涉及:
-
北京54
-
西安80
-
WGS84
-
CGCS2000
这几类数据混用时,一定要注意先确认坐标基准,再做正规转换。
七、新手最容易踩的坑:Define Projection 和 Project 根本不是一回事
ArcGIS 里这两个功能特别容易混淆,但它们完全不是一个东西。
八、Define Projection 是干什么的?
Define Projection(定义投影),本质上只是:
给数据贴一个“这是什么坐标系”的标签
注意,它不会改坐标值。
也就是说:
-
原来的坐标数字是多少,执行完还是多少
-
它只是告诉软件:“这些数字应该按哪个坐标系来理解”
它适合什么情况?
只有这两种情况适合用:
-
数据本来没有坐标系信息
-
数据的坐标系标签写错了,但你明确知道它原本是什么坐标系
它不适合什么情况?
不适合拿来“转换坐标系”。
很多人以为 Define 一下,就等于把数据从 WGS84 变成北京54 了,这是错的。坐标数字没变,但软件开始按北京54去理解这些数字,结果整个数据位置就跑偏了
九、Project 才是真正的坐标转换
Project(矢量) 或 Project Raster(栅格) 才是真正的坐标转换工具。
它做的事情是:
-
读取原始坐标系
-
根据转换关系重新计算坐标
-
生成一个新的坐标结果
所以执行完以后,坐标数值会发生变化。
这才叫真正把数据从一个坐标系转换到另一个坐标系。
十、最经典的错误操作:把 Define 当成转换工具
这是新手最常见的坑。
比如一个数据原本是 WGS84,结果有人直接用 Define Projection 把它“改成”北京54。
会发生什么?
-
坐标数字没变
-
但软件开始按北京54去理解这些数字
-
结果整个数据位置就跑偏了
这时候不是数据真的转换成功了,而是标签贴错了。
所以一定要记住这句话:
Define 只改标签,不改坐标。
Project 才是真正改坐标。
十一、平时下载的杂数据,正确处理顺序是什么?
这个非常实用。
平时从网上下载的数据,或者不同单位给的数据,坐标系经常不统一。最稳妥的处理流程一般是这样:
第一步:先看原始坐标系
先确认每个数据到底是什么坐标系。
重点看它属于哪一种地理坐标基准,比如:
-
WGS84
-
CGCS2000
-
西安80
-
北京54
如果连原始坐标系都没搞清楚,后面很容易越处理越乱。
第二步:先统一地理坐标系
这是最关键的一步。
比如你的项目最终想统一到 CGCS2000,那就先把其他数据正规转换到 CGCS2000。
注意:
-
这里要用 Project / Project Raster
-
不是用 Define
因为这一步是要真正把不同基准的数据转换到同一个基准下。
第三步:再统一投影坐标系
当地理坐标系已经统一以后,再根据你的分析目的,选择合适的投影坐标系。
比如:
-
做大范围面积统计:可以考虑等积投影
-
做局部分析:可以选更适合当地的投影
-
做普通显示:也可以统一成项目里常用的投影
这一部分的核心思路就是:
先统一地理坐标系,再统一投影坐标系。
十二、为什么很多人明明都“统一坐标系”了,还是会错位?
因为很多人只做了“表面统一”,没做“真正统一”。
常见问题有这几种:
1. 只看投影,不看地理坐标系
有些数据看起来都是什么 Albers、UTM、高斯投影,但它们背后的地理坐标系可能不一样。
也就是说:
-
表面上投影名字差不多
-
实际底子不同
-
叠加后照样错位
2. 用 Define 代替 Project
这是最常见的问题。以为点一下 Define 就完成转换了,实际上只是改了标签。
3. 原始坐标系本来就标错了
有些外来数据自带的坐标系信息就不一定靠谱,尤其是一些下载的老数据、别人转来转去的数据。
所以遇到错位时,不要只信文件属性,最好结合:
-
数据范围
-
坐标数值大小
-
与底图对比情况
-
历史来源说明
综合判断。
十三、给新手的几个实用判断方法
1. 看单位
如果坐标是这种形式:
-
103.25
-
31.08
这种一般大概率是经纬度,也就是地理坐标系。
如果坐标是这种形式:
-
345678.9
-
3456123.4
这种通常是投影坐标,单位一般是米。
2. 看数据范围
如果数据在中国,但叠加到底图上跑到了海里、非洲或者别的地方,八成就是坐标系有问题。
3. 看是否整体平移
如果两个数据形状很像,只是整体平移了一段距离,这通常很像是坐标基准没统一,比如 WGS84 和北京54 直接叠加了。
4. 看是不是“标签贴错”
如果一个数据原本正常,Define 之后突然飞走了,那大概率就是把正确数据错误定义成别的坐标系了。
十四、最后总结
-
地理坐标系是底子,投影坐标系是画法
-
地理坐标系错了,整个数据都会歪
-
同一个地点在不同地理坐标系下,坐标数值可以不同
-
Define 只贴标签,不改坐标
-
Project 才是真正转换坐标
-
处理外来数据时,先统一地理坐标系,再统一投影坐标系
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)