How to map your own narratives?


Adam’s Wall (director Michael MacKenzie, 2008)

This tutorial is a step-by-step guide to help anyone map her own narrative through our AtlasCine application and share it with friends, family and colleagues (see examples here: http://atlascine3.classone-tech.com/index.html). A more detailed description of this application is also available in the following paper “How can we map stories? A cybercartographic application for narrative cartography” (2014) by S. Caquard and J.P Fiset.

This application has been developed using a range of software (Open Source and Proprietary), including Google Drive. If you don’t already have a Google account, you will need to create one to follow the tutorial.


The first step is to duplicate the database template in order to develop your own database:

              OPEN TEMPLATE HERE

    The template is currently stored in our account and you will only be able to edit if you copy into your Google  drive. From the File menu, select “Make a copy” and name it (e.g. “mystorymap”). This new spreadsheet is now saved in your Google Drive.


2. There are several sheets in this spreadsheet, see the tabs at the bottom of the screen. The two most important ones to start are “data_mention” and “data_location”; these includes all the places where your story unfolds, and each place will be materialized by a point on the map.

  1.  The size of this point will be defined by the column “time” (note: it is important to respect the format used for the time columns (HH:MM:SS). Although this column has been originally designed to enter film time, it can be used to enter story time (e.g. day 1 could be entered as 1:00:00; day 2 as 2:00:00, etc. or the page number of a book). It corresponds to the timing in the playback function of the map, so the more time you give, the more time the viewer has to see a particular section of your story.
  2. The color and opacity of the point will be defined by the column “type”.
  3. The geolocation of the point will be defined by placenames in the column “action”.

These placenames will be geolocalized based on the geographic coordinates entered in the sheet “data_location.” The map will then be drawn from these two sheets. A few locations are already entered as examples. Make sure to replace these names by the placenames related to your story, but MAKE SURE TO KEEP THE ORIGINAL STRUCTURE FOR THE DATA, and you should be able to properly map your own data.



In the sheet “data_location”, the time column represents the time associated to each event of your story (e.g. the beginning of a scene in a film; the time spent in each location in a story). In this template, the movie starts in the West Bank, Palestine and then moves to Park Mont-Royal, Montreal after 2:30 minutes.

The “action” column represents the location per se. Any location can be typed in. Later, their geographic coordinates will have to be found. There are two types of actions that can be entered in this column:

  • Static: this segment of the story unfolds in one defined location. This location is defined by a place name (e.g. a city name, an address, a park). Longer the action unfolds at this location, bigger is the point representing this segment.
  • Moving: Materialize the movement between two locations (e.g. the character walks from the “Park Mont-Royal” in Montreal to his house in “Outremont / Mile End”, see below). To represent a journey in the sheet, you must enter the tag _journey in the column “action” in a row below the starting point of the journey (in our example “Park Mont-Royal”) and then enter the tag _end in a row below the ending point of your journey (e.g. “Outremont / Mile end”). (Note: In our example the duration of the journey in the film is 46 seconds: from 5:44 to 6:30).


The last column, “type”, defines the style of the points representing the location on the map. In our example we have predefined 6 styles, but you could change their color, opacity, name, number, etc. You could also change their name add new types (etc.) as long as the names are exactly the same in the sheet “Cities”).




With this application you can differentiate places where the action unfolds (sheet “data_location”) from places that are simply mentioned. For instance, in story a character could mention a place where she would love to go. While mentioned places can be related to the location of the action, it can also refer to any kinds of places. For instance, in our example, “Darfur” and “Afghanistan” are mentioned during a demonstration that takes place in Montreal.

The sheet “data_mention” allows the mapping of such places.

In this sheet, the column “time” specifies the exact moment (e.g. time in the movie, page in a novel) when the place was mentioned. 

The column “mentioned” states the actual place. Later, we’ll add the geographic coordinates, so it can be displayed on the map. 

The column “type” is used to define the type of connection between the place where the action unfolds and the place mentioned. In our example we have predefined two types to differentiate places mentioned: the ones that are very general such as the name of a country or of a province (e.g. Canada, Quebec); the ones that are more specific, such as a city, a landmark, or an address. Note: You can add more types if you wish.

The sheet “data_mention” is then used by the application to draw a dotted line between the place where the action unfolds at time t (sheet “data_location”) and the place mentioned at the exact same time (sheet “data_mentioned”). In the example below “Montreal” is mentioned while the action is unfolding in “Park Mont-Royal” (min 2:40). Note: the style of this line can be changed easily.



When the spatial structure of a story is laid out from the two data sheets, we need to tell the application the geographic coordinates of all the locations. This is done from the cities” sheet.  By default, the column “city” should already be populated with the list of all unique locations that were typed in (ie the list will not allow duplicate entries), in the “data_location” and “data_mention” sheets (this is done automatically using the “geocode” tool in Google Sheets). If by mistake the formula has been erased or modified, you should copy the formula below in the cell A2 of the sheet “cities”, which essentially tells the sheet to list the information from both your “data_location” and “data_mention” sheets:

  1. img4

This sheet will be used by the application to place the locations on the map. Note: “_journey” and “_end” are not locations, but they appear as geocoded in the sheet. DO NOT REMOVE THEM. However, some places might not be geocoded automatically; this means that the spreadsheet doesn’t automatically translate a location into geographic coordinates. There are at least two ways to accomplish such task:

1. Use the geocode function. This uses a Google Script that should already be included in the spreadsheet. In the cell B2, type the following formula:


Then, from the small selection square at the bottom right of the cell, drag the selection down to apply the formula to all of the rows listing locations.


This uses Google’s geocoder tool. When the name of your location is not unique in the world, the geocoder can select the wrong coordinates, so it is important to get precise locations and to validate them on the map.

2. Use an online geocoding tool, such as ,http://mygeoposition.com// and http://geocoder.ca//. Search each location individually and paste the coordinates in the appropriate columns.

In both options however, remember that the application only recognizes the dot, and not the comma, as the decimals separator, so in the event that this parameter is modified, don’t forget to convert commas to dots.


The spreadsheet should be correctly formatted to be fed to the application. To check your map, the spreadsheet has to be public, which means that it can be accessed by third parties, if they have the document’s identification key.

From the file menu, select “Publish to the web…”

Make sure “All Sheets” is selected, that the box “Automatically republish” is checked and press “Start publishing”. Press Close.


The document’s identification key can be found in the document’s URL, after the key= parameter. For example, the template’s URL is 


They key, highlighted above, is found between the equal symbol (=) and the ampersand symbol (&). Copy it.

Open the map applicationMAP APPLICATION (http://atlascine3.classone-tech.com/index.html?module=). Your browser may prompt a few error windows. Press OK to close them. In the address bar, immediately after the equal symbol (=), paste the document’s identification key and hit Return. 

At the bottom-left, you’ll find a “Play” button that you can press to animate the map, based on the time structure entered at step 2 (Note: in the example, the action starts in Palestine so it takes a few seconds for the symbols to appear on the background map of Montreal).


Save the URL with the identification key for later use or to share it with friends and colleagues. No one has access to this key, except yourself and the people you share it with.

If you want your map to be public, you just need to click on Login (upper right corner). If you are not registered you can register (it takes a few seconds) and when you are login you just need to click on Other Stories and on Create a New Map (using your document’s identification key – see above). Once you have added your map, you can modify it, delete it, etc.


You can even create your own collection of maps. For instance, you are making several maps based on several books from the same author. You can create one map for each book and organize all these maps into a Table of Contents (TOC), like we did with the films in Montreal: http://atlascine3.classone-tech.com/index.html?toc=0Av_7a7fDOGkVdDI1UVZyR29UQ3dQdDczUV9lRDg5aXc

To do this you need to create a Google spreadsheet that will include your TOC (see example below), and more specifically the name of each map, its key and one map with a default value “1” (to define the map that will appear by default)


Once you have designed this TOC, you just need to publish it and add its key to the following address: http://atlascine3.classone-tech.com/index.html?toc=

After adding the TOC key, you should now see your own collection of maps. You can also share this link.


You can modify the map and change some symbology parameters with the two last sheets: “options” and “types”.

Sheet “Options”


  • Title: adds a title to your map, that will be displayed on the top-left of the map.
  • Initial bbox: defines the initial map extent. The first coordinates pair is the top-left corner, while the second is the bottom-right corner. The coordinates are separated by a comma.
  • City_Size_offset: defines the starting size of the symbols representing locations.
  • City_size_multiplier: defines the amount the symbols increase with time. The range is from 0 – 1.
  • Backgrounds: defines the different available backgrounds, from the map application.img1B

Sheet “Types”

tutorial image
Several options can be edited from this sheet, but only the most important ones will be discussed here.

  • Type: Refers to the type of location or mention used in the “data_location” and “data_mention” sheets.
  • Label: Refers to what will show up in the legend for each type. Number the items to list them in the desired order. You can use the label for “link” to write a few words about the map.
  • Color: In hexadecimal codes, this defines the color of the lines and markers.
  • Opacity: Sets a specific level of transparency to the symbols (0 = transparent; 1 = opaque).
  • Point_stroke_thickness: Defines the size of a location’s marker.
  • Line_thickness_offset: Defines the starting thickness of a line between two locations.
  • Line_thickness_mult_count: Defines how much the lines thicken when a link is repeated.
  • Line_dash_style: Specifies if a line is solid or dotted.

Every time you make changes in your spreadsheet you can check the results quickly on your map by refreshing it (click on the “reload” button of your browser).

We hope that this application will allow you to map your own stories in a meaningful way.

If you have any questions or comments, or want to share your stories with us, please feel free to email us!

Example: Mapping “Around the world in 80 days”

To give you a better sense of how you can map your own story, here is an example from the novel “Around the World in Eighty Days” (Le tour du monde en quatre-vingts jours) by Jules Verne (1873). This famous novel tells the story of Phileas Fogg and his valet Passepartout who travel around the world in 80 days (for more details on the plot chick here.)

In this example, we are going to map the first places visited in the story, as synthesized in this table:


Since the time is in days, we will have to make it fit the structure of the time data required for the application (hh:mm:ss). One way to do this is to enter one day as one minute (and consequently half a day as 30 seconds).

The data in your sheet “data_location” should look something like this:


Note: the type “Boat” and “Train” have been added in the sheet “Type” to be available in this sheet.
This table tells the following story: The action starts in London; after 2 days there is a journey by boat from London to Suez, and this journey lasts 7 days (2+7=9). The action then stops for half a day in Suez (09:30) and then a new journey starts by boat again and goes to Mumbai, etc..

The data in your sheet “data_mention” should look something like this:


Those are two places mentioned in the novel (while the characters were in Suez, as you can tell from the timing).

The data in your sheet “Type” could look like the following, if you want to differentiate “Boat” from “Train” as a types of transportation:


The data in your sheet “cities” should look like the following:


Note: if the last cells don’t have coordinates, make sure you expand the geocode formula to the last cell, as seen by the blue selection field above.

Also note: this function has a maximum amount of characters that it can compute. If your list of place names is longer you will need to re-code for the cells that exceed the maximum.
In other words: the formula is  =UNIQUE(TRANSPOSE(SPLIT(JOIN(“;”,data_location!B2:B,data_mention!B2:B),“;”))) – “B2:B” means that all entries in the b columns of both the location and mention tabs, ie the place name columns, will be included. Add a maximum row number and repeat the formula right below the last place name cell with the following cell number.
See example below:
At the bottom of the place name list, add:

Finally, the sheet “options” should look something like this:


If everything has been done properly, you could go back to your map, reload the page and you should obtain something like this:


This first result is correct, but some of the routes are not very accurate (e.g. a boat going through the Arabic peninsula is a bit unlikely…). You can improve the route by adding some intermediary places. For instance we are going to add “Marseille” between London and Suez, and “Berbera” between “Suez” and “Mumbai.”

The data in your sheet “data_location” should now look something like this:


The data in your sheet “cities” should now look something like this:


Your final map should now look more like this:


By further developing your map in ways such as improving symbols, adding new places, and clarifying the timeline, we hope we have provided you with tools to create more sophisticated and complex narrative maps to better tell your stories.