Skip to contents

Spatial and tabular data describing the New York City subway system, derived from the MTA’s GTFS feed. Includes route shapes, stops, parent stations, directional platforms, transfers, and pre-computed offset versions of routes and stops suitable for schematic mapping.

Installation

You can install the development version of nycroutes from GitHub with:

# install.packages("remotes")
remotes::install_github("kjhealy/nycroutes")

What’s included

nyc_subway_routes_df
#> # A tibble: 29 × 11
#>    route_id route_group agency_id route_short_name route_long_name    route_desc
#>    <chr>    <chr>       <chr>     <chr>            <chr>              <chr>     
#>  1 A        ACE         MTA NYCT  A                8 Avenue Express   Trains op…
#>  2 C        ACE         MTA NYCT  C                8 Avenue Local     Trains op…
#>  3 E        ACE         MTA NYCT  E                8 Avenue Local     Trains op…
#>  4 B        BDFM        MTA NYCT  B                6 Avenue Express   Trains op…
#>  5 D        BDFM        MTA NYCT  D                6 Avenue Express   Trains op…
#>  6 F        BDFM        MTA NYCT  F                Queens Blvd Expre… Trains op…
#>  7 FX       BDFM        MTA NYCT  FX               Brooklyn F Express Trains op…
#>  8 M        BDFM        MTA NYCT  M                Queens Blvd Local… Trains op…
#>  9 G        G           MTA NYCT  G                Brooklyn-Queens C… Trains op…
#> 10 J        JZ          MTA NYCT  J                Nassau St Local    Trains op…
#> # ℹ 19 more rows
#> # ℹ 5 more variables: route_type <int>, route_url <chr>, route_color <chr>,
#> #   route_text_color <chr>, route_sort_order <int>

nyc_subway_routes_sf
#> Simple feature collection with 311 features and 6 fields
#> Geometry type: LINESTRING
#> Dimension:     XY
#> Bounding box:  xmin: 914189.9 ymin: 126191.2 xmax: 1052169 ymax: 268346.1
#> Projected CRS: NAD83 / New York Long Island (ftUS)
#> First 10 features:
#>      shape_id route_id route_group route_short_name           route_long_name
#> 1     1..N03R        1         123                1 Broadway - 7 Avenue Local
#> 2  1..N03X001     <NA>        <NA>             <NA>                      <NA>
#> 3     1..N04R     <NA>        <NA>             <NA>                      <NA>
#> 4     1..N05R     <NA>        <NA>             <NA>                      <NA>
#> 5     1..N06R     <NA>        <NA>             <NA>                      <NA>
#> 6     1..N12R     <NA>        <NA>             <NA>                      <NA>
#> 7     1..N13R     <NA>        <NA>             <NA>                      <NA>
#> 8     1..S03R        1         123                1 Broadway - 7 Avenue Local
#> 9  1..S03X001     <NA>        <NA>             <NA>                      <NA>
#> 10    1..S04R        1         123                1 Broadway - 7 Avenue Local
#>    route_color                       geometry
#> 1      #D82233 LINESTRING (980461.4 195059...
#> 2         <NA> LINESTRING (980461.4 195059...
#> 3         <NA> LINESTRING (980461.4 195059...
#> 4         <NA> LINESTRING (980461.4 195059...
#> 5         <NA> LINESTRING (980461.4 195059...
#> 6         <NA> LINESTRING (980461.4 195059...
#> 7         <NA> LINESTRING (980461.4 195059...
#> 8      #D82233 LINESTRING (1012291 263271....
#> 9         <NA> LINESTRING (997071.2 238760...
#> 10     #D82233 LINESTRING (1011661 261601....

nyc_subway_stops_sf
#> Simple feature collection with 1488 features and 4 fields
#> Geometry type: POINT
#> Dimension:     XY
#> Bounding box:  xmin: 914189.9 ymin: 126191.2 xmax: 1052169 ymax: 268346.1
#> Projected CRS: NAD83 / New York Long Island (ftUS)
#> # A tibble: 1,488 × 5
#>    stop_id stop_name      location_type parent_station                 geometry
#>  * <chr>   <chr>                  <int> <chr>          <POINT [US_survey_foot]>
#>  1 101     Van Cortlandt…             1 <NA>                 (1012291 263271.2)
#>  2 101N    Van Cortlandt…            NA 101                  (1012291 263271.2)
#>  3 101S    Van Cortlandt…            NA 101                  (1012291 263271.2)
#>  4 103     238 St                     1 <NA>                 (1011661 261601.4)
#>  5 103N    238 St                    NA 103                  (1011661 261601.4)
#>  6 103S    238 St                    NA 103                  (1011661 261601.4)
#>  7 104     231 St                     1 <NA>                   (1010567 259483)
#>  8 104N    231 St                    NA 104                    (1010567 259483)
#>  9 104S    231 St                    NA 104                    (1010567 259483)
#> 10 106     Marble Hill-2…             1 <NA>                 (1009187 257916.7)
#> # ℹ 1,478 more rows

nyc_subway_stops_parent_sf
#> Simple feature collection with 496 features and 4 fields
#> Geometry type: POINT
#> Dimension:     XY
#> Bounding box:  xmin: 914189.9 ymin: 126191.2 xmax: 1052169 ymax: 268346.1
#> Projected CRS: NAD83 / New York Long Island (ftUS)
#> # A tibble: 496 × 5
#>    stop_id stop_name      location_type parent_station                 geometry
#>  * <chr>   <chr>                  <int> <chr>          <POINT [US_survey_foot]>
#>  1 101     Van Cortlandt…             1 <NA>                 (1012291 263271.2)
#>  2 103     238 St                     1 <NA>                 (1011661 261601.4)
#>  3 104     231 St                     1 <NA>                   (1010567 259483)
#>  4 106     Marble Hill-2…             1 <NA>                 (1009187 257916.7)
#>  5 107     215 St                     1 <NA>                 (1007682 256050.9)
#>  6 108     207 St                     1 <NA>                 (1006704 254292.8)
#>  7 109     Dyckman St                 1 <NA>                   (1004848 252801)
#>  8 110     191 St                     1 <NA>                 (1003777 250866.9)
#>  9 111     181 St                     1 <NA>                   (1002621 248782)
#> 10 112     168 St-Washin…             1 <NA>                 (1000815 245520.2)
#> # ℹ 486 more rows

nyc_subway_stops_platform_sf
#> Simple feature collection with 992 features and 4 fields
#> Geometry type: POINT
#> Dimension:     XY
#> Bounding box:  xmin: 914189.9 ymin: 126191.2 xmax: 1052169 ymax: 268346.1
#> Projected CRS: NAD83 / New York Long Island (ftUS)
#> # A tibble: 992 × 5
#>    stop_id stop_name      location_type parent_station                 geometry
#>  * <chr>   <chr>                  <int> <chr>          <POINT [US_survey_foot]>
#>  1 101N    Van Cortlandt…            NA 101                  (1012291 263271.2)
#>  2 101S    Van Cortlandt…            NA 101                  (1012291 263271.2)
#>  3 103N    238 St                    NA 103                  (1011661 261601.4)
#>  4 103S    238 St                    NA 103                  (1011661 261601.4)
#>  5 104N    231 St                    NA 104                    (1010567 259483)
#>  6 104S    231 St                    NA 104                    (1010567 259483)
#>  7 106N    Marble Hill-2…            NA 106                  (1009187 257916.7)
#>  8 106S    Marble Hill-2…            NA 106                  (1009187 257916.7)
#>  9 107N    215 St                    NA 107                  (1007682 256050.9)
#> 10 107S    215 St                    NA 107                  (1007682 256050.9)
#> # ℹ 982 more rows

nyc_subway_transfers_df
#> # A tibble: 613 × 4
#>    from_stop_id to_stop_id transfer_type min_transfer_time
#>    <chr>        <chr>              <int>             <int>
#>  1 101          101                    2               180
#>  2 103          103                    2               180
#>  3 104          104                    2               180
#>  4 106          106                    2               180
#>  5 107          107                    2               180
#>  6 108          108                    2               180
#>  7 109          109                    2               180
#>  8 110          110                    2               180
#>  9 111          111                    2               180
#> 10 112          112                    2               180
#> # ℹ 603 more rows

nyc_subway_routes_offset_sf
#> Simple feature collection with 311 features and 7 fields
#> Geometry type: LINESTRING
#> Dimension:     XY
#> Bounding box:  xmin: 915289.9 ymin: 126191.2 xmax: 1053569 ymax: 268346.1
#> Projected CRS: NAD83 / New York Long Island (ftUS)
#> # A tibble: 311 × 8
#>    shape_id   route_id route_group route_short_name route_long_name  route_color
#>    <chr>      <chr>    <chr>       <chr>            <chr>            <chr>      
#>  1 1..N03R    1        123         1                Broadway - 7 Av… #D82233    
#>  2 1..N03X001 <NA>     <NA>        <NA>             <NA>             <NA>       
#>  3 1..N04R    <NA>     <NA>        <NA>             <NA>             <NA>       
#>  4 1..N05R    <NA>     <NA>        <NA>             <NA>             <NA>       
#>  5 1..N06R    <NA>     <NA>        <NA>             <NA>             <NA>       
#>  6 1..N12R    <NA>     <NA>        <NA>             <NA>             <NA>       
#>  7 1..N13R    <NA>     <NA>        <NA>             <NA>             <NA>       
#>  8 1..S03R    1        123         1                Broadway - 7 Av… #D82233    
#>  9 1..S03X001 <NA>     <NA>        <NA>             <NA>             <NA>       
#> 10 1..S04R    1        123         1                Broadway - 7 Av… #D82233    
#> # ℹ 301 more rows
#> # ℹ 2 more variables: geometry <LINESTRING [US_survey_foot]>, x_offset <dbl>

nyc_subway_stops_offset_sf
#> Simple feature collection with 1909 features and 8 fields
#> Geometry type: POINT
#> Dimension:     XY
#> Bounding box:  xmin: 915289.9 ymin: 126191.2 xmax: 1051669 ymax: 268346.1
#> Projected CRS: NAD83 / New York Long Island (ftUS)
#> # A tibble: 1,909 × 9
#>    stop_id stop_name      location_type parent_station                 geometry
#>    <chr>   <chr>                  <int> <chr>          <POINT [US_survey_foot]>
#>  1 101N    Van Cortlandt…            NA 101                  (1010991 263271.2)
#>  2 101S    Van Cortlandt…            NA 101                  (1010991 263271.2)
#>  3 103N    238 St                    NA 103                  (1010361 261601.4)
#>  4 103S    238 St                    NA 103                  (1010361 261601.4)
#>  5 104N    231 St                    NA 104                    (1009267 259483)
#>  6 104S    231 St                    NA 104                    (1009267 259483)
#>  7 106N    Marble Hill-2…            NA 106                  (1007887 257916.7)
#>  8 106S    Marble Hill-2…            NA 106                  (1007887 257916.7)
#>  9 107N    215 St                    NA 107                  (1006382 256050.9)
#> 10 107S    215 St                    NA 107                  (1006382 256050.9)
#> # ℹ 1,899 more rows
#> # ℹ 4 more variables: route_id <chr>, route_group <chr>, x_offset <dbl>,
#> #   route_color <chr>

Example

A quick map of the subway system, coloring each route by its MTA brand color and marking parent stations:

ggplot() +
  geom_sf(
    data = nyc_subway_routes_sf,
    mapping = aes(color = route_color),
    linewidth = 0.4,
    alpha = 0.8
  ) +
  geom_sf(
    data = nyc_subway_stops_parent_sf,
    size = 0.3,
    color = "grey20"
  ) +
  scale_color_identity() +
  labs(
    title = "NYC subway routes and stations",
    caption = "Source: MTA GTFS feed"
  ) +
  theme_void()
#> Warning: Removed 110 rows containing missing values or values outside the scale range
#> (`geom_sf()`).