10. 使用投影

坐标参考系,或CRS,是一种将数字坐标与地球表面上的位置相关联的方法。QGIS支持大约7,000个标准CRSS,每个CRSS都有不同的用例、优缺点!为您的QGIS项目和数据选择适当的参考系统可能是一项复杂的任务,但幸运的是,QGIS帮助您完成这一选择,并使使用不同CRS的工作尽可能透明和准确。

10.1. 投影支持概述

QGIS支持大约7,000个已知CRSS。这些标准CRSS以欧洲石油搜索小组(EPSG)和法国国家地理研究所(IGNF)定义的CRSS为基础,并通过基本的“Proj”投影库在QGIS中提供。通常,这些标准预测是通过使用权威机构:代码组合来确定的,其中权威机构是组织名称,如“EPSG”或“IGNF”,代码是与特定CRS相关联的唯一编号。例如,公共WGS 84纬度/经度CRS由标识符所知 EPSG:4326 ,Web地图标准CRS是 EPSG:3857

用户创建的定制CRS存储在用户CRS数据库中。请参见部分 自定义坐标参考系 有关管理您的自定义坐标参考系的信息。

10.2. 层坐标参考系

为了将数据正确投影到特定的目标CRS中,您的数据必须包含有关其坐标参考系的信息,或者您需要手动将正确的CRS指定给该层。对于PostGIS图层,QGIS使用在创建该PostGIS图层时指定的空间参考标识符。对于GDAL支持的数据,QGIS依赖于指定CRS的公认方法的存在。例如,对于shapefile格式,这是一个包含ESRI熟知文本的文件 (WKT )层的CRS的表示。此投影文件的基本名称与 .shp 文件和一个 .prj 分机。例如, alaska.shp 会有一个对应的名为 alaska.prj

无论何时将某一层加载到QGIS中,QGIS都会尝试自动确定该层的正确CRS。在某些情况下,这是不可能的,例如,当提供了没有保留该信息的层时。当QGIS无法自动确定某一层的正确CRS时,您可以配置QGIS行为:

  1. Open Settings ► 选项 Options... ► CRS

    ../../../_images/options_crs.png

    图 10.1 QGIS选项对话框中的CRS选项卡

  2. 在.之下 CRS for layers 组中,设置要执行的操作 when a new layer is created, or when a layer is loaded that has no CRS 。以下选项之一:

    • 单选按钮打开 Leave as unknown CRS (take no action) :加载没有CRS的层时,不会提示选择CRS,将CRS的选择推迟到以后。一次加载多个层时非常方便。这些层将可在 Layers 小组成员: 指示器无CRS 他们旁边的图标。它们也将是未引用的,将来自图层的坐标视为纯数字、非地球值,即与所有图层在以下情况下获得的行为相同 a project is set to have no CRS

    • 单选按钮关闭 Prompt for CRS :将提示您手动选择CRS。选择正确的选择是至关重要的,因为错误的选择会将您的层放置在地球表面的错误位置!有时,随附的元数据将为层描述正确的CRS,在其他情况下,您需要联系数据的原始作者以确定要使用的正确CRS。

    • 单选按钮关闭 Use project CRS

    • 单选按钮关闭 Use default layer CRS ,如 Default CRS for layers 上面的组合框。

小技巧

要在一次操作中将相同的CRS分配给没有CRS或存在错误CRS的多个层,请执行以下操作:

  1. 选择中的层 Layers 嵌板

  2. 新闻发布会 Ctrl+Shift+C 。您也可以右键单击其中一个选定的图层或转至 Layer ► Set CRS of layer(s)

  3. 查找并选择要使用的正确CRS

  4. 并按下 OK 。您可以确认它已在 Source 层的属性对话框的选项卡。

请注意,在此设置中更改CRS不会以任何方式更改底层数据源,而只是更改QGIS解释当前QGIS项目中的层的原始坐标的方式。

10.3. 项目坐标参考系

QGIS中的每个项目也有一个关联的坐标参考系。项目CRS确定如何将数据从其底层原始坐标投影到QGIS地图画布中呈现的平面地图。

QGIS支持栅格和矢量数据的“动态”CRS转换。这意味着,无论您的项目中特定地图层的底层CRS是什么,它们始终会自动转换为为您的项目定义的通用CRS。在幕后,QGIS透明地将项目中包含的所有层重新投影到项目的CRS中,以便它们都将被渲染到相对于彼此的正确位置!

为您的QGIS项目选择合适的CRS是很重要的。选择不适当的CRS可能会导致地图看起来扭曲,并且不能很好地反映真实世界中要素的相对大小和位置。通常,当在较小的地理区域工作时,将在特定国家或行政区域内使用一些标准CRSS。重要的是要研究哪些CRS是您正在绘制的区域的合适或标准选择,并确保您的QGIS项目遵循这些标准。

By default, QGIS starts each new project using a global default projection. This default CRS is EPSG:4326 (also known as "WGS 84"), and it is a global latitude/longitude based reference system. This default CRS can be changed via the CRS for New Projects setting in the CRS tab under Settings ► 选项 Options... (see 图 10.1). There is an option to automatically set the project's CRS to match the CRS of the first layer loaded into a new project, or alternatively you can select a different default CRS to use for all newly created projects. This choice will be saved for use in subsequent QGIS sessions.

项目CRS也可以通过 CRS 选项卡中的 Project ► Properties... 对话框中。它还将显示在QGIS状态栏的右下角。

../../../_images/projectionDialog.png

图 10.2 项目属性对话框

可用选项包括:

  • 未选中 No CRS (or unknown/non-Earth projection) :选中此设置将禁用QGIS项目内的所有投影处理,导致所有层和地图坐标被视为简单的二维笛卡尔坐标,与地球表面上的位置无关。它可以被用来猜测一个层CRS(基于它的原始坐标),或者当使用QGIS进行非地球用途时,如角色扮演游戏地图、建筑地图或微观事物。在本例中:

    • 渲染层时不进行重投影:仅使用要素的原始坐标绘制要素。

    • 椭球体被锁在外面并被迫 None/Planimetric

    • 距离和面积单位以及坐标显示被锁定,并被强制为“未知单位”;所有测量都是以未知地图单位进行的,不可能进行转换。

  • 或现有的坐标参考系,可以 geographicprojecteduser-defined 。将显示CRS范围的预览,以帮助您选择合适的范围。添加到项目中的层将动态转换到此CRS,以便覆盖它们,而不考虑其原始CRS。使用单位和椭球体设置是可用的,并且有意义,您可以相应地执行计算。

每当您为QGIS项目选择新的CRS时,测量单位都会在中自动更改 General 选项卡中的 Project properties 对话框 (Project ► Properties... )以匹配所选的CR。例如,一些CRS以英尺而不是米来定义其坐标,因此将QGIS项目设置为这些CRSS之一也会将您的项目默认设置为使用英尺进行测量。

小技巧

Setting the project CRS from a layer

您可以使用层CRS将CRS分配给项目:

  1. Layers 面板中,右键单击要拾取CRS的层

  2. 选择 Set project CRS from Layer

使用层的CRS重新定义项目的CRS。地图画布范围、坐标显示将相应更新,项目中的所有层都将动态转换为新的项目CRS。

10.4. 坐标参考系选择器

../../../_images/crs_selector.png

图 10.3 CRS选择器

此对话框可帮助您在提供一组投影数据库的情况下将坐标参考系指定给项目或层。对话框中的项目包括:

  • Filter :如果您知道坐标参考系的EPSG代码、标识符或名称,则可以使用搜索功能来查找它。输入EPSG代码、标识符或名称。

  • Recently used coordinate reference systems :如果您有某些在日常地理信息系统工作中经常使用的CRSS,则这些CRSS将显示在此列表中。单击其中一项以选择关联的CRS。

  • Coordinate reference systems of the world :这是QGIS支持的所有CRSS的列表,包括地理、投影和自定义坐标参考系。要定义CRS,请从列表中选择它,方法是展开相应节点并选择CRS。激活的CRS是预选的。

  • PROJ text :这是项目投影引擎使用的CRS字符串。本文为只读文本,仅供参考。

如果要从列表中删除最近使用的CRS,可以通过以下几种方法完成:

  • 新闻发布会 清除项 Remove from recently used CRS 按钮在右边。

  • 新闻发布会 Del 选择要删除的CRS后。

  • 右键单击已使用的CRS,然后选择 清除项 Remove selected CRS from recently used CRS 要删除选定的CR或 清除控制台 Clear all recently used CRS 删除所有已使用的CRS。

CRS选择器还显示所选CRS有效使用的地理区域的大致预览。许多CRS仅设计用于较小的地理区域,您不应在其设计区域之外使用这些CRS。无论何时从列表中选择CRS,预览贴图都会对大致的使用区域进行阴影处理。此外,该预览地图还显示了当前主画布地图范围的指示器。

10.5. 自定义坐标参考系

如果QGIS没有提供您需要的坐标参考系,您可以定义一个自定义CRS。要定义CRS,请选择 自定义项目 Custom CRS...Settings 菜单。自定义CRS存储在您的QGIS用户数据库中。除了您的定制CRSS之外,该数据库还包含您的空间书签和其他定制数据。

在QGIS中定义自定义CRS需要对Proj投影库有很好的了解。首先,请参阅Gerald I.Evenden的《Unix环境的制图投影程序-用户手册》,《美国地质调查局开放文件报告90-2841990》(可在https://pubs.usgs.gov/of/1990/of90-284/ofr90-284.pdf).获得

本手册介绍如何使用 proj 以及相关的命令行实用程序。与一起使用的制图参数 proj 在用户手册中进行了描述,并且与QGIS使用的相同。

这个 Custom Coordinate Reference System Definition 对话框只需要两个参数来定义用户CRS:

  1. 描述性的名称

  2. 项目或WKT格式的制图参数

要创建新的CR,请执行以下操作:

  1. 单击 符号系统添加 Add new CRS 按钮

  2. 输入描述性名称

  3. 选择格式:可以是 Proj StringWKT

  4. 添加CRS Parameters

    备注

    Prefer storing the CRS definition in WKT format

    虽然两者都是 Proj StringWKT 支持格式,强烈建议以WKT格式存储投影定义。因此,如果可用的定义是项目格式,请选择该格式,输入参数,然后切换到WKT格式。QGIS会将定义转换为您可以稍后保存的WKT格式。

  5. 单击 Validate 以测试CRS定义是否为可接受的投影定义。

../../../_images/customProjectionDialog.png

图 10.4 自定义CRS对话框

您可以测试您的CRS参数,看看它们是否会给出合理的结果。为此,请在中输入已知的WGS 84纬度和经度值 NorthEast 分别为FIELS。点击 Calculate ,并将结果与坐标参考系中的已知值进行比较。

10.5.1. 在QGIS中集成NTv2转换

要将NTv2转换文件集成到QGIS中,您还需要执行以下步骤:

  1. Place the NTv2 file (.gsb) in the CRS/Proj folder that QGIS uses (e.g. C:\OSGeo4W64\share\proj for windows users)

  2. Add nadgrids (+nadgrids=nameofthefile.gsb) to the Proj definition in the Parameters field of the Custom Coordinate Reference System Definition (Settings ► Custom Projections...).

    ../../../_images/nadgrids_example.png

    图 10.5 设置NTv2转换

10.6. 基准转换

在QGIS中,默认情况下启用‘即时’CRS转换,这意味着每当您使用具有不同坐标系的层时,QGIS都会透明地将它们重新投影到项目CRS。对于某些CRS,有许多可能的转换可用于重新投影到项目的CRS!

默认情况下,QGIS将尝试使用可用的最准确的转换。然而,在某些情况下,这可能是不可能的,例如,当需要额外的支持文件来使用转换时。只要有更准确的转换可用,但当前不可用,QGIS就会显示一条信息性警告消息,告知您更准确的转换以及如何在系统上启用它。通常,这需要下载转换支持文件的外部包,并将这些文件解压缩到 proj QGIS下的文件夹 user profile 文件夹。

如果需要,QGIS还可以在两个CRS之间进行多个可能的转换时提示您,并允许您明智地选择最适合您的数据的转换。

This customization is done in the Settings ► 选项 Options ► Transformations tab menu under the Default datum transformations group:

  • 使用 复选框 Ask for datum transformation if several are available :当源/目标CRS组合存在多个适当的基准转换时,将自动打开一个对话框,提示用户选择将这些基准转换中的哪一个用于项目。如果 Make default 当从该对话框中选择一个转换时,复选框被勾选,然后该选择将被记住并自动应用于任何新创建的QGIS项目。

  • 或定义适当的基准转换列表以在将层加载到项目或重新投影层时用作默认设置。

    使用 符号系统添加 按钮以打开 Select Datum Transformations 对话框中。然后:

    1. 选择 Source CRS 使用下拉菜单或 集合投影 Select CRS 小工具。

    2. 提供 Destination CRS 以同样的方式。

    3. 表中将显示从源到目标的可用转换列表。单击行将显示有关应用的设置以及转换的相应精度和使用区域的详细信息。

      ../../../_images/datumTransformation.png

      图 10.6 选择首选的默认基准变换

      在某些情况下,转换可能无法在您的系统上使用。在这种情况下,转换仍将在此列表中显示(灰显),但在您安装所需的转换支持包之前无法选择。通常,会提供一个按钮来下载和安装相应的网格,然后将其存储在 proj 处于活动状态的文件夹 user profile 目录。

    4. 找到您喜欢的转换并选择它

    5. 设置您是否 复选框 Allow fallback transforms if preferred operation fails

    6. 单击 OK

      将行添加到表中的 Default Datum Transformations 包含有关 Source CRS vt.的. Destination CRS vt.的. Operation 申请转型,是否 Allow fallback Transforms 已启用。

    从现在起,QGIS会自动使用所选的基准面转换在这两个CRS之间进行进一步转换,直到您将其删除( 符号系统移除 )或更改条目( ToggleEditing )。

Datum transformations set in the Settings ► 选项 Options ► Transformations tab will be inherited by all new QGIS projects created on the system. Additionally, a particular project may have its own specific set of transformations specified via the CRS tab of the Project properties dialog (Project ► Properties...). These settings apply to the current project only.