Vector-border Technique for Reprojecting Rasters

Vector-border Technique for Reprojecting Rasters

Summary: This technique allows a user to bring scanned maps and other rasters from a variety of projections and coordinate systems into a common reference system. The idea is that a vector file can be transformed more easily than a raster file, so a vector border of a raster map is transformed (in lieu of the raster itself), and then the raster is re-georeferenced to the new vector position.
This example is designed around ArcGIS 8, but it is applicable to most GIS systems. I used it to bring scanned historical maps from a variety of sources into the common decimal Latitude / Longitude coordinate system, WGS84 datum.

Update with ArcGIS 9.2: ESRI re-wrote the raster projection algorithms for ArcGIS 9, and with v9.2 a batch command was added to the Project Raster toolbox. See this hint about building up long batch commands.

I. SET UP
Make sure your map scan (or other data) is in a format that can be georeferenced and that you know with confidence the projection / coordinate system of the original data.

In ArcMap the Georeferencing toolbar allows you to georeference a number of raster formats including .TIF, .JPG, .IMG , .SID and also GRID format. When the file is georeferenced and 'Update Georeferencing' is clicked, a World File will be created. A World File is a text-file with the transformation information. It has the same filename as the source file but it has a suffix made up of the first and third letter of the originals suffix, plus a "W". So a JPG file's World File will be a .JGW. See ArcGIS 9 help file on World Files.

Set the Coordinate System / Projection of the ArcMap layer to those of the original SOURCE data. In the case of a scanned paper map, set it to whatever is printed on the margins of the map. Do NOT set it to what you wish it to be. That comes later.

II. GEOREFERENCE MAP
Use the Georeferencing Tool to georeference the source data. I usually start by viewing the whole image and then zooming in on the top left corner.

  • Click a known point there (a Lat/Long or UTM intersection). Right-click to enter exact X, Y values.
  • Click the "Return to previous View" button so I'm back to the whole image.
  • Zoom in on the lower-right corner and georeference that one. That way the image is at least in the ball park after only 2 points.

In each case left-click on the known intersection, then right-click to type in the "known" X and Y values for that point. Repeat this process at least four times (the four corners), and preferably more. Typically I do the four corners and at least 1 in the center of a source map. Some commercial georeferencing services say that they georeference nine points distributed across the map. Check your values as you go along before clicking 'Update Georeferencing' by looking at them in the Coordinate values table.

If Lat/Long coordinates are available on the source map then I use these. UTMs are also versatile, and sometimes the UTM grid is finer for more accurate georeferencing. If your Lat/Longs are in Degrees/Minutes/Seconds be aware that many scientific calculators (including the Windows Calculator) has a "DMS" button that converts from Decimal Degrees to D/M/S. The INV function allows you to do the inverse from DMS to DD, which is the most common use in my experience (since ArcInfo uses DD).

When you finish entering your Georeferencing points click "Update Georeferencing". This will write out a World File. You do not need to "Rectify" the image to write in the georeferencing info. Rectifying in ArcMap is much more serious, it will actually re-rasterize the data.

III. TRANSFORMING
Once you've got the source map georeferenced into ArcMap you can display it in a number of different coordinate systems / projections thanks to the "On the fly" reprojection feature introduced with ArcGIS 8.

However if the maps are based on a different datum, or you'd just like to have all your sources in a single coordinate system for consistency's sake, you can re-georeference a raster to a different coordinate system manually. The problem is that ArcGIS 8 can reproject Vectors and GRID files, but not rasters like IMG, JPG, or TIF.

A simple alternative method for reprojecting raster scans is as follows: You can transform a shapefile as a proxy for the raster, and that shapefile as a guide to re-georeferencing the scanned raster image.

Create a new polygon Shapefile in the reference system that you're coming from (the OLD one you'd like to get out of).

Draw a box on the georeferenced raster, perhaps on the border of the map. For greater accuracy, draw several boxes or trace a few more vectors into the ShapeFile. I've found the straight-line borders of the map (Lat/Long margins on some maps) are useful because you can later use this box to clip the extent

Then use the "Toolbox>Data Management> rojections> Feature>Project" function to reproject the traced vectors from whatever system you're using to the new system. If ArcToolbox doesn't know what the transformation algorithm is you can add the values yourself. A number of websites have conversion values to get various maps systems around the world into WGS84 UTM. A very useful website for these transformation values is Peter Dana's Geographer's Craft website. Although less readable, the actual NIMA technical specification of WGS84 is available as defined originally by the US military complete with transformations from local geodetic systems. See this post where I describe in more detail how to locate the proper transformation for regions of South America.


Once your Shapefile has been reprojected into the desired destination coordinate system in ArcToolbox then start a new ArcMap file and open that transformed Shapefile in there first. You also need to get ArcGIS to forget about the fact that the Raster was previously georeferenced. Consider storing a copy of your georeferenced data in the old system in a separate folder. You can use ArcCatalog to Clear the Coordinate System entry (right click to Properties on the Raster in ArcCatalog). The World File gets erased.

In ArcMap bring the un-georeferenced Raster in with the new Shapefile and re-georeference the Raster to the new Shapefile. Make a note in the Metadata, or somewhere, to the effect that the map is NOT georeferenced to the Datum / Coordinate System that is printed on the scanned map.

I realize that this is a sloppy workaround compared to the affine transformation algorithms used with in real georeferencing. However, it is a fairly fast method for bringing various maps from South America that use the PSAD1956 datum into the modern DD WGS84 system. This has allow it to mesh well with GPS and satellite imagery data I acquired from other sources.
GPS Datum Note:
GPS receivers will commonly display and export vector data to a variety of datum /
coordinate systems. This is very useful in the field when the paper map you are referencing uses some system other than WGS84. However, the GPS system uses WGS84 internally. Any other datum is a transformation. Incidentally, the NAD83 (North America) and the WGS84 datum are almost identical but they are now over a meter apart and the difference is growing.

ArcInfo Note:
ESRI products use decimal Lat/Long as their internal referencing system. Data that is stored as unprojected decimal Lat/Long with WGS84 datum is in the native ArcInfo format, and is most easily reprojected or transformed into other systems.

I have been bringing all my data into WGS 84 and decimal Lat/Long (or sometimes UTM for extremely localized data), so that it can be integrated with larger datasets in the future.

Be aware that with the ArcMap "reproject on the fly" feature data with compatible reference systems (i.e., the same datum) will be displayed together as if they're in the same coordinate system and projection without any warning to the user.
This is a very nice feature, but it makes users slightly less aware of the underlying organization of their data sets. Check the "Source coordinate system" of a given data set when in doubt.

Note: 25 Feb 2003