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.
- 1857 map of the Lower East Side
- Talman Street in Brooklyn, gone after the construction of the Brooklyn-Queens Expressway (today, there is no more Talman Street to be found in New York City)
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 https://github.com/bertspaan/tutorial-historical-addresses.
The latest historical street data can be found here: https://github.com/nypl-spacetime/nyc-historical-streets. 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:
- See https://github.com/nypl-spacetime/nyc-historical-streets for up-to-date list of maps and atlases
- Fork the repository!
- Use QGIS to make changes to a Shapefile
- Submit a pull request
To keep track of who is doing what, please send an email to firstname.lastname@example.org before you start (or open an issue in the original GitHub repository.
For more information about contributing to the NYC Space/Time Directory, see http://spacetime.nypl.org/#contributing (coming soon!).
First, download QGIS, and install the application by following their instructions. If all goes well, start QGIS, it should look a little like this:
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.
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
Fn+Deleteon 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.
- 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 bertspaan.nl/latlong (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
idcolumn, 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,
- 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
- 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
- Add a new street: Edit ⟶ Add Feature (or press
- 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
- Pick a map or atlas from https://github.com/nypl-spacetime/nyc-historical-streets
- Fork and clone this GitHub repository:
git clone https://github.com/<your-github-name>/nyc-historical-streets
- Open the map or atlas's QGIS project (e.g.
- 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.