为空照图进行空间对位

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

内容说明

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

你还会学到这些

  • 下载超高解析度的公领域影像资料
  • 在 QGIS 中使用 OpenLayers 附加元件
  • 使用 cs2cs 指令工具在不同的投影系统之间转换坐标
  • 使用手边已经过空间对位的图层,提供空间对位时的控制点座标资讯
  • 为某图层自订「无资料值」(No-data Value)

取得资料

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

下载 Washington Square Park, New York 的 JPG 影像。你可以直接在 JPG 的按钮上按右键然后选 Save link as... .

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

newyorkcity-washingtonsquarepark.jpg

操作流程

1. 本教学会使用开放街图来当作参考图层。请到 Plugins ‣ Manage and install plugins ‣ Get more 。 有关在 QGIS 中如何使用附加元件,可参考 使用附加元件

../_images/1.png

2. 安装后,就可选择 Plugins ‣ OpenLayers plugin ‣ Add OpenStreetMap layer , 如此一来 QGIS 会载入 OpenStreetMap data 预先处理好的资料块。

../_images/2.png

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

../_images/3.png

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

../_images/4.png

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

../_images/5.png

6. 确定 cs2cs 指令有安装在系统中后,就可以着手来把经纬度座标转换成麦卡托座标。 使用这个工具时,必须要指定 sourcedestination CRS. 指定的方法可以为 PROJ4 string 或是 EPSG code 。 因为我们已经知道目标图层的 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
../_images/6.png

7. 复制输出的座标,然后在 QGIS 视窗最下端的坐标栏位中,把刚才复制的坐标贴上,记得格是要符合 X,Y 的样子。 按下 Enter 键之后,可以看到地图有稍微平移但没有放大,我们必须要自己调整右侧的比例选单,例如调到 1:2500 后再按下 Enter。

../_images/7.png

8. 太棒了,Washington Square Park 出现在画面中了!总算可以开始来进行 Georeferencer , 请选择 Raster ‣ Georeferencer ‣ Georeferencer , 如果你找不到此选项的话,要到 Plugins ‣ Manage and install Plugins ‣ Installed 。 的分页中启用:guilabel:`Georeferencer GDAL`这个附加元件。

../_images/8.png

9. 在 Georeferencer 视窗中选择:menuselection:File –> Open raster, 选择刚下载的 JPG 档,然后按 Open

../_images/9.png
  1. 在:guilabel:Coordinate Reference System Selector`视窗中,选择:guilabel:`EPSG:3857 Pseudo Mercator
../_images/10.png

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

../_images/11.png
  1. 当你在图上按下点位时,会有个视窗跳出来要求输入地图坐标。选择:guilabel:From map canvas
../_images/12.png

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

../_images/13.png
  1. 接下来选择:menuselection:Settings –> Transformation settings.
../_images/14.png

15. 输入如图所示的参数设定,记得勾选回到 Load in QGIS when done`QGIS 中。 按下确定钮回到 :guilabel:`Georeferencer 的视窗中, 点选 File ‣ Start georeferencing,程序就会开始使用控制点转换产生新影像。

../_images/15.png

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

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

18. 切到 Transparency 分页,我们要把黑色和白色的像素通通指定为`no-data` , 就可以让他们都变透明。在 No data value 中输入 0 , 接着在下方的 Custom transparency options 按下 + 按钮然后在每个波段中都输入 255, Percent transparent 则输入 100 ,最后按下 OK

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