9

My background: experienced programmer, amateur historian, complete beginner to GIS (so I'm using QGIS). I did learn to use the QGIS georeferencer tool though.

The input: suppose I have an image like this Wikipedia: File:VoyagesOfRabbanBarSauma.jpg. Assume that it's a "naked" JPG file without any geographic metadata and the author cannot provide any such information. The input image is licensed under GNU FDL, which I'm happy to release my derivative works under.

The goal: import the path shown in the Wikipedia map into QGIS so I can change the projection, superimpose elevation, add labels for physical geography, etc.

The caveat: one workaround might just be to enter the lat/long of the locations in the map into a new GIS project. I don't want to go this route because I'd like to have a record of that particular author's estimate of the geographic information.

What I've tried: I have applied the QGIS Georeferencer to the raster JPG file with a bunch of points around the continents' edges. The alignment of points in the interior of the continent are so-so.

What I'd like to know: the distortions of this particular map are pretty noticeable around the northern edge of Eurasia, and it seems like it's a pretty standard projection. It seems to me that there ought to be an algorithmic way to identify the projection and projection parameters that generated this map, and recover an accurate non-interpolation conversion between image pixels and lat/long?

I see two questions on this:

  1. Identifying Coordinate System of Shapefile when Unknown?
  2. Unknown Coordinate System on old drawing

These seem to talk about a brute-force method involving GDAL or QGIS, and to a GIS-beginner, seem somewhat labor-intensive (basically georeference and fit them to known projections) but I'm willing to try them and see if I can automate them.

The instructions on both these GIS.SE are a bit higher than my experience allows, and any hints on how exactly to do this brute-force method would be very appreciated. E.g., question 2 above shows how to use gdaltransform to convert a list of coordinates into lat/long. Are the input coordinates x-y pixel locations?

3 Answers 3

7

As mentioned, your example map is Plate Carree, which in QGIS is WGS84/lat lon, EPSG:4326. It georeferences nicely in QGIS using the Helmert Linear method with just two points. In my case I used one point near to the top left of the image and another point near to the bottom right of the image. The lat/lon coordinates used for georeferencing were obtained from Google Earth. Remember that when georeferencing Latitude is "y" and Longitude is "x".

Just for fun, I then loaded the georeferenced raster into QGIS and quickly traced the route, saving it as a line shapefile. I then loaded a raster image from Natural Earth and overlaid this with the route (see the attached picture for a part of the resulting map).

Natural Earth raster images are georeferenced (to EPSG:4326), beautiful and free, you can get them from here:

Natural Earth

They are ideal for use as base maps for plotting historical data.

Added later:

I know next to nothing about world-scale mapping but I did note your comments about the obvious distortion in the original WGS84 lat/lon (EPSG:4326) map. QGIS has a good set of tools for reprojecting vector and raster data so (partly for my own self-education!) I thought I'd try and find a CRS that presented the map in a more "natural" way.

The attached picture shows a clipped Natural Earth raster transformed to a custom Albers equal-area projection. The vector data on the map was transformed from WGS84 lat/lon on-the-fly. Why Albers? Well, it seemed like a reasonable thing to try. Obviously, in a finished map one would clip the vector graticule (also courtesy of Natural Earth) to the image. Even so, I think the shapes on the map are reasonably naturalistic and that the map also highlights the fact that Bar Sauma's remarkable journey was made on a globe.

The parameters for the custom CRS were as follows:

+proj=aea +lat_1=22.0 +lat_2=56.0 +lat_0=20.0 +lon_0=55.0 +x_0=0 +y_0=0 +ellps=WGS84 +units=m +no_defs

Was this a reasonable projection to use? I honestly don't know.

Nick.

enter image description here

enter image description here

4
  • Nick, thank you so much, that's exactly how I wanted to see the journey! If I didn't know that the projection was Plate Carree, could I have had QGIS figure this out, like ArcGIS seems to do? There are oodles of maps like this on Wikipedia (example) where I'd like to visualize the geographic data on other projections and with different backgrounds (elevation, NDVI, climate), and it sounds like the first thing to do is figure out a naked raster's projection. Commented Jul 7, 2012 at 15:47
  • So far as I know, QGIS doesn't have the facility to calculate the projection of a map. In the case of the Bar Sauma map it was easy to guess that it was EPSG:4326 just by comparing the distortion at the top with that on other Plate Carree world maps. Regarding the Wikipedia Mongol Empire map, this doesn't appear to be either Plate Carree or world Mercator. I think that some of the people who make maps for Wikipedia use custom equirectangular lat/lon projections, like Plate Carree but not centred on Lat 0-deg, Lon 0-deg. It's possible that this map is one of these. I'll do some digging.
    – nhopton
    Commented Jul 7, 2012 at 17:24
  • Is the "brute force" technique that the two other StackExchange questions I linked to not amenable to QGIS? One of them seems to use GDAL with various guesses at the underlying projection, which ought to be scriptable from within QGIS? Thanks again! Commented Jul 7, 2012 at 18:33
  • The problem is that this method assumes that the image is already georeferenced, but to an unknown CRS (projection). The images that you'll be working with will probably be scanned from books or downloaded from places like Wikipedia and you'll have to georeference them yourself. QGIS has a method of georeferencing, thin plate spline (TPS), which allows a large number of control points to be used. The TPS method can be used to "pull" raster maps into shape and is very powerful, but it does assume that you have the coordinates for a fair number of control points. Nick.
    – nhopton
    Commented Jul 8, 2012 at 18:06
4

The map uses latitude and longitude as if they were Cartesian coordinates. This is a version of the equirectangular or "Plate Carree" projection. Thus all you have to do is shift and rescale the x and y coordinates to obtain longitude and latitude, respectively.

The georeferencing tool in ArcGIS 10.0 makes short work of creating links to estimate the transformation. Although it does not report the transformation, one can export the link table to R and estimate the coefficients there. Placing the center pixel in the upper left corner of the high-res version of the image at (0,0), the result is

latitude = 75.71992178 + 0.0427073 * row index
longitude = -18.86514764 + 0.04275506 * column index

The black country outlines of the reference layer (supplied by ESRI with past versions of ArcView) show how well the layers coincide after applying such a transformation. Root mean square errors are 6 - 7 km along each axis: about one pixel in the image, almost as good as one has a right to expect.

Georeferenced map

0
0

The map is likely to be diagrammatic, and the placement of the cities may not be perfect making them risky to use when georeferencing.

The best approach could be to capture the map by eye using an appropriate base within QGIS. It won't match the original perfectly, but the routes are likely to be indicative so you are unlikely to loose any accuracy.

1
  • Excellent points, thanks, I'll do as you advise. Is there an easy way to recover the image's projection and parameters? Commented Jul 4, 2012 at 23:27

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.