Overview
There is lots of paper maps that have useful information. Users should be able to upload non-georeferenced scanned images and rubbersheet them (place control points to correlate the data) so they are real data layers. These can then be used in maps by other GeoNode users.
Use Cases
1) Municipalities in Guatemala have only recently upgraded to modern GIS solutions with digital maps. There are lots of valuable historical cadastral maps with useful information, including building level details that could be quite useful to improve an exposure database. This tool would allow municipal employees to scan a useful map, upload it to their local GeoNode, and then use it as an overlay on their other layers. This could also be used as a basis for digitizing buildings, tracing the vectors, or using information on the map to fill out attributes. See the roadmap items on creating a new data layer, editing, and versioning.
2) The New York City Department of Transportation still uses a paper map form to keep their database of signs up to date. There are ideas to replace that with a mobile tool to gather up the information and input it directly. But switching over directly wouldn’t allow the new system to integrate with the old. Using the rubber sheeting tool a team could go through all the existing forms, scan them, and stitch them together in a layer so someone using the new tools can always see the old, already georeferenced for their purposes.
Specification

After uploading an image it appears as a raster layer in the layer tree and kicks into the georeferencing workflow or the user can initiate the process from the layer tree context menu to change previously rectified imagery. In either case, initiating the georeferencing workflow causes the layer pane to collapse and the image pane to appear/expand (preferably with drawer animations), presenting the user with a side-by-side view of the map and the image. Control points are added in pairs and populate the table beneath the image. Points can also be added manually via the table.
The multi-stage process should be made fairly explicit, with the lower portion of the image pane prompting the user to
Place control points on the reference map and target image. Place at least three points and try to have a number of points around the outer edges of the target image.
with a ‘Cancel’ and ‘Next’ option at the bottom. Clicking next or placing a first control point moves the workflow forward by displaying the Control Points table displayed above, with ‘Cancel’, ‘Preview’, and ‘Done’ as options.

If ‘Preview’ is clicked then the map, image, and control points are overlaid together in the map panel and the Control Points table is replaced by a user prompt reading
Review the georeferenced result.
with a ‘Go Back’ and ‘Done’ option at the bottom. Clicking on ‘Go Back’ or any control point returns to the Control Points table and highlights the appropriate row in the Control Point table.
Clicking Done closes the image pane altogether and removes the control points from the image and map. The user can return to the georeferencing options by selecting ‘Georeference’ from the context menu in the layer pane.

We could also expose various image options—cropping, rectification methods, and resampling methods.
See also the OpenGeo design proposal where this was mostly taken from, and the NYPL Map Rectifier.
Technical Details
(will link to feature specification and technical specification when they are complete)
There was work done on a Google Summer of Code project to get the core algorithms for this in GeoTools, see this email. If it’s not up to snuff then we could leverage GDAL. The rest is just GeoExt UI stuff and registering the resulting layer in GeoNode and in GeoServer for WMS/WFS access.
Estimated costs
Ballpark to be determined