目录

上一个主题

6.3. 编辑向量几何图层

下一个主题

6.5. GIS拓扑关系


本教程由OSGeo中国中心维护。

6.4. 地图数字化

数字化操作是GIS最常进行的工作之一。把影像资料数字化、转成向量图层常常会花费许多的GIS操作时间。不过在 QGIS 中, 有着强大的数字化编修功能,我们在本节进行介绍。我们要把一张地形图的图档转化成数个向量图层,内容包括地图中一个公园 附近的一些地理标记。接下来我们看下具体操作。

我们要使用纽西兰本土与查塔姆群岛(Chatham Islands)。可以直接用下面的链接下载(裁切过的版本): http://www.qgistutorials.com/downloads/BX24_GeoTifv1-02-clip.tif

6.4.1. 数字化

1. 现在我们开始进行数字化,首先要加载我们需要数字化的地图,选择 Layer ‣ Add Layer ‣ Add Raster Layer , 然后按 Add 。没有剪切过的图像是非常大的,当我们要拖曳或是缩放地图时,都要花上一点时间让程序调整影像的解析尺寸。 QGIS提供了简单的解决方法来增进这些动作的速度,称之为"Image Pyramids"。这种方法其实就是预先产生不同解析度的相同影像, 在地图操作时,可以直接使用而不用再从全尺寸的影像做处理,加快浏览速度。在本节中我们使用的是剪切过的图像,但是我们也看一下 QGIS的影像处理,在"BX24_GeoTifv1-02"图层上按右键选择 Properties ,切换到 Pyramids 分页, 在 Resolutions 中按住 Ctrl 钮,把所有解析度都选取,其他选项使用预设值, 然后按 Build pyramids 。程序执行完毕后,按下 OK 。这是我们已经把影像进行了处理, 如 图 6.40

_images/4_xkd.png

图 6.40 Pyramids界面

2. 现在我们回到QGIS主视窗,使用 Zoom 钮来搜寻"Hagley Park"这就是等一下要数字化的区域, 如 图 6.41

_images/5_xab.png

图 6.41 搜索数字化区域

3. 在开始之前,先来调整预设的 "Digitizing Options"。选择 Settings ‣ Options... , 在 Options 页面中切换到 Digitizing 分页,预设接合模式选择 Default snap mode , 转折 To vertex and segment 。这个选项可以使相近的转折点与线段黏在一起。 把 Default snapping toleranceSearch radius for vertex edits 设成以像素为单位, 而非以地图单位为单位,这样在不同的缩放尺度下,自动接合的距离会保持一样。接着你可以依照你萤幕的解析度选择适合的值, 最后按下 OK ,如 图 6.42

_images/7_xrz.png

图 6.42 Digitizing界面设置

4. 现在可以开始数字化了。我们先来做个道路的图层,然后把公园附近的道路数字化到此图层上。 选择 Layer ‣ Create Layer ‣ New Spatialite Layer...New Shapefile Layer... , 看你喜欢哪个都可以。Spatialite 是和 ESRI 的地理资料库(包含 Shapefile)格式相似的开放资料库,Spatialite 资料库特点是 可以在一个文件内塞进不同种类的空间资料(点、线、多边形)与其他种类的图层,所以在复制或移动文件时, 不用像shapefiles那样每次都得移动一堆文件。在本节中,我们会建立数个多边形和一个线图层,所以"Spatialite"会比较适合我们。 你当然也可以在读取"Spatialite"文件后,另存成 shapefile 或其他类型的文件格式,如 图 6.43

_images/8_xpy.png

图 6.43 创建图层

5. 在 New Spatialite Layer 视窗中,按下 ... 钮,把图层存成新的名为"nztopo.sqlite"的资料库。 在 Layer name 中输入 "Roads" 选择 "Line" 在:guilabel:Geometry Type 中我们的地形底图 使用的"CRS"是 "EPSG:2193 - NZGD 2000" ,所以这边就选个跟底图一样的 CRS 即可。 勾选 Create an autoincrementing primary key 。这个功能会在属性表格中新增一个叫做"pkuid"的栏位, 程序会自动为每个图征指定独特的数值到此栏位中。因为这是个道路图层,我们应还需要 2 个基本属性:道路名和道路种类。 所以请在 New Field 栏位中加入"Name"然后按下加入 Add to attribute list , 如 图 6.44

_images/9_xbv.png

图 6.44 New Spatialite Layer设置

6. 以同样的方法建立新属性 "Class" 类别选 Text data 。建立好后按下 OK , 如 图 6.45

_images/10_x61.png

图 6.45 建立新属性Class

  1. 图层载入后,按一下 Toggle Editing 状态以进入图层编辑模式,如 图 6.46

_images/11_xcw.png

图 6.46 编辑图层

8. 按下 Add Line feature 按钮,然后在地图上按滑鼠,就可以加入线段端点。沿着道路加入新的端点, 直到全部的路都绕过后,按下右键结束要素的编辑,如 图 6.47 。 滑动滑鼠的滚轮键可以用来放大或缩小地图,按住滚轮键则可以拖曳地图。

_images/12_xep.png

图 6.47 编辑图层

9. 按下右键之后,会有一个视窗弹出,叫 Feature Attributes ,你可以在其中为刚刚创造的要素输入属性。 因为"pkuid"已经被自动指定了,所以只有它是不能手动设定的。输入在地图中的道路名字,以及道路的种类, 当然你也可以都不输入。完成后,按下 OK ,如 图 6.48

_images/13_xsd.png

图 6.48 输入属性

10. 线图层的预设样式是非常细的线,我们要把它改粗一点,以方便在地图上浏览。在"Roads"图层上按右键 选择 Properties ,如 图 6.49

_images/14_x2m.png

图 6.49 修改线

11. 在 Layer Properties 视窗中切换到 Style 分页,再从样式库中选择一个较粗的样式, 可以是 topo main road ,最后按下 OK ,如 图 6.50

_images/15_x9i.png

图 6.50 Properties界面线设置

12. 现在就很容易在地图上找到此要素了。按下 Save Layer Edits ,就可以把刚才的改动写到文件内, 如 图 6.51

_images/16_xyc.png

图 6.51 保存编辑图征

13. 在把其他道路数字化时,道路可能会出现重叠和断开,我们要开启 "Snapping" 工具来避免一些道路重叠和断开。 在QGIS工具条单击右键,或者 View --> Toolbars --> Snapping Options... ,如 图 6.52

_images/17_x2q.png

图 6.52 Snapping工具

  1. QGIS面的会出现一行工具栏,选择 Open Snapping Options... 会出现如 图 6.53

_images/18_xny.png

图 6.53 Open Snapping Options...工具

15. 接下来就继续使用 Add feature 钮,加入其他环绕公园的道路。记得每一次加入新要素后, 都要按下 Save Edits 才会储存起来。有一个称为"Node Tool"的功能也非常的方便,我们就来试试看。 请按下 Vertex Tool 钮,如 图 6.54

_images/19_xmz.png

图 6.54 Vertex Tool工具

16. 节点工具启用后,点选任一个图征,节点就会显现出来。点选任一节点后,它的颜色会改变,以表示这个节点已经被选取了, 这时就可以使用滑鼠拖曳此节点。此操作对修改已有的图层非常的方便,如果我们要删掉选取的节点,只要按下 Delete 键 即可。(Mac 上是 Option+Delete 键),如 图 6.55

_images/20_xv7.png

图 6.55 删除节点

  1. 所有的道路都数字化了之后,按一下 Toggle Editing 关闭图层编辑模式,如 图 6.56

_images/21_x5z.png

图 6.56 关闭图层编辑

18.随着QGIS版本的更新对于识别更智能化,为了避免出现后期建筑不能数字化,所以这里我们先做建筑,再做公园多边形图层。 接下来我们选择 Layer ‣ Create Layer ‣ New Spatialite Layer... ,建立一个新的多边形图层, 称为 "Buildings" , Geometry type 选择 "MultiPolygon" ,如 图 6.57

_images/22_x2u.png

图 6.57 创建新多边形

19."Buildings"图层加入后,关掉"Roads"图层,让底下的地图显现出来,然后选择"Buildings"图层, 再按下 Toggle Editing ,如 图 6.58

_images/23_xdl.png

图 6.58 编辑图层

20. 建筑的数字化通常是件繁琐的任务,而且有个困难点是要手动设定垂直的节点以形成长方形的多边形。这里我们要使用一个 称为"Rectangles Ovals Digitizing"的附加元件来帮助我们数字化。当"Rectangles Ovals Digitizing"安装完成后, 会看到一个新的工具列出现在画布上方区块,如 图 6.59

_images/24_xto.png

图 6.59 Rectangles Ovals Digitizing工具

21. 放大到有建筑的地方,然后按下 Add Rectangle by Extent 钮,然后用滑鼠按下并拖拽出长方形。 用类似的方法完成其余的建筑多边形,如 图 6.60

_images/25_xic.png

图 6.60 编辑多边形

22. 你会看到有些建筑不是垂直的,这些形状大概是倾斜成某种角度的多边形。按下 Rectangle from center , 如 图 6.61

_images/26_xm8.png

图 6.61 Rectangle from center工具

  1. 在建筑物的中心按一下,用滑鼠拖曳出一个垂直的长方形,如 图 6.62

_images/27_xqv.png

图 6.62 编辑图层

24.接下来我们要旋转此长方形,让它符合地图上的形状。旋转工具是放在"Advanced Digitizing"工具栏中, 在工具栏上空白的地方按下右键,然后勾选 Advanced Digitizing ,就可以让它呈现在工具栏上, 如 图 6.63

_images/28_x39.png

图 6.63 Advanced Digitizing工具

  1. 按下 Rotate Feature(s) 钮,如 图 6.64

_images/29_xa3.png

图 6.64 Rotate Feature(s)工具

26. 使用 Select Single feature 工具选择你要旋转的要素。在 Rotate Feature(s) 工具 启用的状况下,被选取的要素中心会出现一个准心,点选此准心然后移动滑鼠,就会看到旋转图征的预览结果。 在适当的角度按下滑鼠按钮,让多边形对齐房屋的底座边界,如 图 6.65

_images/30_x50.png

图 6.65 旋转图征

27.接下来我们要制作的是公园边界的多边形图层。选择 Layer ‣ Create Layer ‣ New Spatialite Layer... , 资料库要从下拉选单中选择刚才的"nztopo.sqlite" ,新的图层命名为"Parks"。 选择"Geometry type"下拉单中的 Polygon 。另外,新增一个称为"Name"的属性, 最后按下 OK ,如 图 6.66

_images/31_xd8.png

图 6.66 创建新图层

28. 按下 Toggle Editing --> Add Polygon feature 钮,然后在地图上点出多边形的顶点。这些顶点圈住的多边形, 就是以数字化方式呈现的公园边界。在用右键完成多边形之前,请再次确认你有开启自动接合选项,这样公园多边形和道路的线条 中间就不会有任何空隙,如 图 6.67

_images/32_xcm.png

图 6.67 编辑图层

  1. 在弹出的 Attributes 视窗中,输入公园名字,如 图 6.68

_images/33_xyv.png

图 6.68 Attributes视窗

30. 我们还可以为多边形图层选择一个很有用的设定,称为"Avoid intersections of new polygons",启动 "Snapping Toolbar" 工具, 选择 Advanced Configuration ‣ Edit Advanced Configuration 。如 图 6.69

_images/34_x8c.png

图 6.69 Snapping Toolbar工具

31.接着使用加入 Add feature 再加入另一个多边形。当"Avoid intersections of new polygons"功能启用时, 我们就可以快速地创造另一个要素,不用担心它跟先前的要素的接合点是否在正确的位置上,如 图 6.70

_images/35_xj5.png

图 6.70 编辑图层

32. 按下右键完成此多边形,然后输入属性的内容。新的多边形会与邻接的多边形完美的接在一起! 这功能对比较复杂的边界非常有用,我们在设定边界时可以不需要非常的精确,就可以制作已校正的多边形。 最后,再次按下 Toggle Editing ,结束"Parks"图层的编辑,如 图 6.71

_images/36_xiz.png

图 6.71 结束编辑

33. 储存编辑的结果,全部完成后再次按下 Toggle Editing 现在你可以拖拽调整图层的显示顺序, 如 图 6.72

_images/37_xn3.png

图 6.72 调整显示顺序

34. 数字化的工作到此告一段落,接下来你可以在图层属性中调整标签与样式,利用你刚刚创造的资料制作一幅好看的地图, 如 图 6.73

_images/38_xz8.png

图 6.73 数字化结果