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 格式到你的硬盘上。
为方便起见,你也可以从下面的链接直接下载数据集的副本:
操作步骤¶
- 打开 QGIS,点击 栅格 ‣ 地理配准器 以打开该工具。
注意
从 QGIS 3.26 版本开始,可以从 图层 ‣ 地理配准器 启动 地理配准器。
- 地理配准器分为两个部分。顶部区域用于显示图像,底部区域将显示包含 GCP 点的表格。
- 现在我们将打开 JPG 图像。转到 文件 ‣ 打开栅格。浏览到下载的扫描地图图像,然后点击 打开。
- 你将看到图像被加载到顶部区域。你可以使用工具栏中的缩放/平移控件来查看更多地图细节。
- 现在我们需要为这张地图上的一些点分配坐标。仔细观察,你会看到带有标记的坐标网格线。这些是经纬度格网线。
- 在添加地面控制点 (GCP) 之前,我们需要定义转换设置。点击地理配准窗口中的齿轮图标,打开转换设置对话框。
- 在转换设置对话框中,选择转换类型为
多项式 2。参见 QGIS 文档 以了解不同的转换类型及其用途。然后选择重采样方法为最近邻法。点击 目标 SRS 旁边的 选择 CRS 按钮。
- 如果你正在对此类扫描地图进行地理配准,可以从地图本身获取 CRS 信息。查看我们的地图图像,坐标是以经纬度格式显示的。没有给出基准面信息,因此我们必须假设一个合适的基准面。由于地点在印度且地图年代久远,我们可以推断 Everest 1830 基准面可能会给出较好的结果。搜索
everest并选择包含最古老 Everest 基准面定义的 CRS (EPSG:4042)。点击 确定。
注意
印度测绘局在 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 中创建矢量格网,并将其转换到投影坐标系,用作精确坐标采集的参考。更多细节请参阅 此页面。
- 将输出栅格命名为
1870_southern_india_modified.tif。选择LZW作为压缩方式。勾选 保存 GCP 点 以便将来将这些点作为单独文件存储。确保 完成后加载到 QGIS 选项被勾选。点击 确定。
注意
未压缩的 GeoTIFF 文件可能非常庞大。因此压缩它们总是一个好主意。你可以在 这篇文章 中了解更多关于不同 TIFF 压缩选项(LZW、PACKBITS 或 DEFLATE)的信息。
- 现在我们可以开始添加地面控制点 (GCP)。点击 添加点 按钮。
- 将十字准线放置在网格线的交点处并左键单击,这在我们这种情况下将作为地面实况点。由于网格线有标签,我们可以利用它们确定点的 X 和 Y 坐标。在弹出窗口中输入坐标。记住 X=经度,Y=纬度。点击 确定。
- 你会注意到 GCP 表格现在有一行,包含你的第一个 GCP 的详细信息。
- 类似地,添加更多的 GCP,覆盖整个图像。你拥有的点越多,你的图像配准到目标坐标的精度就越高。
多项式 2转换至少需要 6 个 GCP。一旦你添加了转换所需的最少点数,你会注意到 GCP 现在有非零的dX、dY和残差误差值。如果某个特定 GCP 的误差值异常高,这通常意味着输入坐标值时出现了人为错误。因此,你可以删除那个 GCP 并重新采集。你也可以点击 GCP 表格中目标 X 或目标 Y 列的单元格来编辑坐标值。
- 当你对 GCP 满意后,点击 开始地理配准 按钮。这将开始使用 GCP 对图像进行扭曲处理并创建目标栅格的过程。
- 过程完成后,你将在 QGIS 中看到已加载的地理配准图层。地理配准现已完成。此外,你会注意到右下角的项目 CRS 已设置为 EPSG:4042,正如在转换设置中描述的那样。
- 从浏览器面板底部的 XYZ 切片下拉菜单中拖放
OpenStreetMap作为底图,以验证地理配准图层。要设置透明度,请点击 打开图层样式面板 图标并选择 透明度 选项卡。将透明度设置为40 %。现在,地理配准后的图像应与底图的轮廓重叠。
- 如果需要更精细地调整地理配准,我们可以从已采集的 GCP 点开始。浏览到
1870_southern_india_modified.tif文件所在位置。你可以找到一个额外的文件1870_southern_india_modified.tif.points。此文件包含 GCP 点信息。
- 在 QGIS 中打开地理配准工具,点击 文件 ‣ 加载 GCP 点,并选择
1870_southern_india_modified.tif.points。这将加载先前创建的 GCP。然后加载1870_southern_india_modified.tif以微调你的工作。
如果你想提供反馈或分享你对此教程的经验,请在下方评论。(需要 GitHub 账户)

















