Skip to content

12_地理配准地形图与扫描地图 QGIS3

原文链接: https://www.qgistutorials.com/en/docs/3/georeferencing_basics.html

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

大多数 GIS 项目都需要对某些栅格数据进行地理配准。地理配准是为栅格的每个像素分配真实世界坐标的过程。通常这些坐标是通过野外调查获得的——使用 GPS 设备在图像或地图上采集一些易于识别地物的坐标。在某些情况下,如果你打算对扫描地图进行数字化处理,可以从地图图像本身的标记中获取坐标。使用这些采样坐标或地面控制点 (GCP),图像将被扭曲并使其适配到所选的坐标系中。在本教程中,我将讨论在 QGIS 中实现高精度地理配准的概念、策略和工具。

本教程旨在对地图图像本身带有坐标信息(即带有标签的网格)的图像进行地理配准。如果你的源图像没有此类信息,可以使用 地理配准航空影像 (QGIS3) 中概述的方法。

任务概述

我们将使用一张 1870 年的印度南部扫描地图,并利用 QGIS 对其进行地理配准。

你将学到的其他技能

  • 如何确定旧地图的基准面和坐标系。
  • 保存已创建的 GCP 点。
  • 编辑已创建的 GCP 点进行微调。

获取数据

Hipkiss 的扫描旧地图 网站收藏了大量已过版权期的扫描地图,可用于研究。

下载 1870 年印度南部地图,并将其保存为 JPG 格式到你的硬盘上。

为方便起见,你也可以从下面的链接直接下载数据集的副本:

1870_southern_india.jpg

操作步骤

  1. 打开 QGIS,点击 栅格 ‣ 地理配准器 以打开该工具。

注意

从 QGIS 3.26 版本开始,可以从 图层 ‣ 地理配准器 启动 地理配准器

../../_images/015.png

  1. 地理配准器分为两个部分。顶部区域用于显示图像,底部区域将显示包含 GCP 点的表格。

../../_images/025.png

  1. 现在我们将打开 JPG 图像。转到 文件 ‣ 打开栅格。浏览到下载的扫描地图图像,然后点击 打开。

../../_images/035.png

  1. 你将看到图像被加载到顶部区域。你可以使用工具栏中的缩放/平移控件来查看更多地图细节。

../../_images/045.png

  1. 现在我们需要为这张地图上的一些点分配坐标。仔细观察,你会看到带有标记的坐标网格线。这些是经纬度格网线。

../../_images/055.png

  1. 在添加地面控制点 (GCP) 之前,我们需要定义转换设置。点击地理配准窗口中的齿轮图标,打开转换设置对话框。

../../_images/065.png

  1. 在转换设置对话框中,选择转换类型为 多项式 2。参见 QGIS 文档 以了解不同的转换类型及其用途。然后选择重采样方法为 最近邻法。点击 目标 SRS 旁边的 选择 CRS 按钮。

../../_images/075.png

  1. 如果你正在对此类扫描地图进行地理配准,可以从地图本身获取 CRS 信息。查看我们的地图图像,坐标是以经纬度格式显示的。没有给出基准面信息,因此我们必须假设一个合适的基准面。由于地点在印度且地图年代久远,我们可以推断 Everest 1830 基准面可能会给出较好的结果。搜索 everest 并选择包含最古老 Everest 基准面定义的 CRS (EPSG:4042)。点击 确定。

../../_images/085.png

注意

印度测绘局在 1960 年至 2000 年间创建的地形图使用 Everest 1956 椭球体和 India_nepal 基准面。如果你正在对 SOI 地形图进行地理配准,可以在 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) 创建的。如果你试图配准的地图使用了你知道的投影坐标系,但格网标记是地理坐标系 (Geographic CRS)(纬度/经度),你可以采用替代工作流程以最小化失真。与其像我们在这里使用地理坐标系 (Geographic CRS) 不同,你可以在 QGIS 中创建矢量格网,并将其转换到投影坐标系,用作精确坐标采集的参考。更多细节请参阅 此页面

  1. 将输出栅格命名为 1870_southern_india_modified.tif。选择 LZW 作为压缩方式。勾选 保存 GCP 点 以便将来将这些点作为单独文件存储。确保 完成后加载到 QGIS 选项被勾选。点击 确定。

../../_images/095.png

注意

未压缩的 GeoTIFF 文件可能非常庞大。因此压缩它们总是一个好主意。你可以在 这篇文章 中了解更多关于不同 TIFF 压缩选项(LZW、PACKBITS 或 DEFLATE)的信息。

  1. 现在我们可以开始添加地面控制点 (GCP)。点击 添加点 按钮。

../../_images/1020.png

  1. 将十字准线放置在网格线的交点处并左键单击,这在我们这种情况下将作为地面实况点。由于网格线有标签,我们可以利用它们确定点的 X 和 Y 坐标。在弹出窗口中输入坐标。记住 X=经度,Y=纬度。点击 确定。

../../_images/1123.png

  1. 你会注意到 GCP 表格现在有一行,包含你的第一个 GCP 的详细信息。

../../_images/1221.png

  1. 类似地,添加更多的 GCP,覆盖整个图像。你拥有的点越多,你的图像配准到目标坐标的精度就越高。多项式 2 转换至少需要 6 个 GCP。一旦你添加了转换所需的最少点数,你会注意到 GCP 现在有非零的 dXdY残差 误差值。如果某个特定 GCP 的误差值异常高,这通常意味着输入坐标值时出现了人为错误。因此,你可以删除那个 GCP 并重新采集。你也可以点击 GCP 表格中目标 X 或目标 Y 列的单元格来编辑坐标值。

../../_images/1319.png

  1. 当你对 GCP 满意后,点击 开始地理配准 按钮。这将开始使用 GCP 对图像进行扭曲处理并创建目标栅格的过程。

../../_images/1417.png

  1. 过程完成后,你将在 QGIS 中看到已加载的地理配准图层。地理配准现已完成。此外,你会注意到右下角的项目 CRS 已设置为 EPSG:4042,正如在转换设置中描述的那样。

../../_images/1515.png

  1. 从浏览器面板底部的 XYZ 切片下拉菜单中拖放 OpenStreetMap 作为底图,以验证地理配准图层。要设置透明度,请点击 打开图层样式面板 图标并选择 透明度 选项卡。将透明度设置为 40 %。现在,地理配准后的图像应与底图的轮廓重叠。

../../_images/1614.png

  1. 如果需要更精细地调整地理配准,我们可以从已采集的 GCP 点开始。浏览到 1870_southern_india_modified.tif 文件所在位置。你可以找到一个额外的文件 1870_southern_india_modified.tif.points。此文件包含 GCP 点信息。

../../_images/1715.png

  1. 在 QGIS 中打开地理配准工具,点击 文件 ‣ 加载 GCP 点,并选择 1870_southern_india_modified.tif.points。这将加载先前创建的 GCP。然后加载 1870_southern_india_modified.tif 以微调你的工作。

../../_images/1813.png


如果你想提供反馈或分享你对此教程的经验,请在下方评论。(需要 GitHub 账户)