Workshop Get ready to use IIIF and Allmaps, Sep 14 2026, TU Delft Library.
NB: This guide will be published as part of the Allmaps documentation.
This guide describes the process of georeferencing a IIIF resource in Allmaps Editor. It presumes you already have a URL to a IIIF Resource that can be opened in Allmaps. At the bottom of this page, you'll find a list of repositories supporting IIIF.
Georeferencing an image means relating specific pixels of the image [x, y] to corresponding geographic coordinates [longitude, latitude]. A pair of corresponding points is called a Ground Control Point or GCP. With at least 2 or 3 GCPs, correspondences can be computed between any other pixel in the image and the world map. If all pixels are transformed, it is possible to render the original image on top of a world map. Depending on the algorithm used, the image is warped in a different way to suite the given set of GCPs as well as possible.
Georeferencing is not a new thing. Classical GIS tools like QGIS and ArcGIS have allowed this for a long time. Traditionally, this means saving a warped copy of the original image as a GeoTIFF, or generating an accompanying ‘world’ file. In both cases, the original raster image and its copies needed to be stored on the user’s device. This creates a lot of extra data and does not allow for easy updates to the georeferencing data.
Allmaps takes a different approach: it works with IIIF resources which are hosted primarily on institutional servers rather than personal devices. The only thing Allmaps requires is a so-called Georeference Annotation, a light-weight standardized document that includes all the information needed to georeference a resource. Allmaps automatically keeps a copy for all maps georeferenced in Allmaps Editor, thereby creating a collective open dataset of georeferenced maps around the world. No derivatives are stored: the original image is warped in the browser. This is very fast and can immediately reflect changes to the source data.
Supported resources
Allmaps Editor currently supports the following IIIF resources:
- IIIF Manifest (version 2 or 3). A IIIF resource containing canvases with painting annotations.
- IIIF Collection (version 2 or 3). This is a special type of manifest containing references to other IIIF Collections or Manifests.
- IIIF Image (version 1, 2 or 3). When loading a IIIF Image URL directly you might need to append
/info.jsonto the URL. Please note that no metadata will be available when loading images.- Georeference Annotation URLs served by Allmaps. These start with
https://annotations.allmaps.org.
Dealing with error messages
Sometimes opening a valid IIIF Manifest URL might still throw an error. This could be caused by various issues, such as:
- The IIIF Manifest is not (yet) supported by Allmaps. For example, a Manifest containing a
choiceproperty will not be loaded.- The IIIF Manifest is invalid. In this case, the parser will indicate which properties fail to follow the IIIF specifications.
- The IIIF Manifest cannot be loaded due to CORS restrictions (i.e. the server hosting the Manifest has not allowed other domains, in this case Allmaps Editor, to load the resource). Some manifests that fail to load in Allmaps might still load in other IIIF Viewers.
If you think Allmaps should support the Manifest, please file an issue here, or contact us by email or through the IIIF Slack. If you think the loaded Manifest is incorrect, contact the content provider and aks them to improve their services. If the error message is unclear, contact us for a more detailed explanation.
Which mask?
Some maps have clear frames, others not so much. Try to include as much cartographic information as possible within the boundaries of the mask, including labels, but remove non-cartographic elements such as ornamentation, rims or legends. In the end, there is no "correct" mask and where you draw it depends on your interests and how you want to use the map. Fortunately, you can always go back and change the mask in Allmaps, or even create multiple masks for the same image, in case it contains additional inset maps, for example.
esc.Your data in Allmaps
Edits in Allmaps Editor are automatically stored in the Allmaps database. They are licensed CC0 and published daily as an open dataset on the Allmaps homepage.
Other users opening the same map in Allmaps Editor will see the same edits, and will be able to alter and (hopefully!) improve them. Although Allmaps already stores individual edits in the database, you cannot yet easily pin a version or restore a previous version (undo). These functionalities will be added in future versions of Allmaps Editor.
It is therefore wise to save a copy of your data yourself if you want to keep this specific version.
Existing work
If you already see a mask, someone else has previously georeferenced the map. Please check their work and consider improving it. You can also select another map to georeference.
navPlace
If the loaded IIIF Manifest contains a navPlace property, this will be used to initiate the map view.
crtl and dragging the respective views.space to toggle between image and map. In the menu at the bottom center you can choose to show only the current map, all maps of the current image or all maps in the current resource (which could have multiple images).Transformation algorithms
Polynomial uses a homogenous transformation to fit the image on the map (by moving, scaling, rotating and skewing it). This means that the control points might not be rendered in their exact geographical position. Helmert does the same without skewing the image. Thin plate spline respects the location of each control point and will transform the map between those points. This can result in a more distorted image.
Georeference Annotation
This JSON-LD document contains one or more Georeference Annotations. These conform to the specifications of the Georeference Extension, an official extension to the IIIF Presentation API and contain the following parts:
- A reference to the IIIF Resource that has been annotated under target > source.
- The mask that indicates the location of the map under target > selector.
- The control points and chosen transformation algorithm under body.
Multiple annotations will be exported as an Annotation Page, which contains a list of Georeference Annotations.
Allmaps plans to release a tool for keeping track of your georeference maps and managing crowd-sourcing projects. Until this becomes available it's a good idea to keep track of all the images you georeferenced and the georeference annotations they resulted in, especially when working with groups. This could be for example a sheet with the following columns:
detektIIIF3 is a browser extension for Chrome that will indicate if a IIIF URL is available for the currently opened web page. If this is the case, it will list those URLs and allow you to copy them. This is a great way of finding IIIF resources and opening them in Allmaps: URLs copied from the Manifests, Images and Collections tabs can be pasted in Allmaps Editor and Viewer.
In the options of the plugin you can also add the following patterns under Manifest Viewers for opening resources in Allmaps directly:
| Label | URL |
|---|---|
| Allmaps Viewer | https://viewer.allmaps.org/?url=%%%URI%%% |
| Allmaps Editor | https://editor.allmaps.org/images?url=%%%URI%%% |
Below is a list of organizations and repositories supporting IIIF. Trailing emojis 🌱 and 🚀 respectively indicate Allmaps Supporters and Innovators as part of the Allmaps-IIIF Partnership.
The following repositories support IIIF and can be used to publish your own images:
Datasets in the 4TU data repository can be accessed through the IIIF APIs. You can find the link to the IIIF Manifest under the interoperability header in the right side bar. For example:
| Dataset URL | IIIF Presentation API endpoint |
|---|---|
https://data.4tu.nl/datasets/8289a903-7ccf-401b-af66-f5b3c9abe4b6/1 |
https://data.4tu.nl/iiif/v3/8289a903-7ccf-401b-af66-f5b3c9abe4b6/1/manifest |
Individual Image API endpoints are based on the asset UUIDs:
| File URL | IIIF Image API endpoint |
|---|---|
https://data.4tu.nl/file/8289a903-7ccf-401b-af66-f5b3c9abe4b6/24bcf6b4-c5d5-4e3c-9cc7-3af30607481a |
https://data.4tu.nl/iiif/v3/8289a903-7ccf-401b-af66-f5b3c9abe4b6/24bcf6b4-c5d5-4e3c-9cc7-3af30607481a |
For draft datasets, Presentation API endpoints can be accessed as follows; but only after login:
https://data.4tu.nl/iiif/v3/[uuid]/draft/manifest
The response could be saved in e.g. a GitHub gist to make it available on the internet without authentication.