为空照图进行空间对位

警告

本教学已经过时,如需阅读新的版本请前往 地理参考航空影像 (QGIS3)

为纸本地图进行空间对位教学中,我们介绍了一种 QGIS 中进行空间对位的方法。这种方法可运用在扫描版地图上,我们可以寻找地图上的座标点当作控制点。但有的时候,地图上会没有这种网格点,又或是你要为影像进行空间对位,这方法也行不通。在这种情况下,我们可以使用其他的空间对位资料来源来当作输入。本教学中,我们会学习如何在空间对位的操作中使用这些开放的资料来源。

内容说明

我们要使用高解析度的气球影像(Balloon-imagery),以 OpenStreetMap 的参考座标进行空间对位。

你还会学到这些

  • 下载超高解析度的公领域影像资料

  • 在 QGIS 中使用 OpenLayers 附加元件

  • 使用 cs2cs 指令工具在不同的投影系统之间转换坐标

  • 使用手边已经过空间对位的图层,提供空间对位时的控制点座标资讯

  • 为某图层自订「无资料值」(No-data Value)

取得资料

本教学中,我们要使用 The Public Laboratory 收集的一系列绝美的气球、风筝空拍影像。他们其实也有释出空间对位过的版本,不过为了练习,我们在这里要下载的是未经空间对位的 JPG 档,然后再于 QGIS 中进行空间对位。如果你喜欢他们提供的影像,可以在 Google Earth 中进一步探索。

下载纽约市 Washington Square Park 的 JPG 影像。你可以直接在 JPG 的按钮上按右键然后选 Save link as…

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

UNTRANSLATED STRING newyorkcity-washingtonsquarepark.jpg

操作流程

  1. 本教学会使用开放街图来当作参考图层。请到 附加元件 ‣ 管理与安装附加元件 中安装 OpenLayers Plugin。有关在 QGIS 中如何使用附加元件,可参考 使用附加元件

../_images/1135.png
  1. 安装后,就可选择 :menuselection:`附加元件(或网路) --> OpenLayers plugin --> Add OpenStreetMap layer`_,如此一来 QGIS 会载入 OpenStreetMap预先处理好的资料块。

../_images/289.png
  1. 现在开放街图的资料已经读到 QGIS 中了。注意此图层的座标参考系统 (CRS) 是 EPSG 3857 - 伪麦卡托投影(Pseudo Mercator),我们接下来在此图层中使用的座标都会是这个 CRS,所以值得在此一提。

../_images/346.png
  1. 下一件事是寻找我们要进行空间对位的地区。开放街图的图层可以自由缩放寻找地点,不过这里我们来用另外一种未来可能会有用的工具进行搜寻。我们知道刚刚下载的图片是位在纽约的 Washington Square Park,如果你把这个地点丢到网路上搜寻,就可以在维基百科的页面中找到此条目,内容还包括公园的座标。

../_images/430.png
  1. 你会发现这里的座标是经纬度,以度/分/秒的方式显现,但我们的图层是麦卡托投影,需要把它转换成麦卡托直角坐标才能定位。因此,我们要使用一个方便的指令叫做 cs2cs 来帮我们这个忙。一般来说,在 Windows 安装 QGIS 时,应该会把一个称为 OSGEO4W 的套件也一并安装,而在 Linux 和 Mac 上亦然。在后两个作业系统上,可以进入终端机,输入 cs2cs 查看此程式是否存在,而 Windows 使用者可以去 开始(所有程式) ‣ OSGeo4W ‣ MSYS 启动终端机(译按:或是 开始(所有程式) ‣ QGIS ‣ OSGeo4W Shell。)

注解

Mac 的使用者可以在此找到 cs2cs 工具: /Library/Frameworks/PROJ.Framework/Programs/cs2cs

../_images/530.png
  1. 确定 cs2cs 指令有安装在系统中后,就可以着手来把经纬度座标转换成麦卡托座标。使用这个工具时,必须要指定初始目标的 CRS,指定的方法可以为 PROJ4 字串或是 EPSG 代码。因为我们已经知道目标图层的 CRS,所以直接使用后者即可。此指令最简单的使用方法是直接在命令列中输入座标,这个指令读入座标的顺序是 X Y,所以我们要输入的是「经度 纬度」。输入如下所示的指令并按下 Enter 键(指令中的反斜线 () 是双引号 (“) 的逃脱字符。在某些终端机版本中,不用加上逃脱字符和字串前后的双引号)。完成之后,可以看到萤幕上会显示 EPSG 3857 座标系统的 X Y 座标。

echo "-73d59'51\" 40d43'51\"" | cs2cs +init=EPSG:4326 +to +init=EPSG:3857

-8237364.02 4972720.34 0.00

如果以上的指令没有用,可以试试看以下的不同版本

echo -73d59'51 40d43'51 | cs2cs +init=EPSG:4326 +to +init=EPSG:3857
../_images/629.png
  1. 复制输出的座标,然后在 QGIS 视窗最下端的坐标栏位中,把刚才复制的坐标贴上,记得格是要符合 X,Y 的样子。按下 Enter 键之后,可以看到地图有稍微平移但没有放大,我们必须要自己调整右侧的比例选单,例如调到 1:2500 后再按下 Enter(译按:如果地图空白一片,请试试 1:5000。)

../_images/729.png
  1. 太棒了,Washington Square Park 出现在画面中了!总算可以开始来进行空间对位,请选择 影像 ‣ 空间对位 ‣ 空间对位,如果你找不到此选项的话,要到 附加元件 ‣ 管理与安装附加元件 ‣ 已安装 的分页中启用 空间对位 GDAL 这个附加元件。

../_images/828.png
  1. 空间对位 视窗中选择 档案 ‣ Open raster,选择刚下载的 JPG 档,然后按 开启

../_images/929.png
  1. 选择座标参考系统 视窗中,选择 EPSG:3857 Pseudo Mercator

../_images/1027.png
  1. 接下来按下在工具列上的 Add Point 钮,然后选择几个比较容易定位的特征点,例如转角、十字路口、雕像等等,这些点稍后要拿来当作控制点。

../_images/1136.png
  1. 当你在图上按下点位时,会有个视窗跳出来要求输入地图坐标。选择 从地图画面取得坐标

../_images/1229.png
  1. 在我们用来当作参考图层的开放街图上找到相同的位置点一下,地图上的坐标就会自动被使用为控制点坐标。使用同样的方法选择并记录至少 4 个点位的坐标。

../_images/1328.png
  1. 接下来选择 设定 ‣ Transformation settings

../_images/1427.png
  1. 输入如图所示的参数设定,记得勾选回到 处理完毕后载入 QGIS 中。按下确定钮回到 空间对位 的视窗中,点选 档案 ‣ Start georeferencing,程式就会开始使用控制点转换产生新影像。

../_images/1526.png
  1. 处理程式结束后,已经过空间对位修正的图层会被载入到 QGIS 中。没意外的话,你会看到新影像与开放街图的图层叠合得相当不错。

../_images/1623.png
  1. 如要让它看起来更顺眼,得要移除掉影像周围的黑色和白色无资料值。在这个图层上按右键,选择 属性

../_images/1722.png
  1. 切到 透明度 分页,我们要把黑色和白色的像素通通指定为无资料值,就可以让他们都变透明。在 附加无资料值 中输入 0,接着在下方的 自订透明度选项中,按下 + 按钮然后在每个波段中都输入 255,透明百分比则输入 100,最后按下 确定

../_images/1821.png
  1. 现在,影像看起来就很漂亮的叠在地图上了。

../_images/1917.png