In 1992, Rusty Dodson and Waldo Tobler digitized John Snow’s cholera
map. Unfortunately, they did not include the names of roads (e.g., Broad
Street) in their data set. While not strictly necessary for analysis or
visualization, having the names can be useful so I appended the actual
street names from the map to the roads
data set.
Before discussing the details, some discussion of the structure of
roads
is warranted. The data contain 1241 pairs of x-y
coordinates that define the endpoints of straight line segments used to
describe some 528 numerically identified “streets”.
head(roads)
> street n x y id name lon lat
> 1 1 2 16.73800 18.69600 1 Map Frame -0.1332322 51.51669
> 2 1 2 17.66000 18.71200 2 Map Frame -0.1324437 51.51670
> 3 2 2 14.46200 18.65500 3 Map Frame -0.1350414 51.51668
> 4 2 2 16.73800 18.69600 4 Map Frame -0.1332322 51.51669
> 5 3 2 12.79388 18.61613 5 Map Frame -0.1363508 51.51667
> 6 3 2 14.46200 18.65500 6 Map Frame -0.1350414 51.51668
nrow(roads)
> [1] 1241
length(unique(roads$street))
> [1] 528
The correspondence between these 528 “streets” and streets in the real world is not one-to-one. Excluding the 50 “streets” used to draw the map’s frame, the remaining 478 “streets” actually describe 206 real world roads (e.g., Oxford Street, Regent Street).
This discrepancy emerges because real world streets are approximated using straight line segments. In fact 40% of the “real world” roads are composed of multiple “street” segments: for example, Oxford Street consists of 26 line segments and Broad Street consists of 6.
# Map Border "Streets" #
<- c(1:12, 14)
top <- c(37, 62, 74, 142, 147, 205, 240, 248, 280, 360, 405, 419, 465)
right <- c(483, seq(487, 495, 2), 498, 500, seq(503, 519, 2))
bottom <- c(31, 79, 114, 285, 348, 397, 469)
left <- sort(c(bottom, left, top, right))
border
length(border)
> [1] 50
The primary source for road names is Snow’s map (a high resolution version is available here. While great effort was made to correctly record and cross-reference names, there may still be errors. Error reports and suggestions for amendments are welcome.
Some roads on the map do not have a name. In those cases, I attach unique labels like “Unknown-C”.
Some names appear multiple times even though they lie at different locations. For these, I use Roman numerals to distinguish them (e.g., “King Street (I)” and “King Street (II)”).1
There is one apparent coding error in Dodson and Tobler’s road data. Queen Street (I) extends too far: the water pump #5 is clearly located on Marlborough Mews (see map, cited above) but ends up on Queen Street (I).
I amend this by moving the end point of Queen Street (I) westward so that the street only runs in a north-south direction. I do so by reassigning the segment that runs east-west to be part of Marlborough Mews.
<- HistData::Snow.streets
snow.streets $id <- seq_len(nrow(snow.streets))
snow.streets
# Data frame of road names
<- read.csv("~/Documents/Data IV/Snow/road3b.csv",
road.data stringsAsFactors = FALSE)
<- merge(snow.streets, road.data, by = "street", all.x = TRUE)
roads is.na(roads$name), "name"] <- "Map Frame"
roads[
$id == 277, "street"] <- 116
roads[roads$id == 277, "name"] <- "Marlborough Mews"
roads[roads$id == 277, c("x", "y")] <- roads[roads$id == 276, c("x", "y")]
roads[roads$name == "Queen Street (I)", "n"] <- 4
roads[roads$name == "Marlborough Mews", "n"] <- 3
roads[roads<- roads[order(roads$id), ] roads
To help locate and visualize streets and road segments (including the
map frame segments), you can use streetNameLocator()
,
streetNumberLocator()
, or
segmentLocator()
.
Note that streetNameLocator()
uses the names from the
roads
data set and tries to corrects for case and for extra
spaces: streetNameLocator("Oxford Street")
and
streetNameLocator("oxford street")
.
segmentLocator()
provides more granular analysis. It
uses individual road segments as the unit of observation.
There are 206 “valid” road names; 207, if we include “Map Frame”:
1 Adam and Eve Court Maidenhead Court
2 Air Street Margaret Court
3 Albany Street Margaret Street
4 Albemarle Street Market Court
5 Allens Court Market Place
6 Angel Court Market Row
7 Archer Street Market Street (I)
8 Argyll Place Market Street (II)
9 Argyll Street Marlborough Court
10 Arundel Place Marlborough Mews
11 Arundel Street Marlborough Row
12 Batemans Buildings Marshall Street
13 Beak Street Marylebone Street
14 Bentinck Street Masons Arms Yard
15 Berners Street Meards Court/Street
16 Berwick Street Mill Street
17 Black Lion Court Nags Head Yard
18 Blenheim Mews Naylors Yard
19 Blenheim Street New Bond Street
20 Boyle Street New Burlington Mews
21 Brewer Street New Burlington Street
22 Bridle Street New Street
23 Broad Street New Street/Husband Street
24 Bruton Street Newman Street
25 Bull Yard Noel Street
26 Burlington Arcade Norris's Place
27 Burlington Gardens North Coventry Street
28 Cambridge Street Old Burlington Mews
29 Carlisle Street Old Burlington Street
30 Carnaby Court Old Compton Street
31 Carnaby Street Orchard Place
32 Castle Street East Oxendon Street
33 Catherine Wheel Yard Oxford Street
34 Chapel Place Panton Street
35 Charles Street Perrys Place
36 Church Street Peter Street
37 Clifford Street Pews Place
38 Coach & Horses Yard Phoenix Yard
39 Cock Court Picadilly
40 Conduit Street Plough Yard
41 Cork Mews Poland Street
42 Cork Street Pollen Street
43 Coventry Street Portland Mews
44 Cross Street Portland Street
45 Crown Court Princes Street (I)
46 Dean Street Princes Street (II)
47 Dover Street Princes Street (III)
48 Duck Lane/Ham Square Princes Street/Hanover Square
49 Dufours Place Pulteney Court (I)
50 Edward Street Pulteney Court (II)
51 Falconberg Court Queen Street (I)
52 Falconberg Mews Queen Street (II)
53 Fouberts Place Queen Street (III)
54 Francis Street Queens Head Court
55 Frith Street Rathbone Place
56 George Court (I) Regent Street
57 George Court (II) Regents Quadrant
58 George Place (?) Richmond Buildings/Mews
59 George Street Richmond Street
60 George Yard Rupert Street
61 Glasshouse Street Sackville Street
62 Golden Place Saville Row
63 Golden Square Sherrard Street
64 Grafton Street Ship Yard
65 Great Castle Street Sidney Alley
66 Great Chapel Street Silver Street
67 Great Crown Court Smiths Court/Yard
68 Great Marlborough Street Soho Square
69 Great Pulteney Street South Row
70 Great Windmill Street St Anns Court
71 Greek Street St Anns Place
72 Green Dragon Yard St James Workhouse
73 Greens Court St James's Market
74 Ham Yard Sutton Street
75 Hanover Street Swallow Place
76 Hanway Street Swallow Street
77 Haymarket Tent Court
78 Heddon Court Tichborne Street
79 Heddon Street Titchfield Street
80 Hollen Street Turks Head Yard
81 Hopkins Street Tyler Court
82 Jermyn Street Tyler Street
83 John Street Tylers Court
84 Kemps Court Unknown-A1
85 King Street (I) Unknown-A2
86 King Street (II) Unknown-B
87 Kings Arms Yard Unknown-C
88 Leicester Street (I) Upper James Street
89 Leicester Street (II) Upper John Street
90 Lisle Street Upper Rupert Street
91 Little Argyll Street Vigo Street
92 Little Chapel Street Vine Street
93 Little Crown Court Walkers Court
94 Little Dean Street Wardour Mews
95 Little Marlborough Street Wardour Street
96 Little Pulteney Street Warwick Street
97 Little Windmill Street Wellington Mews
98 Lower James Street Wells Street
99 Lower John Street West Street
100 Lowndes Court Whitcomb Court
101 Macclesfield Street White Bear Yard
102 Macclesfield Street/Gerrard Street William and Mary Yard
103 Maddox Street Winsley Street
The original map is 14.5 x 15.5 inches with a stated nominal scale of 30 inches per mile.
Dodson and Tobler write that “The scale of the source map is approx. 1:2000. Coordinate units are meters.” By my estimate, one unit on the map is approximately 177 feet or 54 meters per unit.2
Streets with the same name were not an unusual occurrence. See Judith Flanders. 2012. The Victorian City: everyday life in Dickens’ London. New York: St. Martin’s Press, 57-58.↩︎
According to Dodson and Tobler’s data, the length of Carnaby Street from its intersection with Great Marlborough to its intersection with Cross Street is 2.61 units. According to Google Maps, the approximate analog of that segment is the distance along parts of Great Marlborough Street and Carnaby Street between 19-21 Great Marlborough Street and 43 Carnaby Street (at Ganton Street): 463 ft. This translates into approximately 177 feet/unit or 54 meters/unit.↩︎