地理配准地形图和扫描地图(QGIS3)

大多数GIS项目都需要地理配准某些栅格数据。地理配准 是将实际坐标分配给栅格的每个像素的过程。在许多的情况下,这些座标是透过野外调查收集而来,例如说用 GPS 装置定位那些易于辨识的地标。但有的时候,例如说如果你要使用的是某地图的数位化扫描档,你也可以借由地图上的一些标记来蒐集空间座标。一旦我们有了这些采样的座标点或地面控制点 (Ground Control Points),这些影像就可以用给定的座标系统来投影绘制。在本章节中,我们会讨论相关的概念、作法与 QGIS 提供的工具,以达成高准确度空间对位的目标。

本教学的目标是为一张具有座标资讯 (例如有座标标切的经纬度网格) 的地图影像进行地理配准。如果你的来源影像没有这类资讯,请参考在 地理参考航空影像 (QGIS3) 中的说明

内容说明

我们要为一份 1870 年的南印地图扫描档,以 QGIS 进行地理参考。

你还会学到这些

  • 如何判断老地图的大地座标(Datum)与座标系统(Coordinate System)。

取得资料

Hipkiss的扫描过的旧地图 网站上有大量的非版权扫描过的地图集,可用于研究。

这边可以下载储存 1870 年的南印度地图 的 JPG 档。

为了方便起见,你也可以直接用下面的连结下载数据集:

1870_southern_india.jpg

操作流程

1.Georeferencing in QGIS is done via the Georeferencer GDAL plugin. This is a core plugin - meaning it is already part of your QGIS installation. You just need to enable it. Go to Plugins ‣ Manage and Install Plugins and enable the Georeferencer GDAL plugin in the Installed tab. See 使用附加元件 for more details on how to work with plugins.

../../_images/149.png
  1. 该附加插件安装在栅格菜单中。单击 Raster ‣ Georeferencer 以打开插件。

../../_images/229.png
  1. 此附加元件视窗有上下 2 个部分,上半部是影像显示区,下半部则会以表格方式呈现所有的地面控制点。

../../_images/320.png
  1. 现在就来开启我们的 JPG 影像。选择 File ‣ Open Raster,然后找到刚才下载的地图扫描档,按下 Open

../../_images/410.png
  1. 接下来,程式会要你选择参考座标系统 (CRS)。我们的来源影像是 JPEG 档,并没有包含任何参考座标系统的资讯,所以你可以点选 Cancel

../../_images/511.png
  1. 您将看到图像将被加载到顶部。您可以使用工具栏中的缩放/平移控件来了解有关地图的更多信息。

../../_images/611.png
  1. 现在我们要为图上的某些点指定座标了。仔细观察后,可以发现本地图具有标示经纬度的格线。

../../_images/711.png
  1. 在开启加入地面控制点 (Ground Control Points, GCP) 之前,必须先填写空间对位的设定。按下 Settings -> Transformation settings

../../_images/811.png
  1. Transformation settings 对话框中,将 Transformation type 选择为 Polynomial 2。 请参阅 QGIS文档 了解不同的穿透式类型及其用法。单击 Target SRS 旁边的 Select CRS 按钮。

../../_images/911.png
  1. 在本例的情况下,CRS 资讯可以直接在地图影像扫描档上取得。我们先端详一下地图,可发现本地图的座标是经纬度,不过并没有标示任何的大地座标系统资讯,所以我们得自己假设一个才行。因为此地图是年代久远的印度地图,我们可以猜测它是使用 Everest 1830 大地座标系统,这应该会有不错的结果。搜寻 everest 然后选择最老的 Everest 大地基准的 CRS (EPSG:4042),然后按下 OK

../../_images/1011.png

注解

印度Topo图纸调查是在1960年至2000年之间创建的,使用的是Everest 1956椭球体和India_nepal基准面。如果您要对SOI Topo Sheets进行地理配准,则可以使用以下参数在QGIS中定义自定义CRS,并在此步骤中使用它。此定义包括用于将此数据转换为WGS84的delta_x,delta_y和delta_z参数。有关 印度网格系统 的更多信息,请参见此页面。

+proj=longlat +a=6377301.243 +b=6356100.2284 +towgs84=295,736,257,0,0,0,0 +no_defs

注解

大多数地图都是使用Projected CRS创建的。如果您尝试进行地理配准的地图使用了已知的投影CRS,但是标线标签位于地理CRS(纬度/经度)中,则可以使用替代工作流程来最大程度地减少失真。不用像我们在这里使用的那样使用地理CRS,而是可以在QGIS中创建矢量网格并将其转换为投影的CRS,以用作精确坐标捕获的参考。有关更多详细信息,请参见 本页

  1. 将输出栅格命名为 1870_southern_india_modified.tif。 选择 LZW 作为 Compression 标签。确保选中 Load in QGIS when done 选项。单击 OK

../../_images/1114.png

注解

未压缩的GeoTIFF文件的大小可能非常大。因此压缩它们始终是一个好主意。您可以在 本文 中了解有关不同TIFF压缩选项(LZW,PACKBITS或DEFLATE)的更多信息。

  1. 现在,我们可以开始添加地面控制点(GCP)。在我们的案例中,网格线的交点将用作 地面真相。标记网格线后,我们可以使用它们确定点的X和Y坐标。单击 Add Point

../../_images/1212.png

在跳出的视窗中输入此点的座标,记得 X 是经度,Y 是纬度。完成后按下 OK

../../_images/1311.png
  1. 这下子,下半部的地面控制点表格会新增一栏你刚刚选的地面控制点。

../../_images/1410.png
  1. 同样,至少添加更多覆盖整个图像的GCP。点数越多,图像到目标坐标的配准就越准确。多项式2转换至少需要6个GCP。

../../_images/159.png
  1. 一旦添加了转换所需的最少点数,您将注意到GCP现在具有非零的 dXdYResidual 错误值。如果特定的GCP具有异常高的误差值,则通常意味着在输入坐标值时出现人为错误。 因此,您可以删除该GCP并再次捕获它。 您也可以通过点击目标中任一单元格中的单元格来编辑GCP表中的坐标值。 Dest. XDest. Y 目标标签。对GCP满意后,转到 File ‣ Start georeferencing。 这将开始使用GCP变形图像并创建目标栅格的过程。

../../_images/168.png
  1. 处理程式结束后,已经过空间对位修正的图层会被载入到 QGIS 中,空间地理配准的操作就此完成。

../../_images/179.png

注解

GCP也将显示在主QGIS画布中。如果要删除它们,可以切换到 Georeferencer 窗口,然后选择 File-> Reset Georeferencer

  1. 验证做过的事永远是件好习惯,现在就让我们好好检查一下本操作是否准确。请试着从可信的来源(例如 Natural Earth 资料库)寻找并读取含有国家边界的 shapefile,然后跟我们的结果比对一下。你可以看到,他们基本上对应得相当良好,不过仍然有一点小误差。如要减少这些误差,可以增加更多控制点、修改空间对位的参数,或是换另一个猜测的大地座标系统来试试。

../../_images/188.png