Tutorial: Georeferencing Topo Sheets, Topo Maps, Satellite Image or Scanned Maps in QGIS

Tutorial moved to  http://www.qgistutorials.com/en/docs/georeferencing_basics.html

Most GIS projects require georeferencing some raster data. In this tutorial I will discuss the concepts, strategies and tools within QGIS to achieve a high accuracy georeferencing.

Georeferencing is the process of assigning real-world coordinates to each pixel of the raster. Many times these coordinates are obtained by doing field surveys - collecting coordinates with a GPS device for few easily identifiable features in the image or map. In some cases, where you are looking to digitize scanned maps, you can obtain the coordinates from the markings on the map image itself. Using these sample coordinates or GCPs ( Ground Control Points ), the image is warped and made to fit within the chosen coordinate system. For advanced georeferencing using another georeferenced image or OpenStreetMap data, see this tutorial.

The data we will use for this tutorial comes from the excellent Hipkiss’s Scanned Old Maps. There is a vast collection of out-of-copyright scanned maps that one can use for research. For this tutorial, we will use a 1870 map of southen India and geo-reference it using Quantum GIS. Download this JPG image and save it on your hard-drive.
  • Georeferencing in QGIS is done via the ‘Georeferencer’ plugin. If you do not already have it, see this tutorial for finding and loading plugins in QGIS.
  • Open the plugin from Plugins → Georeferencer → Georeferencer. A new plugin window like below will pop-up. The plugin window is divided into 2 sections. The top section where the raster will be displayed and the bottom section where a table showing your GCPs will appear. If you wish, you may drag the GCP window and separate it from the top section. Now click on the ‘Open Raster’ button on top-left corner.
  • Browse to the JPG image of the scanned map and click Open. In the next screen, you will asked to choose the raster’s coordinate reference system (CRS). This is the projection of your control points. If you have collected the data using a GPS device, you would have the WGS84 CRS. If you are geo-referencing a scanned map like this, you can obtain the CRS information from the map itself.
  • Looking at our map image, the coordinates are in Lat/Long. There is no datum information given, so we have to assume an appropriate one. Since it is India and the map is quite old, we can bet the Everest 1830 datum would give us good results. Click OK.
  • You will see the image will be loaded on the top section. You can use the zoom/pan controls in the toolbar to learn more about the map.

  • To assign coordinates, we need to use the map grid on the image. If you zoom to bottom-left corner, you will see markings for 70° longitude and 5° latitude. So we can determine that the real-world coordinate at the intersection of these grid lines will be (70,5). Remember that X=longitude and Y=latitude. Now click on ‘Add Point’ button to add these coordinates. Once selected, click at the intersection of the 70° and 5° grid line.

  • In the pop-up window, enter the coordinates. Click OK.

  • You will notice the GCP table now has a row with details of your first GCP.

  • Similarly, take GCPs at all 4 corners of the image where you have grid intersections. The more GCPs you have the better. Once you are done, click on Settings → Transformation Settings.

  • In the Transformation settings dialog, you will have to choose multiple parameters. To keep things simple, choose following parameters. We are setting out ‘Target SRS’ as WGS84, so the resulting geotiff file will have a CRS of WGS84. Make sure you check the ‘Load in QGIS when done’ button at the bottom. Click OK.

  • Now click the ‘Start georeferencing’ button from the toolbar.

  • Once the process is complete, you will see the georeferenced geotiff image loaded in your QGIS canvas.

  • The georeferencing is now complete. But as always, I encourage you to always verify your work. How do we check if our georeferencing is accurate? In this case, load the country boundaries shapefile from the Natural Earth dataset and compare them. You will notice they match up pretty nicely. There is some error and it can be further imprived by taking more control points, changing transformation parameters and trying a different datum.Hope you are able to learn this and achieve a good georeferencing with your own data. Let me know in the comments how did it go.. Check out the new tutorial Advanced Georeferencing in QGIS using a Reference Layer