跳转到内容
QGIS
指南

什么是坐标参照系(CRS)?EPSG 代码与图层错位修复

发布于

坐标参照系(CRS)是一套规则,它把一对坐标与地球上的真实位置对应起来。它告诉软件这些数字采用哪一种地球模型,单位是度还是米,以及圆形的地球是如何被展平成地图的。每个 GIS 图层都有一个 CRS,通常写成简短的代码,例如 EPSG:4326。

没有 CRS,651000, 6862000 只是两个数字。配上 EPSG:2154,它是巴黎的一个点。如果误配成 EPSG:4326,同样的数字哪里也指不到,QGIS 就会把图层画在错误的位置。大多数“我的图层跑到海里去了”的问题都出在这种不匹配上。下文会一步步讲怎么修复,还有一次对 AI Agent(我们开发的 QGIS 插件)的测试:它只用一条消息,在 52 秒内找到了正确的 CRS。

CRS 组成示意图。三张卡片用加号相连:1,哪一个地球,即基准面和椭球体,例如 WGS 84、ETRS89、NAD83 或 SIRGAS 2000;2,角度还是米,即坐标系;3,如何展平,即投影,只用于平面网格。等号后面是一张绿色卡片,标签为:EPSG 代码,其中 EPSG:4326 对应以度为单位的 WGS 84,EPSG:3857 对应以米为单位的 Web 墨卡托,EPSG:2154 对应法国的 Lambert-93。下方,地理坐标系使用第 1 和第 2 部分,坐标形如 48.85, 2.35;投影坐标系使用全部三部分,坐标形如 652 000, 6 862 000。
基准面、坐标系,以及用于平面地图的投影。EPSG 代码是这个组合的名称。

CRS 的三个组成部分

每个 CRS 都要回答三个问题。任何一个答错,数据就会移位。

  1. 基准面:哪一个地球? 地球略显扁平,并不是一个正圆球。基准面是对这个形状的建模,并固定在地球上。GPS 使用的 WGS 84 就是一种,欧洲的 ETRS89 和北美的 NAD83 是另外两种。
  2. 坐标系:度还是米? 地理坐标系以度给出纬度和经度。投影坐标系在平面地图上以米给出 x 和 y。
  3. 投影:如何展平? 投影是把球形地球变成平面地图的方法。展平时总要拉伸某些东西,所以每种投影都要选择保留什么:面积、角度还是距离。

地理坐标系与投影坐标系

两者都是正确的。区别在于,它决定了一次测量是否有意义。

地理坐标系投影坐标系
单位纬度和经度的度米或英尺
示例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:4326WGS 84GPS 坐标、GeoJSON、大多数全球数据集
EPSG:3857WGS 84 / Pseudo-Mercator网络地图切片:OpenStreetMap、Google、Bing、Esri 底图
EPSG:2154RGF93 / Lambert-93法国本土的法定 CRS
EPSG:25832ETRS89 / UTM 32N 带德国、丹麦、挪威以及中欧大部分地区
EPSG:32643WGS 84 / UTM 43N 带印度西部,包括孟买和浦那
EPSG:31983SIRGAS 2000 / UTM 23S 带巴西东南部,包括圣保罗州
EPSG:26918NAD83 / UTM 18N 带美国东海岸,包括纽约

第一行里藏着一个陷阱。官方的 EPSG:4326 把纬度放在前面,但大多数软件(包括 QGIS)和 GeoJSON 都先读经度(GeoTools 解释了原因)。如果您的 CSV 点落到了南极洲或索马里海岸外,先检查是不是两列写反了。

EPSG:4326 与 EPSG:3857 的区别

EPSG:4326 以度存储位置。EPSG:3857 即 Web 墨卡托,把这些位置转成以米为单位的方形网格,以便把地图切成切片。Google 地图在 2005 年采用了它,几乎所有在线底图随后都跟进了。它很适合显示,却不适合测量,因为离赤道越远,它对面积的拉伸越大。

Web 墨卡托世界地图,上面有六个橙色正方形,每个在地面上都是 500 km × 500 km。赤道上基多处的正方形很小,标注为 ×1.01。孟买为 ×1.13,马德里为 ×1.73,柏林为 ×2.70,奥斯陆为 ×3.97,北极圈以北的特罗姆瑟处的正方形被画得约大八倍,标注为 ×8.23。
六个地面面积相同的正方形,在 QGIS 中以 EPSG:3857 绘制。标签是实测的面积放大倍数。

我在 QGIS 中做了实测:在六个城市各放一个真实的 1 km² 正方形,看它在地图上变成多大。

城市纬度1 km² 在 Web 墨卡托地图上的面积
基多0.2° S1.007 km²
孟买19.1° N1.126 km²
马德里40.4° N1.727 km²
柏林52.5° N2.696 km²
奥斯陆59.9° N3.966 km²
特罗姆瑟69.7° N8.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”,实际指的却是相隔数米的两个点,原因是它们使用了不同的基准面。相差多少取决于具体的组合:

从到典型偏移来源
NAD27NAD83美国本土 48 州为 10 到 100 m,夏威夷超过 400 mUSGS
NAD83WGS 84美国大部分地区约 1 到 2 mNorth American Datum
ETRS89WGS 84如今约 90 cm,每年增加 2.5 cmEuroGeographics / 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 工程中执行 缩放到图层,只能在一片空白的画布上找到孤零零的建筑物。

并排的两个 QGIS 视图。左:Web 墨卡托工程,班贝格航空影像上有黄色的建筑物轮廓;图层面板里列出一个声明为 WGS 84 的红色副本,已勾选,却没有画在任何地方。右:在 WGS 84 工程中执行缩放到图层后,同样的红色建筑物独自出现在白色画布上,x 为 635,460、y 为 5,528,260,被当作度来读取,没有底图。
同样的建筑物,正确与错误的对比。把米标成度,图层就会完全掉出地图。

这是个常见问题,并不只困扰初学者。在 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。

QGIS 的设置坐标参照系对话框,过滤框中输入了 25832。在“投影坐标系 > 通用横轴墨卡托”下选中了 ETRS89 / UTM zone 32N,即 EPSG:25832。详情窗格列出以米为单位和 ETRS89 基准面,一幅小型世界地图高亮显示了覆盖中欧的 UTM 32N 带。
设置图层的坐标参照系,并按 EPSG 代码过滤。它只改变标签,每个坐标都保持原样。

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

班贝格老城的 QGIS 地图,在将图层的 CRS 设为 EPSG:25832 之后,红色的建筑物轮廓准确地落在航空影像的屋顶上。
设置 CRS 之后:轮廓与航空影像完全对齐。

让智能体来诊断

我们开发了 QGIS 插件 AI Agent,所以本节讲的是我们自己的工具。上面的手动方法是免费的,熟悉之后几分钟就能完成。难点在于要知道数据实际是用哪个 CRS 生成的,所以我测试了一个 AI 智能体能不能把它推断出来。

我重新载入了那个出错的图层,只发了一条消息:“我的建筑物图层和底图对不上。找出原因并修复。”智能体用了 52 秒:读取 .prj,发现坐标是米,再通过检查市政厅落在航空影像上的位置,选定了 EPSG:25832。它排除了同一地区较早的一个欧洲 CRS,那个 CRS 会让建筑物偏出约 225 m。它保存了一份修正后的副本,原始文件保持不变。

QGIS 右侧停靠着 AI Agent 面板。地图上班贝格的建筑物与航空影像对齐。智能体的回答说,建筑物 Shapefile 声明为 EPSG:4326,但其坐标实际是 EPSG:25832;它给一份副本指定了正确的 CRS,没有移动任何几何图形;全部 1,015 个轮廓现已与正射影像对齐;原始文件未改动并已隐藏。下方是:保存的 GeoPackage、它添加或隐藏的图层、1 个来源、11 个操作,以及一个撤销按钮。
一条消息,52 秒:智能体指出正确的 CRS,并修复了一份副本。

它在工程里留下了一个隐藏的临时图层,需要手动删除。和您一样,它也需要一张底图或一个参考图层来核对。

在 QGIS 中免费试用 AI Agent,无需信用卡

该用哪个 CRS?

您想要使用原因
在网络底图上显示数据EPSG:3857切片本身就是这个 CRS
存储或交换全球数据EPSG:4326通用,也是 GeoJSON 所要求的
在一个国家内测量面积和长度国家 CRS 或当地的 UTM 带专为该区域设计,单位为米
跨大陆测量等积 CRS,例如欧洲的 EPSG:3035在大范围内保持面积准确
向政府客户交付其法定 CRS,例如法国的 EPSG:2154通常写在合同里

要更改工程 CRS,请点击 QGIS 窗口右下角的 EPSG 按钮。它会打开 工程属性 > 坐标参照系,您可以在其中按代码或名称搜索。

QGIS 状态栏,其中的 EPSG:3857 按钮被高亮,其上方是工程属性窗口的坐标参照系选项卡。最近使用的坐标系列出 EPSG:25832、4326、3857 和 2056;选中了 WGS 84 / Pseudo-Mercator,单位为米,并显示其范围的世界地图。
状态栏中的工程 CRS 按钮会打开“工程属性 > 坐标参照系”。

要点回顾

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 插件。