4.1.1 坐标系变换

前面已经介绍过关于地理坐标系和投影坐标系的一些基本常识,下面主要介绍如何通过QGIS对数据进行坐标系定义与变换。

1. 动态投影

动态投影(On-the-fly reprojection)就是当地图视图中的多个数据坐标系不同时,QGIS自动对一部分数据进行投影转换,以便将这些数据有效地叠加在一起。QGIS地图视图的默认坐标系会以第一个添加进来的数据为准,之后被加入的数据将自动投影转换在这个坐标系之上。另外,动态投影转换是临时的,不改变数据中的坐标系设置。

修改动态投影的默认坐标系的方法如下。

(1)单击QGIS右下角的“EPSG:code”按钮,打开项目属性对话框。

(2)在“Project Properties”对话框的“CRS”选项卡中,在“Predefined Coordinate Reference Systems”选项中选择需要设置的坐标系即可。

另外,选择“No projection”复选框即可设置无坐标系;通过“Recently Used Coordinate Reference Systems”可以快速找到最近使用的坐标参考系,也可以通过“Filter”选项筛选、查找需要的坐标系。

在QGIS中,常用的坐标系都包括一个唯一的标识符。标识符由前缀(管理机构标识符)和后缀(坐标系编码)组成。QGIS坐标系标识符的前缀如表4-1所示,例如,“EPSG:4326”的前缀“EPSG”表示欧洲石油调查组织,后缀为该组织定义的WGS 1984坐标系编码。

表4-1 坐标系标识符的前缀(管理机构标识符)

EPSG定义的坐标系包括绝大多数的坐标系;ESRI和IGNF声明的坐标系相对应用较少;IAU2000定义的坐标系为其他星球的坐标系(如水星、金星等)。

在“CRS”选项卡中,可以对动态投影开启状态、新项目默认坐标系、无坐标系定义图层的默认坐标系等进行设置,如图4-1所示。

图4-1 “CRS”选项卡

2. 矢量文件坐标系的定义

如果某个矢量数据没有定义坐标系,或者定义了错误的坐标系,则可以通过以下方法更改坐标系。

(1)将需要修改坐标系的矢量数据添加到QGIS地图视图中。

(2)在图层列表的该图层上右击,在弹出的快捷菜单中选择“Set CRS”—“Set LayerCRS…”命令(也可以在图层属性对话框的“Source”选项卡中单击“Set source coordinate reference system”选项右侧的按钮),打开“Coordinate Reference System Selector”对话框,如图4-2所示。

图4-2 临时修改矢量图层坐标系定义

(3)在弹出的对话框中设置正确的坐标系,单击“OK”按钮保存即可。此时该矢量图层已经按照新设置的坐标系显示在地图视图中。

注意,虽然此时图层坐标系发生了变化,但是并没有改变数据源坐标系,坐标系变化是临时的。如果需要永久修改数据源坐标系,执行完以上步骤后,通过以下方式将图层要素导出为新的数据源:在矢量图层上右击,在弹出的快捷菜单中选择“Export”—“Save Features As…”命令,打开“Save Vector Layer as…”对话框,如图4-3所示。此时,将“CRS”选项设置为定义的正确的坐标系,并选择输出文件的位置,单击“OK”按钮另存矢量数据即可。

图4-3 永久修改矢量图层坐标系定义(导出为新的数据源)

3. 坐标系变换

如果希望改变矢量数据的坐标系,也采用“Save Features As…”工具,具体流程如下。

(1)打开需要投影变换的矢量数据。

(2)在该数据图层上右击,在弹出的快捷菜单中选择“Export”—“Save Features As…”命令,打开“Save Vector Layer as…”对话框。将“CRS”选项设置为需要投影到的坐标系,在“File name”选项选择输出文件的位置,单击“OK”按钮另存数据即可。

【小提示】QGIS处理工具箱的“Vector general”—“Reproject layer”工具也可以用于对矢量图层进行投影变换。

4. 自定义坐标系

选择“Settings”—“Custom Projections…”菜单命令,打开“Custom Coordinate Reference System Definition”对话框。在“Name”选项输入新的坐标系名称;在“Format”选项选择定义坐标系使用的字符串类型,包括proj4字符串和WKT字符串两类;在“Parameters”选项输入坐标系定义;单击按钮可以复制已有的坐标系定义;单击“Validate”按钮可以检验坐标系的可用性,如图4-4所示。

图4-4 自定义坐标系

proj4字符串与WKT字符串都可以定义坐标系,且可以相互转换。例如,WGS 84坐标系的proj4字符串定义如下:

再比如,CGCS2000/Gauss-Kruger CM 111E坐标系的proj4字符串定义如下:

proj4字符串的各项参数说明如表4-2所示。

表4-2 proj4字符串的各项参数定义及说明

QGIS会为每个自定义坐标系增加一个标识符,并从“USER:100000”开始编号,随后就可以用新的坐标系标识符进行坐标系定义和变换了。