Skip to content


Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Tutorial: Tracing Historical Streets with QGIS

New York's streets have changed a lot over time: new street grids were projected over old farm roads, housing projects were constructed, often spanning multiple city blocks, and the construction of highways, too, drastically changed the street layout of the city's neighborhoods.

Some examples:

Yet, it's very important having data about the changing names and shapes of New York City's streets; we need this data to to georeference city directories, to make maps of historical photos, and to allow patrons to geographically browse the Library's Digital Collections.


Historical street data are an important part of NYPL's NYC Space/Time Directory project. By combining data from Building Inspector, NYPL's website for crowdsourced extraction of historical building footprints and addresses, with the locations and names of historical streets, it is possible to create search tools and visualizations for historical addresses. To see how this is done in detail, see

The latest historical street data can be found here: We have started tracing some of the maps ourselves, but there are many maps and atlases with which we need your help!

How to contribute:

To keep track of who is doing what, please send an email to before you start (or open an issue in the original GitHub repository.

For more information about contributing to the NYC Space/Time Directory, see (coming soon!).

Getting Ready

First, download QGIS, and install the application by following their instructions. If all goes well, start QGIS, it should look a little like this:

Keyboard shortcuts

By default, QGIS does not have very convenient keyboard shortcuts for creating and editing polygonal lines. This repository contains a QGIS shortcut definitions file: qgis-shortcuts.xml. Download this file, choose Settings ⟶ Configure Shortcuts..., click Load... and select the shortcut XML file.

Keyboard shortcuts:

  • E: toggle editing mode on/off for the selected layer (prompts for save when toggling off)
  • L: draw a line (line type layer, editing mode on, right-click to stop drawing)
  • N: move a line node (connected nodes will move together)
  • M: move an entire line (connected nodes do not move together)
  • I: identify a line (opens a window with a form to edit line data)
  • S: select a line
  • D: delete selected line (identify does not select)
  • Z: zoom tool
  • Delete (Fn+Delete on Mac) deletes selected points
  • Spacebar: pan map tool
  • To finish editing a line, right click anywhere in the map

This section describes creating a new street trace project in QGIS.

Setting up

  • Create a new QGIS project
  • Make sure to set your project's coordinate system to WGS 84 - EPSG:4326 by clicking Project ⟶ Project Properties... ⟶ CRS (or by clicking the projection in the status bar):

  • Add the historical map as base layer:
    • Select Layer ⟶ Add Layer ⟶ Add WMS/WMTS Layer...
    • Copy the WMS Capabilties URL from Map Warper's Export tab
    • In the Add Layer dialog, click New, choose a name and paste the WMS URL

  • Click Connect, select the correct layer, and set the tile size to 255x256 PNG.
  • Click Add, and then Close

  • To view the layer you just added, do the following:
    • (You cannot use Zoom to Layer, Map Warper WMS layers do not specify their bounding box)
    • Set scale to 1:50,000
    • Find a coordinate that should be somewhere on the map, for example using (make sure to reverse the coordinates, first longitude, then latitude)
    • Enter this coordinate, for example: -73.93001, 40.75101 (somewhere in Queens)
    • Ignore Error downloading errors if you encounter them, this just means that Map Warper does not have map data outside of the map's region

  • Now, add create a new Shapefile Layer:
    • Select Layer ⟶ Create Layer ⟶ New Shapefile Layer...
    • Type should be Line
    • Remove the id column, and add a field of type Text data with the name name. This field will contain the street name.

  • Afterwards, QGIS will ask to save the Shapefile on disk.
  • Pick a place, choose a name - for example <layerId>/<layerId>.shp (in this case, 1162/1162.shp)

  • Set snapping options: Settings ⟶ Snapping Options...

  • Right click the new Shapefile layer to go to the Layer Properties window
  • Set the line width and color of the layer

  • Enable labels, and choose the name field

  • Change label placement

  • Add a buffer around the labels for better visibility


  • Make sure snapping is enabled: Settings ⟶ Snapping Options...

  • Start editing the street layer: Layer ⟶ Toggle Editing (or press E)
  • Add a new street: Edit ⟶ Add Feature (or press L)
  • Add a vertex on each cross street (we need those vertices to later snap vertices from other streets to)

  • Finish the street by right clicking on the map, you will be asked to enter the street's name (you can later easily edit the street and add or remove vertices)
  • Enter the street name using the correct letter case, without abbreviations:
    • ISABELLA PL. ⟶ Isabella Place
    • MACDOUGAL STREET ⟶ MacDougal Street
    • WOOLSEY ⟶ Woolsey Street

  • To save the edited Shapefile, click Toggle Editing again (or press E), and save the changed to the Shapefile

Improving existing data

Setting up

git clone<your-github-name>/nyc-historical-streets
  • Open the map or atlas's QGIS project (e.g. 1162/trace-1162.qgs)
  • Zoom to the extent of the street data by right-clicking on the layer in the Layers Panel, and clicking Zoom to Layer:


See the Tracing paragraph in the Starting a new project section.


Tutorial: Tracing Historical Streets with QGIS








No releases published


No packages published