QGIS入门教程五: 坐标系怎么转换?自定义投影咋设?

GIS基础理论
Dr.GIS
wowwwai GIS研习社 · 工具流程与项目排障

QGIS入门教程五: 坐标系怎么转换?自定义投影咋设?这篇教程里,我们专门解决一个入门阶段最容易踩坑的问题:数据明明加载进来了,却位置不对、距离面积不准,或者项目里找不到自己需要的本地坐标系。本文会用 QGIS 的实际操作说明坐标系转换、图层重投影、自定义投影设置,以及转换后如何检查结果。

QGIS坐标系转换与QGIS自定义投影设置流程示意图
QGIS 中常见的坐标系转换流程:确认图层坐标系、设置项目坐标系、导出重投影结果,必要时添加自定义投影。

引言:QGIS坐标系转换到底在解决什么问题

很多新手第一次使用 QGIS 时,会遇到这几类问题:

  • 两个图层加载后没有叠在一起,位置相差很远。
  • 矢量数据能显示,但量测距离、面积明显不对。
  • 图层属性里显示“未知坐标系”或 CRS 未定义。
  • 项目坐标系是 EPSG:4326,但制图或分析需要使用投影坐标系。
  • 单位想从经纬度变成米,却不知道应该在哪里设置。
  • 本地规划、测绘或工程数据使用自定义投影,QGIS 里搜不到对应 EPSG 编号。

这些问题本质上都和坐标参考系统有关。QGIS 里常说的 CRS,是 Coordinate Reference System 的缩写,中文一般叫坐标参考系统。它决定了地理数据如何从地球表面映射到地图平面上。

本文围绕一个核心目标:让你知道什么时候只是设置显示坐标系,什么时候必须真正转换数据坐标系,以及 QGIS 自定义投影应该怎么设置。

背景:QGIS里的项目坐标系、图层坐标系和重投影不是一回事

在 QGIS 中,坐标系至少要分清三层:

  • 图层坐标系:数据本身使用的坐标系,例如 WGS 84、CGCS2000、高斯-克吕格投影等。
  • 项目坐标系:当前 QGIS 工程窗口用来显示地图的坐标系。
  • 导出后的数据坐标系:通过“另存为”或处理工具真正生成的新数据坐标系。

QGIS 默认支持“动态投影”,也就是不同坐标系的数据可以在同一个项目中临时转换显示。这能让图层看起来叠在一起,但不代表数据文件本身已经完成坐标系转换。

一句话判断:如果只是地图窗口显示变化,通常是项目坐标系改变;如果导出了一个新文件,并指定了目标 CRS,才是完成了真正的 QGIS坐标系转换。

原理:为什么QGIS坐标系转换会影响位置、距离和面积

地理坐标系使用经纬度表示位置,常见单位是度,例如 EPSG:4326 WGS 84。投影坐标系把地球表面投影到平面,常见单位是米,例如 UTM、Web Mercator、CGCS2000 高斯-克吕格投影等。

如果你在经纬度坐标系下直接计算面积,结果通常不适合用于工程统计。因为经纬度的单位是角度,不是平面距离单位。QGIS 可以显示面积,但它依赖项目设置、椭球体设置和计算方式。如果要做缓冲区、距离分析、面积统计,建议先把数据转换到适合研究区域的投影坐标系。

常见坐标系大致可以这样理解:

类型 常见例子 单位 适合场景
地理坐标系 EPSG:4326 WGS 84 全球定位、经纬度数据交换、GPS 数据
Web地图投影 EPSG:3857 Web Mercator 互联网底图显示,如在线地图瓦片
工程或测绘投影 CGCS2000 高斯-克吕格、UTM 距离、面积、缓冲区、规划制图、工程分析
自定义投影 地方坐标系、带有特定中央经线的投影 通常为米 本地项目、历史数据、测绘院或设计院提供的数据

步骤:QGIS坐标系怎么转换

步骤一:先检查图层当前坐标系

在做 QGIS坐标系转换之前,先不要急着导出数据。请先确认图层当前 CRS 是否正确。

  1. 在图层面板中右键点击目标图层。
  2. 选择属性
  3. 进入源信息信息页面。
  4. 查看图层的 CRS,例如 EPSG:4326、EPSG:3857 或其他编号。
  5. 同时查看范围值。如果范围类似 100、30 这种经纬度数值,通常是地理坐标;如果范围是几百万、几十万,可能是投影坐标。

如果图层显示“未知 CRS”,先不要直接转换。未知 CRS 的数据必须先判断它原本是什么坐标系,再进行定义或转换。

步骤二:设置项目坐标系用于临时显示

如果你的目的只是让地图窗口显示成某个坐标系,可以设置项目坐标系。

  1. 查看 QGIS 窗口右下角的 CRS 按钮。
  2. 点击当前 CRS 编号。
  3. 在搜索框输入目标坐标系名称或 EPSG 编号。
  4. 选择目标 CRS。
  5. 点击确定。

设置项目坐标系后,QGIS 会在显示时自动把图层重投影到项目 CRS。这个操作不会改变原始数据文件。

例如,项目坐标系设置为 EPSG:3857 后,地图窗口会按 Web Mercator 显示;但如果原始 Shapefile 是 EPSG:4326,它本身仍然是经纬度坐标。

步骤三:真正转换图层坐标系并导出新数据

如果你需要把数据文件本身转换为目标坐标系,应使用“导出”功能。

  1. 在图层面板右键点击要转换的矢量图层。
  2. 选择导出
  3. 点击另存为
  4. 格式可选择 GeoPackage、ESRI Shapefile、GeoJSON 等。
  5. 在 CRS 一栏选择目标坐标系。
  6. 设置文件保存路径。
  7. 勾选“将保存的文件添加到地图中”。
  8. 点击确定。

这一步才是真正的 QGIS坐标系转换。QGIS 会按照目标 CRS 重新计算每个要素的坐标,并生成一个新图层。

建议优先使用 GeoPackage 格式保存转换结果。相比 Shapefile,GeoPackage 对中文字段、字段长度、多图层管理和大数据量支持更友好。

步骤四:栅格数据怎么转换坐标系

栅格数据不能简单用矢量“另存为”的方式处理。QGIS 中栅格重投影通常使用 GDAL 工具。

  1. 打开菜单栅格
  2. 选择投影
  3. 点击变形(重投影)
  4. 输入栅格图层。
  5. 设置源 CRS 和目标 CRS。
  6. 选择重采样方法。
  7. 设置输出文件路径。
  8. 运行工具。

重采样方法要根据数据类型选择。连续型栅格,例如高程、温度、降雨量,可以使用双线性或三次卷积;分类栅格,例如土地利用、地类编码,应使用最邻近,以免类别值被插值成无意义的小数。

步骤五:转换后如何验证结果

完成 QGIS坐标系转换后,不要只看“能显示”就结束。建议检查以下内容:

  • 新图层属性中的 CRS 是否为目标坐标系。
  • 图层范围数值是否符合目标坐标系单位。
  • 与可靠底图、行政区边界或控制点是否叠合。
  • 随机量测一段已知距离,看单位和数值是否合理。
  • 面积统计是否符合业务常识。
  • 导出的文件重新打开后,是否仍然能正确定位。

如果转换后的图层位置仍然偏移,通常不是导出步骤的问题,而是源数据坐标系判断错误、缺少坐标转换参数,或者把“定义坐标系”和“转换坐标系”混用了。

步骤:QGIS自定义投影咋设

什么时候需要QGIS自定义投影

一般情况下,能用 EPSG 编号就不要自定义投影。只有在以下场景中,才考虑 QGIS自定义投影:

  • 地方坐标系没有标准 EPSG 编号。
  • 甲方或测绘单位提供了完整的投影参数。
  • 数据使用特殊中央经线、假东坐标、假北坐标或比例因子。
  • 旧项目使用了历史投影定义,需要在 QGIS 中复现。
  • 同一批数据长期使用企业内部坐标系统。

自定义投影不是“随便写个名字”。它必须包含正确的投影方法、椭球体、基准面、中央经线、纬度原点、单位等参数。参数错一个,图层就可能整体偏移。

在QGIS中添加自定义投影

  1. 打开 QGIS。
  2. 进入菜单设置
  3. 选择自定义投影
  4. 点击新增按钮。
  5. 填写自定义 CRS 名称,例如“本地CGCS2000三度带中央经线XXX”。
  6. 在参数框中输入 PROJ 字符串或 WKT 定义。
  7. 点击验证,确认语法可用。
  8. 保存自定义投影。

保存后,你可以在项目坐标系、图层导出 CRS、处理工具参数中搜索这个自定义投影名称。

自定义投影参数示例

下面是一个常见横轴墨卡托投影的 PROJ 参数示例。实际项目不能直接照抄,必须根据你的数据说明替换中央经线、椭球体和假东坐标等参数。

+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs

这个示例中,各参数含义如下:

  • +proj=tmerc:表示横轴墨卡托投影,常用于高斯-克吕格类投影。
  • +lat_0=0:纬度原点。
  • +lon_0=117:中央经线。
  • +k=1:比例因子。
  • +x_0=500000:假东坐标,用于避免横坐标为负。
  • +y_0=0:假北坐标。
  • +ellps=GRS80:椭球体,CGCS2000 通常与 GRS80 椭球相关。
  • +units=m:单位为米。

如果你的单位提供的是 WKT 定义,也可以直接在 QGIS 自定义投影中使用 WKT。对于正式生产项目,优先使用数据提供方给出的完整 WKT 或权威参数说明。

用自定义投影进行坐标系转换

自定义投影保存后,操作方式和普通 CRS 类似:

  1. 右键需要转换的图层。
  2. 选择导出,点击另存为
  3. 在 CRS 中搜索你刚创建的自定义投影名称。
  4. 选择输出格式和保存路径。
  5. 导出新图层。
  6. 加载结果并检查位置、距离和面积。

如果源数据本身就是该自定义投影,但 QGIS 识别成未知 CRS,你应先给图层指定正确的源 CRS,再考虑是否转换到其他坐标系。

常见坑:QGIS坐标系转换最容易出错的地方

把“定义坐标系”当成“转换坐标系”

这是新手最常见的问题。定义坐标系只是告诉 QGIS:这批坐标原来属于哪个 CRS。转换坐标系则是把坐标值重新计算到另一个 CRS。

操作 作用 是否改变坐标值 适用场景
定义坐标系 给无 CRS 或错误 CRS 的数据指定原始 CRS 不改变 数据缺少 .prj 或 CRS 未知但坐标值本身正确
转换坐标系 生成目标 CRS 下的新坐标 改变 需要把经纬度转为米制投影坐标,或统一项目数据 CRS

如果一批数据原本是 CGCS2000 投影坐标,却被错误定义为 WGS 84,经纬度显示肯定会乱。正确做法是先定义原始 CRS,再重投影到目标 CRS。

只改项目坐标系,以为数据已经转换

右下角项目 CRS 改变,只影响显示。发送数据给别人、上传数据库、做空间分析时,原始文件仍然保持原来的坐标系。需要交付目标坐标系数据时,一定要导出重投影后的新文件。

源坐标系判断错误

QGIS坐标系转换是否正确,最关键的是源 CRS 是否判断正确。如果源 CRS 错了,后面选择再正确的目标 CRS 也没用。

判断源坐标系可以看:

  • 数据说明文档。
  • 文件附带的 .prj 文件。
  • 坐标值范围。
  • 项目所在地区。
  • 与已知控制点或底图叠加情况。
  • 数据提供方的坐标系统说明。

使用EPSG:3857做面积和距离分析

EPSG:3857 很适合 Web 地图显示,但不适合作为精确面积、距离统计的通用投影。它在不同纬度存在明显变形。做本地规划、用地统计、缓冲区分析时,应选择适合研究区域的投影坐标系。

忽略坐标转换参数导致偏移

不同大地基准之间转换时,可能需要转换参数。例如某些地方坐标系、旧坐标系与 WGS 84 或 CGCS2000 之间存在平移、旋转、尺度差异。没有正确参数时,图层可能出现几十米甚至更大的偏移。

这类问题不能靠反复试 EPSG 编号解决,应向数据提供方确认坐标基准、转换参数和投影定义。

方法比较:项目坐标系、图层导出、自定义投影该怎么选

需求 推荐方法 是否生成新数据 注意点
只是让不同图层在地图窗口叠加显示 设置项目坐标系 不改变原始文件
把 Shapefile 或 GeoPackage 转成另一个 CRS 右键图层导出另存为 确认源 CRS 正确
把栅格影像转换到目标 CRS 栅格变形(重投影) 选择合适重采样方法
QGIS 搜不到本地投影坐标系 添加 QGIS自定义投影 否,保存的是 CRS 定义 必须有准确参数
数据缺少 CRS,但坐标值本身没问题 先定义源 CRS,再按需重投影 视操作而定 不要直接乱转

如果你只是学习 QGIS 入门操作,可以先掌握三句话:

  • 显示不对,先查图层 CRS。
  • 要交付目标坐标系数据,必须导出重投影。
  • 找不到 CRS 时,只有拿到准确参数才做自定义投影。

检查清单:做QGIS坐标系转换前后逐项确认

转换前检查

  • 是否知道源数据的真实坐标系。
  • 是否确认数据单位是度还是米。
  • 是否有 .prj、WKT、EPSG 编号或项目坐标说明。
  • 是否知道目标用途:显示、制图、分析还是数据交付。
  • 是否选择了适合研究区域的目标投影坐标系。
  • 如果是自定义投影,是否拿到了完整参数。

转换中检查

  • 矢量数据是否使用导出另存为进行重投影。
  • 栅格数据是否使用重投影工具。
  • 分类栅格是否使用最邻近重采样。
  • 输出文件路径是否避免中文特殊符号和过长路径。
  • 输出格式是否满足后续软件使用需求。

转换后检查

  • 新图层 CRS 是否为目标 CRS。
  • 坐标范围是否符合目标坐标系特征。
  • 与权威边界、底图、控制点是否叠合。
  • 距离和面积单位是否正确。
  • 关闭 QGIS 后重新打开输出文件,位置是否仍然正确。
  • 给别人使用前,是否连同说明文档一起交付。

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

QGIS里改了右下角坐标系,为什么导出的文件还是原来的坐标系?

右下角设置的是项目坐标系,只控制当前地图窗口的显示方式。要改变文件本身坐标系,需要右键图层,选择导出另存为,并在 CRS 中指定目标坐标系。

QGIS自定义投影设置后,为什么图层还是偏移?

常见原因有三个:源坐标系判断错误、自定义投影参数错误、缺少基准转换参数。自定义投影只定义投影数学关系,如果原始数据基准或转换参数不对,图层仍然会偏移。

EPSG:4326可以直接用来计算面积吗?

不建议直接用于常规平面面积统计。EPSG:4326 的单位是度。做面积、距离、缓冲区分析时,应先转换到适合研究区域的投影坐标系,例如本地高斯-克吕格、UTM 或其他米制投影。

为什么同一个图层在QGIS和其他软件里位置不一样?

可能是两个软件对坐标系定义、动态投影、基准转换参数的处理方式不同。建议检查图层 CRS、项目 CRS、坐标转换参数,以及是否存在 .prj 文件缺失或被错误覆盖的问题。

没有EPSG编号,能不能手动创建QGIS自定义投影?

可以,但前提是你有完整且可信的投影参数。至少应知道投影方法、椭球体、中央经线、纬度原点、假东坐标、假北坐标、单位以及必要的基准转换信息。没有参数时,不建议凭经验猜测。

Shapefile转换坐标系后,为什么字段名或中文乱码了?

这通常不是坐标系问题,而是 Shapefile 格式和编码限制导致的。建议在 QGIS 中导出为 GeoPackage,或者在导出 Shapefile 时检查编码设置。GeoPackage 更适合保存中文字段和较复杂的数据结构。

QGIS坐标系转换后,面积还是不对怎么办?

先检查目标 CRS 是否为米制投影坐标系,再检查项目测量设置、椭球体设置和面积计算字段表达式。如果使用字段计算器,建议确认几何字段来自转换后的图层,而不是旧图层。

结论:先判断源坐标系,再决定是否转换或自定义投影

QGIS坐标系转换的关键不在于按钮有多复杂,而在于你是否分清了项目坐标系、图层坐标系和真正的数据重投影。只改项目 CRS 只能改变显示,导出另存为才会生成目标坐标系下的新数据。

如果遇到 QGIS自定义投影需求,不要把它当成万能修复工具。只有拿到准确投影参数和必要的坐标转换信息,自定义 CRS 才能可靠使用。

实际工作中建议形成固定流程:先查源 CRS,再选目标 CRS,然后导出重投影,最后用底图、控制点、距离和面积进行验证。这样处理,绝大多数 QGIS 坐标系问题都能被定位和解决。