QGIS教程:坐标转换总出错?手把手教你投影变换,附:常用坐标系参数表
在这篇《QGIS教程:坐标转换总出错?手把手教你投影变换,附:常用坐标系参数表》中,我们专门解决一个很常见的问题:数据明明加载进了 QGIS,底图却对不上、面积距离不可信、导出后坐标又偏了几百米甚至几公里。很多坐标转换错误并不是 QGIS 本身的问题,而是“定义坐标系”和“真正投影变换”被混用了。
引言:QGIS坐标转换为什么总出错
在 QGIS 中做坐标转换,最容易出现三类现象:
- 矢量图层和在线底图错位,常见偏移从几十米到几百米不等。
- 同一份数据在 QGIS 中显示正常,导出为 Shapefile 或 GeoPackage 后又错位。
- 使用字段计算器计算面积、长度时,结果单位不对,或者数值明显偏大偏小。
这些问题通常和三个关键词有关:图层坐标系、项目坐标系、投影变换。图层坐标系描述数据本身的坐标含义,项目坐标系决定当前地图窗口如何显示,投影变换则是把数据从一个坐标参考系统真正转换到另一个坐标参考系统。

背景:先分清“设置坐标系”和“投影变换”
很多 QGIS 坐标转换错误,根源在于把“设置图层 CRS”当成了“坐标转换”。这两个操作含义完全不同。
| 操作 | 作用 | 是否改变坐标值 | 适用场景 |
|---|---|---|---|
| 设置图层 CRS | 告诉 QGIS 这份数据原本是什么坐标系 | 不改变 | 数据没有 CRS 信息,或 CRS 被错误识别 |
| 投影变换 | 把坐标值从一个 CRS 转换到另一个 CRS | 改变 | 需要把 WGS84 转为投影坐标,或统一多图层坐标系 |
| 设置项目 CRS | 控制地图画布的显示坐标系 | 不改变源数据 | 临时叠加查看、出图显示 |
举个例子,如果一份点数据的经纬度是 116.39、39.90,它很可能是 WGS84 或 CGCS2000 地理坐标。如果你把它“设置”为 EPSG:3857,QGIS 会把 116.39 和 39.90 当作 Web Mercator 的米制坐标来解释,结果会被显示到错误位置。这不是投影变换,而是错误定义。
原理:QGIS投影变换到底做了什么
坐标参考系统,常简称 CRS,用来说明坐标值对应的地球模型、单位和投影方式。常见 CRS 可以分为两类:
- 地理坐标系:单位通常是度,例如 WGS84、CGCS2000,经纬度形式常见。
- 投影坐标系:单位通常是米,例如 Web Mercator、UTM、CGCS2000 高斯克吕格投影。
QGIS 投影变换的核心,是根据源 CRS 和目标 CRS 的定义,把每一个几何对象的坐标重新计算。对于点,就是重新计算 X、Y;对于线和面,就是逐个顶点转换。如果源 CRS 判断错了,后面的计算再正确,结果也会错。
所以在 QGIS 中处理投影问题,顺序必须是:
- 确认数据原始 CRS 是否正确。
- 确认项目 CRS 是否只是用于显示,还是需要统一输出。
- 通过“另存为”或处理工具执行真正的投影变换。
- 用底图、控制点、坐标范围或面积单位验证结果。
记住一句话:坐标系错了,先不要急着转换;先判断数据本来的坐标系,再决定是否投影变换。
步骤:QGIS坐标转换的标准操作流程
步骤1:检查图层当前 CRS
在 QGIS 图层面板中,右键点击目标图层,选择“属性”,进入“源”或“信息”页面,查看图层的坐标参考系统。如果图层没有 CRS,或者显示为不符合实际的数据,就要先判断原始坐标系。
可以用以下方法辅助判断:
- 坐标值像 116、39 这种范围,通常是经纬度,单位是度。
- 坐标值像 12950000、4850000,可能是 Web Mercator,单位是米。
- 坐标值像 39500000、4400000,可能是带带号的高斯投影坐标。
- 坐标值像 500000、4300000,可能是 UTM 或不带带号的高斯投影坐标。
步骤2:如果 CRS 定义错了,先重新指定图层 CRS
如果数据本身没有 CRS 信息,但你确认它的原始坐标系,例如就是 EPSG:4326,那么应先给图层指定正确 CRS。可以在图层属性中设置,也可以使用“图层 CRS”相关工具。
注意,这一步只是告诉 QGIS 原坐标值应该如何理解,并不会改变坐标值。它适合修复“数据缺少坐标系定义”的问题,不适合把经纬度转换成米制投影坐标。
步骤3:设置项目 CRS 用于叠加检查
QGIS 右下角会显示当前项目 CRS。点击它,可以设置项目坐标系。一般情况下,如果需要和在线底图叠加查看,项目 CRS 常设为 EPSG:3857;如果做本地测量、面积统计,则建议使用适合研究区的投影坐标系。
QGIS 支持动态投影显示,也就是不同 CRS 的图层可以在同一地图窗口中叠加。但这只是显示层面的变换,不代表源数据已经被转换。
步骤4:执行真正的投影变换
最常用的方法是“另存为”。操作步骤如下:
- 右键点击需要转换的图层。
- 选择“导出”。
- 选择“另存为”。
- 格式建议选择 GeoPackage,兼容性需求强时可选择 ESRI Shapefile。
- 在 CRS 位置选择目标坐标系。
- 设置输出文件路径。
- 点击确定,生成新的图层。
如果你要把经纬度数据转为米制坐标,用于面积和距离分析,就应选择合适的投影坐标系。比如全国尺度不宜随意使用某一个地方投影;城市或区县尺度可以考虑对应分带的 CGCS2000 高斯投影或 UTM 投影。
步骤5:验证投影变换结果
转换完成后,不要直接进入分析。建议至少做四项检查:
- 和可信底图叠加,检查是否整体偏移。
- 打开属性或识别工具,检查坐标数值是否符合目标 CRS 的单位和范围。
- 计算一个已知区域的面积,与经验值或官方数据对比。
- 把转换后的图层单独加载到新项目中,确认 CRS 信息仍然正确。
常见坑:QGIS投影变换出错的高频原因
坑1:把“设置图层 CRS”当成“投影变换”
这是最常见错误。设置图层 CRS 不会改变几何坐标。如果你想从 EPSG:4326 转到 EPSG:3857,必须导出新图层并指定目标 CRS,或者使用处理工具箱中的“重新投影图层”。
坑2:经纬度数据直接计算面积
经纬度坐标的单位是度,不适合直接计算面积和长度。字段计算器虽然可以给出数值,但结果往往没有实际意义。正确做法是先投影到米制坐标系,再计算面积或长度。
坑3:在线底图存在偏移,不代表你的数据一定错
在国内使用部分互联网底图时,可能涉及 GCJ-02 等加密偏移坐标体系。QGIS 中常见的 EPSG:4326、EPSG:3857 与这类偏移底图并不完全一致。判断数据是否正确时,应优先使用权威数据、控制点或官方影像,而不是只看某一个在线底图。
坑4:高斯投影带号选错
CGCS2000 或西安80 高斯投影常涉及 3 度带、6 度带以及是否带带号。带号选错后,数据可能会整体偏移到相邻区域,坐标值看起来也会异常。做 QGIS 坐标转换时,一定要确认中央经线和分带方式。
坑5:Shapefile 的 PRJ 文件缺失或不准确
Shapefile 的坐标系信息通常保存在 PRJ 文件中。如果只有 shp、shx、dbf,没有 prj,QGIS 可能无法正确识别 CRS。此时不要随意猜测,应根据数据来源、坐标范围和元数据确认后再指定。
方法比较:不同QGIS坐标转换方法怎么选
| 方法 | 适合场景 | 优点 | 注意事项 |
|---|---|---|---|
| 设置图层 CRS | 图层 CRS 缺失或被错误识别 | 快速修正数据解释方式 | 不会改变坐标值,不能当作投影变换 |
| 右键导出另存为 | 单个图层转换 CRS | 最直观,适合新手 | 要确认目标 CRS 和输出格式 |
| 重新投影图层工具 | 批处理或处理模型中使用 | 适合规范化流程 | 输入 CRS 错误会导致输出继续错误 |
| 项目 CRS 动态显示 | 临时查看多源数据叠加 | 不用改变源数据 | 不等于数据已经转换 |
| GDAL ogr2ogr | 命令行批量转换 | 适合自动化和大批量数据 | 需要明确源 CRS 和目标 CRS 参数 |
如果只是偶尔处理一个图层,推荐使用“右键导出另存为”。如果你在做固定生产流程,例如每周接收一批数据并统一转到 CGCS2000 投影坐标系,建议使用 QGIS 处理模型或 GDAL 命令行建立标准流程。
检查清单:QGIS坐标转换前后必须核对这些项
- 数据来源是否可信:是否有元数据、坐标系说明、生产单位说明。
- 原始 CRS 是否确认:不要只凭显示位置猜测。
- 坐标单位是否正确:经纬度通常是度,投影坐标通常是米。
- 目标 CRS 是否符合用途:出图、叠加、面积统计、工程测量的要求不同。
- 是否需要考虑分带:高斯投影和 UTM 投影都可能涉及分带选择。
- 是否使用了正确的转换方式:定义 CRS 和投影变换不能混用。
- 是否验证结果:检查叠加位置、坐标范围、面积长度、输出 CRS 信息。
- 是否保留原始数据:投影变换前建议备份原始文件。
常用坐标系参数表
下面列出 QGIS 中常见的坐标系类型和使用场景。实际项目中,应以数据生产说明、地方测绘标准或项目技术要求为准。
| 名称 | 常见 EPSG | 坐标单位 | 典型用途 | 注意事项 |
|---|---|---|---|---|
| WGS84 地理坐标系 | EPSG:4326 | 度 | GPS 数据、经纬度数据交换、GeoJSON 常见坐标 | 不适合直接做面积长度统计 |
| Web Mercator | EPSG:3857 | 米 | WebGIS 在线地图、瓦片底图显示 | 面积和距离变形较大,不宜用于精确量算 |
| CGCS2000 地理坐标系 | EPSG:4490 | 度 | 国内测绘数据、自然资源数据常见 | 与 WGS84 很接近,但工程项目中不要随意混用 |
| WGS84 UTM 投影 | 按分带不同变化 | 米 | 中小区域分析、遥感数据处理 | 必须选择研究区所在 UTM 带 |
| CGCS2000 高斯克吕格投影 | 按 3 度带或 6 度带变化 | 米 | 国内工程、规划、测绘项目 | 要确认中央经线、分带方式和是否带带号 |
| 地方独立坐标系 | 通常无通用 EPSG | 米 | 城市工程、地方测绘项目 | 需要七参数、四参数或地方转换说明 |
FAQ:QGIS坐标转换常见问题
QGIS 中图层和底图错位,是不是一定要做投影变换?
不一定。先检查图层 CRS 是否正确,再看底图是否存在偏移问题。如果图层 CRS 错了,应先修正定义;如果只是项目 CRS 不一致,QGIS 可以动态显示;如果要统一数据成果,才需要投影变换。
QGIS 坐标转换后为什么坐标值变了?
这是正常现象。投影变换会把坐标从一个 CRS 计算到另一个 CRS,坐标值当然会变化。例如经纬度转 Web Mercator 后,单位从度变成米,数值范围也会完全不同。
为什么我设置了项目坐标系,导出的数据还是原来的坐标系?
项目 CRS 只影响地图画布显示,不会自动改变源数据。导出时需要在“另存为”的 CRS 选项中明确选择目标坐标系,或者使用“重新投影图层”工具。
QGIS 计算面积前应该选什么坐标系?
应选择适合研究区的米制投影坐标系。小范围项目可以使用当地常用的 CGCS2000 高斯投影或合适的 UTM 分带。不要直接在 EPSG:4326 或 EPSG:4490 的经纬度坐标下做面积统计。
没有 PRJ 文件的 Shapefile 怎么办?
先根据数据来源、坐标范围、项目说明判断原始 CRS,然后在 QGIS 中为图层指定正确 CRS。不要直接另存为其他坐标系,否则可能把错误的 CRS 当成源 CRS 参与转换。
结论:QGIS投影变换要先判断,再转换,最后验证
QGIS 坐标转换的关键不是多点几次菜单,而是按正确顺序处理:先确认原始坐标系,再区分设置 CRS、项目 CRS 和投影变换,最后用底图、坐标范围和面积长度结果验证。只要把这个流程固定下来,大多数 QGIS 投影变换出错问题都能快速定位。
实际工作中,建议始终保留原始数据,并把目标 CRS、转换方法、输出文件名写清楚。这样不仅能减少坐标错位,也方便后续同事复核和批量处理。