Digitizing Map Data

Warning

A new version of this tutorial is available at Digitizing Map Data (QGIS3)

Digitizing is one of the most common tasks that a GIS Specialist has to do. Often a large amount of GIS time is spent in digitizing raster data to create vector layers that you use in your analysis. QGIS has powerful on-screen digitizing and editing capabilities that we will explore in this tutorial.

Overview of the task

We will use a raster topographic map and create several vector layers representing features around a park.

Other skills you will learn

  • Building pyramids for large raster datasets to speed up zoom and pan operations.

  • Working with a Spatialite database.

Get the data

Land Information New Zealand (LINZ) provides raster topographic maps at 1:50,000 scale for the New Zealand mainland and Chatham Islands.

Download the GeoTIFF Image file from the Christchurch Topo50 map download page.

For convenience, you may directly download a copy of the dataset from the link below:

BX24_GeoTifv1-02-clip.tif

Data Source [LINZ]

Procedure

  1. Go to Layer ‣ Add Raster Layer. Locate the downloaded BX24_GeoTifv1-02.tif and click Open.

../_images/1190.png
  1. This is a large raster file and you may notice that when you zoom or pan around the map, the map takes a little time to render the image. QGIS offers a simple solution to make rasters load much faster by using Image Pyramids. QGIS creates pre-rendered tiles at different resolutions and these are presented to you instead of the full raster. This makes map navigation snappy and responsive. Right-click the BX24_GeoTifv1-02 layer and choose Properties.

../_images/2154.png
  1. Choose the Pyramids tab. Hold the Ctrl key and select all the resolutios offered in the Resolutions panel. Leave other options to defaults and click Build pyramids. Once the process finishes, click OK.

../_images/394.png
  1. Back in the main QGIS window, use the Zoom tool to locate Hagley Park area in Christchurch. This is the park that we will be digitizing.

../_images/460.png
  1. Before we start, we need to set default Digitizing Options. Go to Settings ‣ Options….

../_images/553.png
  1. Select the Digitizing tab in the Options dialog. Set the Default snap mode to To vertex and segment. This will allow you to snap to the nearest vertex or line segment. I also prefer to set the Default snapping tolerance and Search radius for vertex edits in pixels instead of map units. This will ensure that the snapping distance remains constant regardless of zoom level. Depending on your computer screen resolution, you may choose an appropriate value. Click OK.

../_images/651.png
  1. Now we are ready to start digitizing. We will first create a roads layer and digitize the roads around the park area. Select Layer ‣ New ‣ New Spatialite Layer…. You may also choose to create a New Shapefile Layer… instead if you prefer. Spatialite is an open database format similar to ESRI’s geodatabase format. Spatialite database is contained within a single file on your hard drive and can contain diferent types of spatial (point, line, polygon) as well as non-spatial layers. This makes is much easier to move it around instead of a bunch of shapefiles. In this tutorial, we are creating a couple of polygon layers and a line layer, so a Spatialite database will be better suited. You can always load a spatialite layer and save it as a shapefile or any other format you want.

../_images/751.png
  1. In the New Spatialite Layer dialog, click the button and save a new spatialite database named nztopo.sqlite. Choose the Layer name as Roads and select Line as the Type. The base topographic map is in the EPSG:2193 - NZGD 2000 CRS, so we can select the same for our roads layer. Check the Create an autoincrementing primary key box. This will create a field called pkuid in the attribute table and assign a unique numeric id automatically to each feature. When creating a GIS layer, you must decide on the attributes that each feature will have. Since this is a roads layer, we will have 2 basic attributes - Name and Class. Enter Name as the Name of the attribute in the New attribute section and click Add to attribute list.

../_images/850.png
  1. Similarly create a new attribute Class of the type Text data. Click OK.

../_images/951.png
  1. Once the layer is loaded, click the Toggle Editing button to put the layer in editing mode.

../_images/1058.png
  1. Click the Add feature button. Click on the map canvas to add a new vertex. Add new vertices along the road feature. Once you have digitized a road segment, right-click to end the feature.

Note

You can use the scroll wheel of the mouse to zoom in or out while digitizing. You can also hold the scroll button and move the mouse to pan around.

../_images/1191.png
  1. After you right-click to end the feature, you will get a pop-up dialog called Attributes. Here you can enter attributes of the newly created feature. Since the pkuid is an auto-incrementing field, you will not be able to enter a value manually. Leave it blank and enter the road name as it appears on the topo map. Optionally, assign a Road Class value as well. Click OK.

../_images/1260.png
  1. The default style of the new line layer is a thin line. Let’s change it so we can better see the digitized features on the canvas. Right click the Roads layer and select Properties.

../_images/1358.png
  1. Select the Style tab in the Layer Properties dialog. Choose a thicker line style such as Primary from the predefined styles. Click OK.

../_images/1454.png
  1. Now you will see the digitized road feature clearly. Click Save Layer Edits to commit the new feature to disk.

../_images/1548.png
  1. Before we digitize remaining roads, it is important to update some other settings that are important to create an error free layer. Go to Settings ‣ Snapping Options….

../_images/1645.png
  1. In the Snapping Options dialog, check the Enable topological editing. This option will ensure that the common boundaries are maintained correctly in polygon layers. Also check the Enable snapping on intersection which allows you to snap on an intersection of a background layer.

../_images/1743.png
  1. Now you can click Add feature button and digitize other roads around the park. Make sure to click Save Edits after you add a new feaure to save your work. A useful tool to help you with digitizing is the Node Tool. Click the Node Tool button.

../_images/1839.png
  1. Once the node tool is activated, click on any feature to show the vertices. Click on any vertex to select it. The vertex will change the color once it is selected. Now you can click and drag your mouse to move the vertex. This is useful when you want to make adjustments after the feature is created. You can also delete a selected vertex by clicking the Delete key. (Option+Delete on a mac)

../_images/1930.png
  1. Once you have finished digitizing all the roads, click the Toggle Editing button.

../_images/2026.png
  1. Now we will create a polygon layer representing the park boundaries. Go to Layer ‣ New ‣ New Spatialite Layer…. Select the nztopo.sqlite database from the dropdown list. Name the new layer as Parks. Select Polygon as the Type. Create a new attribute called Name. Click OK.

../_images/2155.png
  1. Click the Add feature button and click on the map canvas to add a polygon vertex. Digitize the polygon representing the park. Make sure you snap to the roads vertices so there are no gaps between the park polygons and road lines. Right-click to finish the polygon.

../_images/2227.png
  1. Enter the park name in the Attributes pop-up.

../_images/2324.png
  1. Polygon layers offer another very useful setting called Avoid intersections of new polygons. Go to Settings ‣ Snapping Options…. Check the box in the Avoid Int column in the row for the Parks layer. Click OK.

../_images/2424.png
  1. Now click on Add feature to add a polygon. With the Avoid intersections of new polygons, you will be able quickly digitize a new polygon without worrying about snapping exactly to the neighboring polygons.

../_images/2522.png
  1. Right-click to finish the polygon and enter the attributes. Magically the new polygon is shrunk and snapped exactly to the boundary of the neighboring polygons! This is very useful when digitizing complex boundaries where you need not be very precise and still have topologically correct polygon. Click Toggle Editing to finish editing the Parks layer.

../_images/2619.png
  1. Now it is time to digitize a buildings layer. Create a new polygon layer named Buildings by going to Layer ‣ New ‣ New Spatialite Layer.

../_images/2719.png
  1. Once the Buildings layer is added, turn off the Parks and Roads layer so the base topo map is visible. Select the Buildings layer and click Toggle Editing.

../_images/2619.png
  1. Digitizing buildings can be a cumbersome task. Also it is difficult to add vertices manually so that the edges are perpendicular and form a rectangle. We will use a plugin called Rectangles Ovals Digitizing to help with this task. See Using Plugins to see how to search and install plugins. Once the Rectangles Ovals Digitizing plugin is installed, you will see a new toolbar appear above the canvas.

../_images/2917.png
  1. Zoom to an area with the buildings and click Rectangle by Extent button. Click and drag the mouse to draw a perfect rectangle. Similarly, add remaining buildings.

../_images/3015.png
  1. You will notice that some buildings are not vertical. We will need to draw a rectangle at an angle to match the building footprint. Click the Rectangle from center.

../_images/3118.png
  1. Click at the center of the building and drag the mouse to draw a vertical rectangle.

../_images/3215.png
  1. We need to rotate this rectangle to match the image on the topo map. The rotate tool is available in the Advanced Digitizing toolbar. Right-click on an empty area on the toolbar section and enable the Advanced Digitizing toolbar.

../_images/3313.png
  1. Click the Rotate Feature(s) button.

../_images/3411.png
  1. Use the Select Single feature tool to select the polygon that you want to rotate. Once the Rotate Feature(s) tool is activated, you will see crosshairs at the center of the polygon. Click exactly on that crosshairs and drag the mouse while holding the left-click button. A preview of the rotated feature will appear. Let go of the mouse button when the polygon aligns with the building footprint.

../_images/3510.png
  1. Save the layer edits and click Toggle Editing once you finish digitizing all buildings. You can drag the layers to change their order of appearance.

../_images/3610.png
  1. The digitizing task is now complete. You can play with the styling and labelling options in layer properties to create a nice looking map from the data you created.

../_images/3710.png

If you want to give feedback or share your experience with this tutorial, please comment below. (requires GitHub account)