QGIS自定义投影怎么做?参数具体怎么填?

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

很多同学在做地方坐标、工程坐标或历史数据配准时,会遇到“QGIS自定义投影怎么做?参数具体怎么填?”这个问题:明明有一串投影参数,却不知道应该填到 QGIS 的哪个位置;或者导入后图层能显示,但位置偏了几百米甚至几公里。本文按实际操作流程讲清楚 QGIS自定义投影 的创建方法、参数含义、填写顺序和检查办法。

QGIS自定义投影怎么做 QGIS自定义投影参数具体怎么填
QGIS 自定义投影的核心流程:先确认参数来源,再录入 CRS 定义,最后用已知底图或控制点验证位置。

引言:什么时候需要在 QGIS 自定义投影

QGIS 默认内置了大量坐标参考系,也就是 CRS。一般情况下,WGS 84、CGCS2000、Web Mercator、高斯-克吕格分带等常见坐标系都可以直接搜索使用,不需要自己写参数。

真正需要 QGIS自定义投影 的场景通常有以下几类:

  • 甲方只给了一组工程坐标参数,没有标准 EPSG 编码。
  • 数据来自地方独立坐标系、矿区坐标系、城市坐标系或施工坐标系。
  • 已有旧版 ArcGIS 的 PRJ 文件,但 QGIS 中搜索不到完全一致的坐标系。
  • 同一个数据在 QGIS 里加载后偏移,需要检查中央经线、椭球、假东、假北等参数。
  • 需要把一套常用的投影参数保存下来,后续项目反复使用。

注意,自定义投影不是“随便改一个坐标系名称”。它本质上是在 QGIS 中新建一个坐标参考系定义,告诉软件如何理解图层坐标值,以及如何和其他坐标系进行转换。

背景:QGIS 自定义投影参数通常从哪里来

在填写 QGIS自定义投影 参数之前,最重要的不是打开软件,而是确认参数来源是否可靠。很多投影错误并不是 QGIS 操作问题,而是源参数本身不完整。

常见的参数来源包括:

  • PRJ 文件:Shapefile 旁边的 .prj 文件,里面通常保存 WKT 格式的坐标系定义。
  • 项目技术文档:测绘成果说明、坐标系统说明、控制点成果表。
  • ArcGIS 坐标系定义:ArcMap 或 ArcGIS Pro 中导出的坐标系文本。
  • PROJ 字符串:例如包含 +proj=tmerc+lat_0+lon_0 的参数。
  • EPSG 相近坐标系:已知使用某个标准投影,但中央经线或带号需要确认。

如果你只有“这是 2000 坐标系”这样的描述,通常还不够。CGCS2000 只是大地基准和椭球信息,具体到投影坐标,还需要知道是几度带、中央经线是多少、是否有带号、假东坐标如何设置。

原理:先分清地理坐标系、投影坐标系和自定义 CRS

理解 QGIS自定义投影 的关键,是先分清三个概念。

1. 地理坐标系

地理坐标系使用经纬度表达位置,单位通常是度。例如 WGS 84、CGCS2000 地理坐标系。它关心的是椭球、基准面和经纬度坐标。

2. 投影坐标系

投影坐标系把地球表面的经纬度转换到平面坐标,单位通常是米。例如高斯-克吕格投影、横轴墨卡托投影、UTM 投影等。工程测量、面积计算、距离分析通常更适合用投影坐标系。

3. QGIS 自定义 CRS

QGIS 中的自定义 CRS,是你手动保存的一条坐标参考系定义。它可以使用 WKT 格式,也可以使用 PROJ 字符串。QGIS 会根据这条定义解释坐标、进行重投影和坐标转换。

所以,“QGIS自定义投影怎么做”的核心不是点哪个按钮,而是把正确的 CRS 定义以 QGIS 能识别的格式保存下来。

步骤:QGIS 自定义投影怎么做

步骤 1:先确认图层当前坐标值是什么单位

在 QGIS 中打开图层后,先观察图层坐标值。可以把鼠标移动到地图上,看窗口底部状态栏的坐标。

  • 如果坐标类似 116.35, 39.90,通常是经纬度坐标,单位是度。
  • 如果坐标类似 39500000, 4420000,可能是带号形式的高斯-克吕格坐标。
  • 如果坐标类似 500000, 4420000,可能是去带号的投影坐标。
  • 如果坐标类似 12000, 8500,可能是地方独立坐标或工程坐标。

这一步用于判断你要自定义的是地理坐标系、投影坐标系,还是需要额外的坐标转换参数。很多时候,QGIS自定义投影 只能解决“投影定义”问题,不能自动解决地方坐标到国家坐标的七参数转换问题。

步骤 2:打开 QGIS 自定义坐标参考系窗口

  1. 打开 QGIS。
  2. 点击顶部菜单中的 设置
  3. 选择 自定义投影自定义坐标参考系。不同版本 QGIS 的中文翻译可能略有差异。
  4. 点击新增按钮,创建一个新的自定义 CRS。

建议名称写得具体一点,不要只写“自定义坐标系”。例如可以写成:

  • CGCS2000_GK_CM117_3degree_custom
  • Local_Project_2024_TMerc
  • XX市独立坐标系_横轴墨卡托

名称不会改变坐标系本身,但清晰的命名能减少后续误用。

步骤 3:优先使用 WKT 参数填写

如果你有完整 PRJ 文件,最稳妥的方法是复制其中的 WKT 坐标系定义,粘贴到 QGIS 自定义 CRS 的参数框中。

一个投影坐标系 WKT 通常会包含以下信息:

  • PROJCS:投影坐标系名称。
  • GEOGCS:底层地理坐标系。
  • DATUM:大地基准。
  • SPHEROID:椭球名称、长半轴、扁率倒数。
  • PROJECTION:投影方法。
  • PARAMETER:中央经线、原点纬线、比例因子、假东、假北等参数。
  • UNIT:坐标单位,通常是 Meter。

示意结构如下:

PROJCS["Custom_CGCS2000_GK",
  GEOGCS["GCS_China_Geodetic_Coordinate_System_2000",
    DATUM["D_China_2000",
      SPHEROID["CGCS2000",6378137,298.257222101]],
    PRIMEM["Greenwich",0],
    UNIT["Degree",0.0174532925199433]],
  PROJECTION["Transverse_Mercator"],
  PARAMETER["False_Easting",500000],
  PARAMETER["False_Northing",0],
  PARAMETER["Central_Meridian",117],
  PARAMETER["Scale_Factor",1],
  PARAMETER["Latitude_Of_Origin",0],
  UNIT["Meter",1]]

这类 WKT 适合从 ArcGIS、GDAL、测绘软件或已有 PRJ 文件迁移到 QGIS。粘贴后可以点击验证或应用,如果 QGIS 能识别,通常会显示为有效 CRS。

步骤 4:没有 WKT 时,用 PROJ 字符串填写

如果资料中给的是投影参数,可以用 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 投影方法,tmerc 表示横轴墨卡托 高斯-克吕格、横轴墨卡托常用
+lat_0=0 原点纬线 我国常见高斯投影一般为 0
+lon_0=117 中央经线 根据分带或项目参数填写
+k=1 比例因子 高斯-克吕格通常为 1,UTM 通常为 0.9996
+x_0=500000 假东坐标 常见为 500000,也可能包含带号
+y_0=0 假北坐标 北半球常见为 0
+ellps=GRS80 椭球 CGCS2000 常对应 GRS80
+units=m 单位 投影坐标一般为米

这里最容易填错的是 +lon_0+x_0。如果中央经线错了,图层可能整体向东西方向偏移;如果假东坐标是否带带号搞错,坐标值会出现数量级不一致。

步骤 5:保存自定义 CRS 并赋给图层

自定义 CRS 保存后,需要明确区分两个操作:

  • 设置图层 CRS:告诉 QGIS 这个图层原本是什么坐标系。
  • 另存为重投影:把数据坐标值真正转换到另一个坐标系。

如果图层只是“没有定义坐标系”,坐标值本身是对的,应当右键图层,进入图层属性,设置正确的源 CRS。这个过程不改变几何坐标值。

如果你要把数据从自定义投影转换为 WGS 84、CGCS2000 经纬度或 Web Mercator,需要右键图层,选择导出或另存为,在目标 CRS 中选择要转换到的坐标系。这个过程会改变输出数据的坐标值。

步骤 6:用已知数据验证位置是否正确

QGIS自定义投影 设置完成后,不要只看图层是否显示。正确的验证方式是叠加可靠参考数据。

建议按以下顺序检查:

  1. 叠加同区域的标准行政区、道路、水系或影像底图。
  2. 检查图层是否整体落在正确城市或项目区。
  3. 检查几个明显点位,如道路交叉口、河流拐点、建筑边界。
  4. 如果有控制点,比较控制点坐标转换后的误差。
  5. 检查面积、距离是否符合实际量级。

如果整体偏移比较稳定,可能是基准转换参数缺失;如果偏移方向和距离很大,优先检查中央经线、分带、假东坐标和单位。

常见坑:QGIS 自定义投影参数具体怎么填才不容易错

坑 1:把“定义投影”和“坐标转换”混为一谈

定义投影只是告诉 QGIS 如何解释已有坐标。坐标转换是把坐标从一个 CRS 计算到另一个 CRS。很多新手看到图层不在正确位置,就反复修改图层 CRS,这往往会越改越乱。

判断方法很简单:如果原始坐标值本身没有改变,你只是设置了图层 CRS;如果导出新文件后坐标值改变了,才是完成了重投影或坐标转换。

坑 2:中央经线填错

高斯-克吕格和横轴墨卡托投影对中央经线非常敏感。比如同样是 CGCS2000,高斯 3 度带,不同带号对应不同中央经线。中央经线错一带,数据可能偏移上百公里。

如果资料中给的是带号,需要先换算中央经线。常见 3 度带中央经线可以按带号与分带规则推算,但实际项目应以测绘成果说明为准。

坑 3:假东坐标是否包含带号没确认

国内一些高斯-克吕格坐标会在横坐标前加带号。例如同一位置的横坐标可能表现为 500000 附近,也可能表现为 39500000 这种带号加假东的形式。

在 PROJ 字符串中,+x_0 通常填写投影参数的假东坐标,不一定等于数据横坐标前面的完整数值。是否需要保留带号,要看数据生产单位的约定。

坑 4:CGCS2000、WGS84、北京54、西安80混用

不同大地基准之间存在差异。仅仅把椭球从 WGS84 改成 CGCS2000,不一定能解决地方数据的偏移。北京54、西安80、CGCS2000 之间如果需要高精度转换,通常还涉及七参数、四参数或格网改正。

如果项目要求厘米级或分米级精度,应向数据提供方索取正式转换参数,不要只靠自定义投影猜测。

坑 5:把经纬度图层当作投影坐标处理

如果坐标值是 100 多和 30 多,很可能是经纬度。此时不应该套用 +proj=tmerc 这样的投影参数。否则图层会被错误解释。

正确做法是先给图层定义对应的地理坐标系,例如 WGS 84 或 CGCS2000,再根据需要重投影到平面坐标系。

方法比较:WKT、PROJ 字符串和直接选 EPSG 哪个更合适

方法 适用场景 优点 注意事项
直接选择 EPSG 标准坐标系,如 WGS 84、Web Mercator、常见 UTM 最简单,出错少 要确认 EPSG 与数据真实坐标系一致
导入或粘贴 WKT 已有 PRJ 文件、ArcGIS 坐标系定义 信息完整,适合迁移 仍需检查基准和投影参数是否符合项目
填写 PROJ 字符串 只有中央经线、假东、椭球等参数 简洁,便于手动调整 参数名和单位必须准确
仅修改图层 CRS 数据坐标值正确,但缺少坐标系定义 不会改变原始几何坐标值 不能替代真正的重投影
另存为重投影 需要输出到另一个 CRS 生成新的坐标值和新文件 源 CRS 必须先定义正确

实际工作中,优先级建议是:能用标准 EPSG 就不要自定义;有完整 PRJ 就用 WKT;只有参数表时再写 PROJ 字符串。这样最符合 QGIS自定义投影 的稳定使用原则。

检查清单:提交成果前逐项核对

  • 是否确认了数据原始坐标值的单位,是度还是米?
  • 是否确认了底层地理坐标系,例如 WGS84、CGCS2000、北京54或西安80?
  • 是否确认了投影方法,例如 Transverse Mercator、高斯-克吕格或 UTM?
  • 中央经线是否与分带或项目说明一致?
  • 比例因子是否正确,高斯常见为 1,UTM 常见为 0.9996?
  • 假东、假北是否正确,是否存在带号前缀?
  • 单位是否为米,是否存在英尺或其他单位?
  • 是否区分了“设置图层 CRS”和“另存为重投影”?
  • 是否叠加可靠底图、行政区或控制点进行验证?
  • 如果存在稳定偏移,是否检查过基准转换参数是否缺失?

FAQ:QGIS 自定义投影常见问题

Q1:QGIS 自定义投影填完后图层还是偏,怎么办?

先不要继续乱改参数。建议按顺序检查:源数据 CRS 是否定义正确、中央经线是否正确、假东坐标是否带带号、椭球和基准是否匹配、是否缺少七参数或地方坐标转换参数。如果图层整体稳定偏移,很可能不是投影参数本身,而是基准转换问题。

Q2:只有一个 PRJ 文件,能不能直接用于 QGIS?

可以。用文本编辑器打开 PRJ 文件,复制其中的 WKT 内容,粘贴到 QGIS 自定义坐标参考系中。保存后再把这个自定义 CRS 指定给对应图层。完成后一定要叠加参考数据验证。

Q3:QGIS 自定义投影参数具体怎么填,WKT 和 PROJ 哪个更推荐?

如果有完整 WKT,优先用 WKT,因为它包含的信息更完整。如果只有中央经线、椭球、假东、假北等参数,可以写 PROJ 字符串。对于标准坐标系,最推荐直接搜索 EPSG,不必自定义。

Q4:自定义 CRS 后,原始数据坐标值会变吗?

不会。给图层指定自定义 CRS 只是定义坐标参考系,不会改变几何坐标值。只有执行导出、另存为并选择目标 CRS 时,输出文件的坐标值才会发生转换。

Q5:为什么同样是 CGCS2000,别人数据能对上,我的数据对不上?

CGCS2000 只是一个坐标基准体系,实际数据还可能涉及不同投影分带、不同中央经线、是否带带号、地方坐标转换参数等。只知道“CGCS2000”通常不足以完整确定投影坐标系。

Q6:地方独立坐标系可以只靠 QGIS 自定义投影解决吗?

不一定。如果地方独立坐标系只是标准投影参数不同,可以通过 QGIS自定义投影 处理。如果它还包含平移、旋转、尺度改正等工程坐标转换关系,则需要四参数、七参数、仿射变换或专门的坐标转换流程。

结论:先确认参数,再自定义投影,最后验证结果

QGIS自定义投影 的正确流程可以概括为三句话:先确认原始数据坐标系和参数来源;再用 WKT 或 PROJ 字符串在 QGIS 中创建自定义 CRS;最后通过底图、控制点或已知成果验证位置。

如果只是图层没有坐标系定义,就给它指定正确 CRS;如果要转换到另一个坐标系,就在源 CRS 正确的前提下另存为重投影。遇到偏移时,不要只盯着 QGIS 操作界面,更要检查中央经线、假东坐标、椭球基准和地方转换参数。这样处理,才能真正解决“QGIS自定义投影怎么做?参数具体怎么填?”这个问题。