什么是坐标参照系(CRS)?EPSG 代码与图层错位修复
发布于
坐标参照系(CRS)是一套规则,它把一对坐标与地球上的真实位置对应起来。它告诉软件这些数字采用哪一种地球模型,单位是度还是米,以及圆形的地球是如何被展平成地图的。每个 GIS 图层都有一个 CRS,通常写成简短的代码,例如 EPSG:4326。
没有 CRS,651000, 6862000 只是两个数字。配上 EPSG:2154,它是巴黎的一个点。如果误配成 EPSG:4326,同样的数字哪里也指不到,QGIS 就会把图层画在错误的位置。大多数“我的图层跑到海里去了”的问题都出在这种不匹配上。下文会一步步讲怎么修复,还有一次对 AI Agent(我们开发的 QGIS 插件)的测试:它只用一条消息,在 52 秒内找到了正确的 CRS。

CRS 的三个组成部分
每个 CRS 都要回答三个问题。任何一个答错,数据就会移位。
- 基准面:哪一个地球? 地球略显扁平,并不是一个正圆球。基准面是对这个形状的建模,并固定在地球上。GPS 使用的 WGS 84 就是一种,欧洲的 ETRS89 和北美的 NAD83 是另外两种。
- 坐标系:度还是米? 地理坐标系以度给出纬度和经度。投影坐标系在平面地图上以米给出 x 和 y。
- 投影:如何展平? 投影是把球形地球变成平面地图的方法。展平时总要拉伸某些东西,所以每种投影都要选择保留什么:面积、角度还是距离。
地理坐标系与投影坐标系
两者都是正确的。区别在于,它决定了一次测量是否有意义。
| 地理坐标系 | 投影坐标系 | |
|---|---|---|
| 单位 | 纬度和经度的度 | 米或英尺 |
| 示例 | EPSG:4326(WGS 84) | EPSG:32643(WGS 84 / UTM 43N 带,印度西部) |
| 适用于 | 存储和交换全球数据、GPS 位置 | 测量面积和距离、工程、国家级制图 |
| 不适用于 | 面积和长度:1 度经度在赤道上约 111 km,在极点处是 0 km | 远离投影设计范围的区域的面积 |
我的做法是:数据保持它原来的 CRS,测量时则换成适合您所在区域的投影坐标系。在 EPSG:4326 下计算面积,得到的单位是平方度。结果看上去仍然是个数字,所以才会有人拿去交付。
EPSG 代码是什么
EPSG 代码是一个简短的数字,精确地指代一个 CRS。这份列表最早由欧洲石油调查组织(European Petroleum Survey Group)创建,EPSG 因此得名,如今由国际石油天然气生产者协会维护,收录了 7,000 多个 CRS。
下面是我最常遇到的几个代码:
| 代码 | 名称 | 适用地区与用途 |
|---|---|---|
EPSG:4326 | WGS 84 | GPS 坐标、GeoJSON、大多数全球数据集 |
EPSG:3857 | WGS 84 / Pseudo-Mercator | 网络地图切片:OpenStreetMap、Google、Bing、Esri 底图 |
EPSG:2154 | RGF93 / Lambert-93 | 法国本土的法定 CRS |
EPSG:25832 | ETRS89 / UTM 32N 带 | 德国、丹麦、挪威以及中欧大部分地区 |
EPSG:32643 | WGS 84 / UTM 43N 带 | 印度西部,包括孟买和浦那 |
EPSG:31983 | SIRGAS 2000 / UTM 23S 带 | 巴西东南部,包括圣保罗州 |
EPSG:26918 | NAD83 / UTM 18N 带 | 美国东海岸,包括纽约 |
第一行里藏着一个陷阱。官方的 EPSG:4326 把纬度放在前面,但大多数软件(包括 QGIS)和 GeoJSON 都先读经度(GeoTools 解释了原因)。如果您的 CSV 点落到了南极洲或索马里海岸外,先检查是不是两列写反了。
EPSG:4326 与 EPSG:3857 的区别
EPSG:4326 以度存储位置。EPSG:3857 即 Web 墨卡托,把这些位置转成以米为单位的方形网格,以便把地图切成切片。Google 地图在 2005 年采用了它,几乎所有在线底图随后都跟进了。它很适合显示,却不适合测量,因为离赤道越远,它对面积的拉伸越大。

我在 QGIS 中做了实测:在六个城市各放一个真实的 1 km² 正方形,看它在地图上变成多大。
| 城市 | 纬度 | 1 km² 在 Web 墨卡托地图上的面积 |
|---|---|---|
| 基多 | 0.2° S | 1.007 km² |
| 孟买 | 19.1° N | 1.126 km² |
| 马德里 | 40.4° N | 1.727 km² |
| 柏林 | 52.5° N | 2.696 km² |
| 奥斯陆 | 59.9° N | 3.966 km² |
| 特罗姆瑟 | 69.7° N | 8.226 km² |
经验公式 1 / cos²(纬度) 与每一项实测值的误差都在 0.6% 以内。即使在赤道上,Web 墨卡托也会多出 0.67%,因为它对一个并非球体的地球使用了球体公式。
我们是怎么测的。 2026 年 9 月 26 日,我在 QGIS 3.44 中把每个正方形画成真实大小(在 WGS 84 椭球上为 1.000000 km²,用 $area 校验)。然后把它重投影到 EPSG:3857,再用 area($geometry) 读出它的平面面积。
所以,在奥斯陆用 Web 墨卡托图层量出的一块地,面积会大出约四倍。正确的做法是换到合适的 CRS 下测量:用您所在国家的官方 CRS 或所在的 UTM 带,面积误差可以控制在百分之几以内。
基准面:同样的坐标,相差好几米
两个 CRS 可以都写着“纬度 40.7,经度 −74.0”,实际指的却是相隔数米的两个点,原因是它们使用了不同的基准面。相差多少取决于具体的组合:
| 从 | 到 | 典型偏移 | 来源 |
|---|---|---|---|
| NAD27 | NAD83 | 美国本土 48 州为 10 到 100 m,夏威夷超过 400 m | USGS |
| NAD83 | WGS 84 | 美国大部分地区约 1 到 2 m | North American Datum |
| ETRS89 | WGS 84 | 如今约 90 cm,每年增加 2.5 cm | EuroGeographics / EUREF, 2025 |
欧洲是最出人意料的例子。ETRS89 随欧洲板块一起移动,板块每年漂移约 2.5 cm,而 WGS 84 不动。因此,1989 年在 ETRS89 中固定的一个点,如今与它的 WGS 84 位置相距约 90 cm,尽管地面上什么都没有动。在底图上没人看得出来,但在土地测量中,这就有影响了。
当 QGIS 知道两个基准面之间有多种转换方式时,会让您选择。请选对您所在区域精度最高的那一种,不要直接关掉对话框。
为什么 QGIS 里的图层对不齐
QGIS 会即时重投影:每个图层保留自己的 CRS,QGIS 在显示时把它们全部转换到工程 CRS。只要每个图层的 CRS 声明正确,这套机制就没问题。如果标签错了,QGIS 就会从错误的起点开始转换。
为了演示,我把德国班贝格老城的 1,015 栋 OpenStreetMap 建筑物保存成以米为单位的数据(EPSG:25832),并配上一个错误地声明为以度为单位的 WGS 84 的 .prj 文件。QGIS 相信了这个文件。在 Web 墨卡托工程中,这个图层虽然被勾选了,却哪里也画不出来,因为 635,460 度的经度并不在地球上。在 WGS 84 工程中执行 缩放到图层,只能在一片空白的画布上找到孤零零的建筑物。

这是个常见问题,并不只困扰初学者。在 YouTube 上的 1,692 个 QGIS 教程中,有 155 个(9.2%)的评论里有人询问 CRS 或图层对不齐的问题。在 GIS Stack Exchange 上,coordinate-system 标签下有 8,402 个问题。
那里被重复最多的一个回答来自一位经验丰富的用户:“大约 99% 的情况下,人们只是用‘设置 CRS’来代替重投影,因为他们不知道两者的区别。”这两个工具做的事情正好相反:
- 设置图层 CRS 改变标签,保留数字不变。只有标签本身错了才用它,例如丢了
.prj文件的 Shapefile。 - 重投影图层 保持位置不变,改变数字。标签正确、但您需要把数据转换到另一个 CRS 时用它。
对一个本来就正确的图层使用“设置图层 CRS”,会把它移到错误的位置。这就是典型的“我重投影之后反而更糟了”。
如何在 QGIS 中修复 CRS 问题
查看图层声明的是什么
右键单击图层,选择 属性 > 信息。CRS 一行显示 QGIS 认为这些坐标属于哪个坐标系。右下角的状态栏显示工程 CRS。
查看原始数字
用识别工具点击一个要素,或打开点 CSV 的属性表。介于 −180 和 180 之间的值是度。几十万或几百万的值,是投影坐标系中的米。如果数字与声明的 CRS 对不上,说明标签是错的。
修正标签,或转换数据
标签错了:选择 图层 > 设置图层的坐标参照系,然后选数据实际生成时使用的 CRS。数据提供方的说明或所在国家的标准 CRS 通常能告诉您答案。标签没错,但您需要另一个 CRS:使用 处理工具箱 > 重投影图层。
按您的区域设置工程 CRS
点击状态栏里的 CRS 按钮,在测量任何东西之前,先选一个适合您所在区域的投影坐标系。
对于班贝格的图层,问题出在标签上,所以修复方法是 设置图层的坐标参照系:在过滤框中输入 25832,选择 ETRS89 / UTM zone 32N。

没有一个坐标改变。标签与数字对上之后,1,015 个轮廓全都落在了各自的屋顶上。

让智能体来诊断
我们开发了 QGIS 插件 AI Agent,所以本节讲的是我们自己的工具。上面的手动方法是免费的,熟悉之后几分钟就能完成。难点在于要知道数据实际是用哪个 CRS 生成的,所以我测试了一个 AI 智能体能不能把它推断出来。
我重新载入了那个出错的图层,只发了一条消息:“我的建筑物图层和底图对不上。找出原因并修复。”智能体用了 52 秒:读取 .prj,发现坐标是米,再通过检查市政厅落在航空影像上的位置,选定了 EPSG:25832。它排除了同一地区较早的一个欧洲 CRS,那个 CRS 会让建筑物偏出约 225 m。它保存了一份修正后的副本,原始文件保持不变。

它在工程里留下了一个隐藏的临时图层,需要手动删除。和您一样,它也需要一张底图或一个参考图层来核对。
该用哪个 CRS?
| 您想要 | 使用 | 原因 |
|---|---|---|
| 在网络底图上显示数据 | EPSG:3857 | 切片本身就是这个 CRS |
| 存储或交换全球数据 | EPSG:4326 | 通用,也是 GeoJSON 所要求的 |
| 在一个国家内测量面积和长度 | 国家 CRS 或当地的 UTM 带 | 专为该区域设计,单位为米 |
| 跨大陆测量 | 等积 CRS,例如欧洲的 EPSG:3035 | 在大范围内保持面积准确 |
| 向政府客户交付 | 其法定 CRS,例如法国的 EPSG:2154 | 通常写在合同里 |
要更改工程 CRS,请点击 QGIS 窗口右下角的 EPSG 按钮。它会打开 工程属性 > 坐标参照系,您可以在其中按代码或名称搜索。

要点回顾
CRS 通过基准面、坐标系,以及用于平面地图的投影,把坐标与地球上的位置对应起来。
EPSG 代码精确地指代一个 CRS:EPSG:4326 是 GPS 的纬度和经度,EPSG:3857 是在线底图使用的 Web 墨卡托网格。
Web 墨卡托会把面积放大约 1 / cos²(纬度) 倍。在 QGIS 中实测,1 km² 的正方形在马德里覆盖 1.73 km²,在奥斯陆覆盖 3.97 km²,在特罗姆瑟覆盖 8.23 km²。请改用国家 CRS 或 UTM CRS 来测量。
图层对不齐时,先查看原始数字,再动手修改。设置图层 CRS 用来修正错误的标签,重投影图层用来转换正确的数据,两者弄混就会让图层移位。
QGIS 内的 AI 智能体可以替您完成诊断:在我们的测试中,AI Agent 只凭一条消息就指出了正确的 CRS,并修复了图层的一份副本。
常见问题
GIS 中的 CRS 是什么?
坐标参照系告诉 GIS 软件,一个图层的坐标位于地球上的什么位置。它由基准面(地球形状的模型)、坐标系(度或米)以及用于平面地图的投影组合而成。每个图层都有一个 CRS,通常用 EPSG 代码来命名。
EPSG:4326 和 EPSG:3857 有什么区别?
EPSG:4326 在 WGS 84 椭球上以度存储纬度和经度。EPSG:3857 把同样的位置投影成以米为单位的方形网格,用于网络地图切片。3857 用来显示底图,千万不要用来测量:在纬度 40° 处它把面积放大 1.7 倍,在 60° 处放大 4 倍。
WGS 84 就是 EPSG:4326 吗?
日常使用中,可以这么说。严格来讲,WGS 84 是基准面,EPSG:4326 是建立在它之上的纬度和经度 CRS。其他 CRS 也使用 WGS 84,例如 EPSG:3857。
为什么我的图层在 QGIS 里位置不对?
它声明的 CRS 与文件中的坐标不一致。常见原因有:缺少 .prj 文件、CSV 的纬度和经度写反了,或者该用重投影图层的地方用了设置图层 CRS。先用识别工具检查原始坐标,只有标签确实错了,才用设置图层 CRS 来纠正。
QGIS 中设置 CRS 和重投影有什么区别?
设置图层 CRS 改变 CRS 标签,保留坐标数字不变,所以除非原来的标签是错的,否则它会让图层移位。重投影图层让图层留在原位,并把数字重新计算到新的 CRS 中。前者用来修复元数据,后者用来转换数据。
QGIS 能自动找出正确的 CRS 吗?
它自己做不到。QGIS 从文件中读取 CRS,例如 Shapefile 旁边的 .prj,没有时就询问您。它不会检查坐标是否吻合。AI 智能体插件可以。我们的 AI Agent 会把坐标与底图比对,找出 CRS,并修复图层的一份副本,只需在 QGIS 中输入一条消息。
测量面积该用哪个 CRS?
使用专为您所在区域设计的投影坐标系:您所在国家的官方 CRS,或您所在的 UTM 带。要跨大陆测量面积,请使用等积 CRS,例如欧洲的 EPSG:3035。千万不要在 EPSG:4326(平方度)或 EPSG:3857(离开赤道后被放大)下测量面积。
CRS 也是扫描地图地理配准的起点,因为您放置的控制点只有在已知的坐标系中才有意义。QGIS 是什么介绍了这款软件的其余部分,PyQGIS 展示了如何用代码做重投影,而 AI Agent 只需在 QGIS 中输入一条消息,就能修复图层的 CRS。QGIS AI 中心按任务列出了其他 AI 插件。
就会把图层画在错误的位置。大多数“我的图层跑到海里去了”的问题都出在这种不匹配上。下文会一步步讲怎么修复,还有一次对 

