QGIS坐标系转换总出错?三步搞定投影变换实战(附:常见坐标系参数表)

QGIS
Dr.GIS
wowwwai GIS研习社 · 工具流程与项目排障

QGIS坐标系转换总出错?三步搞定投影变换实战(附:常见坐标系参数表)这类问题,通常不是 QGIS 工具“坏了”,而是源数据坐标系、工程坐标系、导出坐标系这三件事被混在了一起。本文用一个实际工作流讲清楚:如何判断数据原始坐标系,如何在 QGIS 中正确做投影变换,以及如何检查转换结果是否可靠。

QGIS坐标系转换和QGIS投影变换三步流程示意图
QGIS 坐标系转换的核心流程:先确认源坐标系,再执行投影变换,最后检查坐标范围和叠加效果。

引言:QGIS坐标系转换为什么总是出错

很多同学在 QGIS 中加载矢量数据后,发现图层跑到海里、底图对不上、面积计算不准,第一反应是“我要转换坐标系”。但实际操作时,经常会遇到两个误区:

  • 把“指定坐标系”当成“坐标系转换”。
  • 只修改了工程 CRS,却没有真正重投影数据。
  • 不知道原始数据是 WGS84、CGCS2000,还是地方投影坐标系。
  • 导出文件时选错 EPSG 编码,导致坐标值看起来正常但位置错误。

在 QGIS 中,坐标系转换的关键不是点哪个按钮,而是先判断数据当前坐标系是否正确。只有源坐标系是对的,后续投影变换才有意义。

背景:QGIS中的工程坐标系、图层坐标系和导出坐标系

在 QGIS 里,至少有三个容易混淆的坐标系概念:

  • 图层坐标系:数据本身坐标值对应的坐标参考系统,也叫图层 CRS。
  • 工程坐标系:当前 QGIS 项目用于显示地图的 CRS。
  • 导出坐标系:通过“另存为”或处理工具输出新数据时指定的目标 CRS。

例如,一个点图层坐标值是经纬度,范围大约是 116、39,这通常可能是北京附近的地理坐标。如果你把它“指定”为 EPSG:3857,QGIS 会把 116 和 39 当成米制坐标来解释,图层就会跑到错误位置。

因此,QGIS坐标系转换前要先问三个问题:

  1. 这份数据现在的坐标值是什么类型?经纬度还是米制坐标?
  2. 图层 CRS 是否正确描述了这些坐标值?
  3. 我最终要转换到哪个目标坐标系,用于叠加、制图、测距还是面积统计?

原理:指定坐标系不等于投影变换

QGIS投影变换的本质,是把同一个地理位置从一个坐标参考系统换算到另一个坐标参考系统。这个过程会改变坐标数值,但位置应保持一致。

而“指定坐标系”只是告诉 QGIS:这组坐标值应该按哪个 CRS 来解释。它不会重新计算坐标值。

操作 是否改变坐标值 适用场景 常见风险
设置图层 CRS 数据缺少 .prj 或 CRS 元数据错误,需要纠正图层定义 把错误 CRS 强行指定给数据,导致位置偏移
另存为并选择目标 CRS 真正把数据从一个坐标系转换到另一个坐标系 源 CRS 错误时,转换结果必然错误
修改工程 CRS 改变地图显示坐标系,方便临时叠加查看 误以为已经生成了新投影数据

简单说:如果你的数据 CRS 已经正确,要做的是“另存为目标 CRS”;如果你的数据 CRS 本来就错了,要先修正图层 CRS,再做投影变换。

步骤:三步完成QGIS坐标系转换

第一步:确认源数据坐标系

在图层面板中右键点击图层,选择“属性”,进入“信息”或“源”页面,查看当前 CRS。然后结合坐标范围判断它是否可信。

常见判断方法如下:

  • 如果坐标值类似 116.38、39.90,多半是经纬度坐标,常见 CRS 为 EPSG:4326 或 CGCS2000 地理坐标系。
  • 如果坐标值类似 500000、4400000,多半是投影坐标,单位通常是米。
  • 如果坐标值特别大,例如 12900000、4800000,可能是 Web Mercator,常见 EPSG:3857。
  • 如果数据来自国土、测绘、规划行业,可能使用 CGCS2000 高斯-克吕格投影或地方坐标系。

如果图层没有 CRS,或者 QGIS 弹出“选择坐标参考系统”的提示,不要随便选 EPSG:4326。应先查看数据来源说明、元数据、同目录下的 .prj 文件,或向数据提供方确认。

第二步:修正错误的图层CRS定义

如果你确认图层 CRS 定义错了,例如经纬度数据被识别成了 EPSG:3857,可以先修正图层 CRS。

  1. 右键图层。
  2. 选择“图层 CRS”。
  3. 选择“设置图层 CRS”。
  4. 搜索并选择正确的源坐标系。
  5. 应用后观察图层是否能与底图或参考数据正确叠加。

注意,这一步不是投影变换,只是纠正 QGIS 对数据坐标值的理解。如果修正后图层位置仍然明显错误,说明源坐标系判断可能还不对。

第三步:另存为目标坐标系并生成新数据

确认源 CRS 正确后,才开始真正的 QGIS坐标系转换。

  1. 右键目标图层。
  2. 选择“导出”。
  3. 点击“另存为”。
  4. 格式可选择 GeoPackage、ESRI Shapefile 或 GeoJSON。
  5. 在“CRS”处选择目标坐标系,例如 EPSG:3857、EPSG:4326 或本地投影坐标系。
  6. 设置输出文件路径。
  7. 勾选“将保存的文件添加到地图”。
  8. 点击“确定”。

导出完成后,QGIS 会生成一个新的图层。这个新图层的坐标值已经被重新计算,这才是真正的投影变换结果。

步骤:常见坐标系参数表

下面这张表用于快速判断常见数据的 CRS。实际项目中仍应以数据来源、元数据和当地测绘标准为准。

常见名称 常见 EPSG 坐标单位 典型坐标特征 适用场景
WGS84 地理坐标系 EPSG:4326 经度约 -180 到 180,纬度约 -90 到 90 GPS、GeoJSON、全球数据交换
Web Mercator EPSG:3857 坐标值较大,常见于互联网底图 WebGIS、在线地图瓦片
CGCS2000 地理坐标系 常见为 EPSG:4490 数值形态接近经纬度 国内测绘、自然资源、规划数据
CGCS2000 高斯-克吕格投影 需按分带确定 横坐标、纵坐标为米制值,常带分带信息 工程测量、国土空间、地籍数据
UTM 投影 按带号确定,例如 32650、32651 东坐标常在数十万米级 区域尺度分析、遥感数据处理
地方独立坐标系 通常无通用 EPSG 坐标值与标准坐标系不完全匹配 城市工程、管线、施工测量

如果目标是 WebGIS 展示,通常会把数据转为 EPSG:4326 或 EPSG:3857。如果目标是面积、长度、缓冲区等空间分析,应优先使用适合研究区的米制投影坐标系,而不是直接用经纬度坐标计算。

常见坑:QGIS投影变换失败的主要原因

坑一:把工程CRS当成数据已经转换

QGIS 支持“动态投影显示”,也就是不同 CRS 的图层可以在同一个工程中叠加显示。你看到图层对齐,并不代表数据文件本身已经转换。要生成目标坐标系数据,必须通过“另存为”或处理工具输出新文件。

坑二:源坐标系判断错了

投影变换依赖正确的源 CRS。如果源 CRS 错误,即使目标 CRS 选择正确,结果也会错。最典型的情况是把 CGCS2000 经纬度误认为 WGS84,或者把高斯-克吕格投影误认为 Web Mercator。

坑三:Shapefile的.prj文件缺失或不完整

Shapefile 的坐标系信息通常存储在 .prj 文件中。如果 .prj 缺失,QGIS 可能无法自动识别 CRS。此时需要根据数据来源人工指定图层 CRS,再进行 QGIS坐标系转换。

坑四:经纬度坐标直接计算面积

EPSG:4326 的单位是度,不是米。如果直接在经纬度坐标下计算面积或距离,结果通常不适合工程或统计分析。应先转换到适合研究区域的投影坐标系,再计算面积、长度、缓冲区。

坑五:地方坐标系没有标准EPSG

一些城市工程数据使用地方独立坐标系,不能简单通过搜索 EPSG 解决。此类数据可能需要七参数、四参数或控制点配准。遇到这种情况,应优先向数据提供方获取转换参数。

方法比较:QGIS中几种坐标系处理方式怎么选

方法 入口 是否生成新数据 推荐使用场景
设置图层 CRS 图层 CRS 设置 图层 CRS 定义错误或缺失时,用于纠正源 CRS
另存为并指定 CRS 右键图层 → 导出 → 另存为 最常用的 QGIS坐标系转换方式,适合单个图层
重新投影图层工具 处理工具箱 → 矢量通用 → 重新投影图层 适合规范化处理流程,便于批处理和模型构建
批量处理 处理工具箱中的批处理 多个图层统一转换到同一目标 CRS
工程 CRS 修改 右下角 CRS 按钮或工程属性 只改变显示坐标系,适合临时查看叠加效果

对初学者来说,最稳妥的流程是:先用底图或参考图层检查源 CRS,再用“另存为”输出目标 CRS,最后重新加载新文件检查坐标范围。

检查清单:转换完成后如何确认结果正确

完成 QGIS投影变换后,不要只看图层有没有显示出来,还要做以下检查:

  • 检查图层 CRS:右键新图层,查看属性中的 CRS 是否为目标坐标系。
  • 检查坐标范围:经纬度数据应是度值,投影数据应是米制值。
  • 检查叠加效果:与可靠底图、行政区边界或已知控制点叠加。
  • 检查面积和长度单位:目标 CRS 是否适合面积、距离计算。
  • 检查属性表:转换坐标系通常不应改变属性字段和记录数量。
  • 检查几何有效性:复杂面数据转换后可运行“检查有效性”工具。
  • 保留原始数据:不要覆盖源文件,建议使用新的文件名标记目标 CRS。

一个实用命名方式是:

roads_source_4326.gpkg
roads_projected_3857.gpkg
landuse_cgcs2000_gk.gpkg

这样后续协作时,其他人能从文件名快速判断坐标系状态,减少重复沟通和误操作。

FAQ:QGIS坐标系转换常见问题

QGIS坐标系转换后图层位置偏移怎么办?

先不要重复转换。应检查源 CRS 是否正确。如果源 CRS 错了,需要先“设置图层 CRS”修正定义,再重新另存为目标 CRS。已经基于错误源 CRS 转出的文件,通常需要从原始数据重新处理。

QGIS中EPSG:4326和EPSG:3857怎么选?

EPSG:4326 是经纬度坐标,适合数据交换、GeoJSON、GPS 点位等场景。EPSG:3857 是 Web Mercator,适合与在线底图、WebGIS 瓦片叠加。若要进行面积、距离、缓冲区分析,通常应选择适合研究区的投影坐标系,而不是盲目使用这两个 CRS。

为什么图层和底图能对上,但导出的文件给别人后又错了?

可能是你只修改了工程 CRS,或导出时没有正确选择目标 CRS。QGIS 的动态投影显示能让不同坐标系图层临时对齐,但数据文件本身未必已经转换。建议导出后重新打开一个空工程,只加载新文件和底图进行验证。

没有.prj文件的Shapefile怎么处理?

先根据坐标值范围、数据来源、项目说明判断源 CRS。确认后在 QGIS 中设置图层 CRS,再另存为带有明确 CRS 的 GeoPackage 或 Shapefile。不要在不确定源 CRS 的情况下直接转换。

CGCS2000和WGS84可以直接互转吗?

在很多普通制图和小比例尺展示场景中,两者差异可能不明显,但在工程测量、地籍、规划等高精度场景中不能简单忽略。应根据项目要求使用官方参数、地方转换参数或权威数据说明。

QGIS坐标系转换会改变属性表吗?

正常情况下不会改变属性字段和记录内容。坐标系转换主要改变几何坐标值。如果转换后记录数量变化,可能是导出失败、几何无效、编码或文件格式限制导致,需要检查 QGIS 日志和输出文件。

结论:先确认源坐标系,再做投影变换

QGIS坐标系转换并不复杂,真正容易出错的是源坐标系判断。记住三步即可:第一,确认数据原始 CRS;第二,必要时修正图层 CRS;第三,通过“另存为”或“重新投影图层”生成目标坐标系数据。

如果只是显示叠加,修改工程 CRS 就够了;如果要交付数据、做面积统计、距离计算或 WebGIS 发布,就必须生成真正重投影后的新文件。每次转换完成后,再用坐标范围、叠加效果和单位检查结果,基本可以避免大多数 QGIS投影变换错误。