Skip to content

Instantly share code, notes, and snippets.

@derhuerst
Last active July 1, 2024 12:53
Show Gist options
  • Save derhuerst/fe600eaec7d2b613042e81fa1a4f5987 to your computer and use it in GitHub Desktop.
Save derhuerst/fe600eaec7d2b613042e81fa1a4f5987 to your computer and use it in GitHub Desktop.
additional material for a talk on GTFS Pathways & GTFS-RT PathwayUpdates

GTFS Pathways

  • als pathways.txt Teil der GTFS-Schedule/Static-Spezifikation -> statische Daten
  • bildet alle Umsteigebeziehungen in einer Station (Hub) als Graph ab
    • Knoten sind Eingänge/Bahnsteige/etc.
    • Kanten sind Wege/Fahrtreppen/Aufzüge/etc.
    • Achtung: der Graph muss vollständig sein –> wenn Wege fehlen, werden diese von konsumierender Software als nicht existierend angenommen
  • existierende Feeds
    • curl 'https://storage.googleapis.com/storage/v1/b/mdb-csv/o/sources.csv?alt=media' -fsSL | qsv search -s features '\bpathways\b' | qsv select location.country_code,location.subdivision_name,provider,name
    • DE (im DELFI-GTFS): VBB (~500), MVV (~200), SSB/NVBW (~200), HVV (~130), ansonsten vereinzelt
    • EU: Paris, Budapest, Prag (nicht überprüft)
    • USA: San Diego (MTS), San Francisco (WETA), Boston (MBTA), Maryland
    • CA: Alberta
  • Werkzeuge
    • Routing: OpenTripPlanner – MOTIS noch nicht
    • Visualisierung/Umwandlung: bisher nur sehr rudimentäre Werkzeuge, z.b. extract-gtfs-pathways
    • generisch: Graph-Tools & -Datenbanken –> Query "alle Eingänge, die über Aufzüge von X aus erreichbar sind"

Praxis

  • erster Anhaltspunkt: wc -l {stops,pathways}.txt
    • Boston: 9987 stops.txt, 8070 pathways.txt
    • VBB: 527027 stops.txt, 294105 pathways.txt
    • Paris: 53357 stops.txt, 4992 pathways.txt
  • danach manuelle Analyse im Detail
  • praktisch wäre ein Tool, das die Verknüpfung mit dem OSM-Graphen überprüft -> OTP nutzen?

Beispiel: DELFI/VBB Berlin Pankow-Heinersdorf (de:11000:900130001)

[screenshots 1-5]

ground truth: https://commons.wikimedia.org/wiki/Category:Bahnhof_Berlin-Pankow-Heinersdorf

Beispiel: Boston Green Street (place-grnst)

[screenshots 1]

Beispiel: Paris Sèvres-Babylone (IDFM:71203)

[screenshots 1-4]

Beispiel: Budapest Népliget (CSF01282)

[screenshots 1-5]

GTFS-PathwayUpdates

GTFS Pathways:

While the core specification of GTFS-Pathways has been completely integrated into GTFS, additional information such as text-to-speech instructions, wheelchair assistance information, equipment-failure reporting, planned or scheduled entrance or exit closures, and elevator and escalator outages need to be added.

  • deswegen GTFS-PathwayUpdates
  • Erweiterungsvorschlag für GTFS-Realtime (GTFS-RT)
  • Idee: statisch spezifizierte Pathways dynamisch ändern/"löschen"/ergänzen -> überlagert die statischen Pathways-Daten
  • fügt dem FeedEntity-Element neue (optionale) Kindelemente StationUpdates hinzu
  • Achtung: "If there is no StationUpdate for a pathway listed in pathways.txt, it means there is no real-time status available. It does not mean that the pathway can be used."
  • PathwayStatus: UNKNOWN/OPERATIONAL/OPERATIONAL_WITH_LIMITATIONS/NOT_RUNNING
  • PathwayDirection: UNCHANGED/FORWARD/BIDIRECTIONAL/BACKWARD
Display the source blob
Display the rendered blob
Raw
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Display the source blob
Display the rendered blob
Raw
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Display the source blob
Display the rendered blob
Raw
{"type": "FeatureCollection", "features": [{"type":"Feature","properties":{"stop_id":"door-grnst-main","stop_name":"Green Street - Woolsey Sq, Green St, Amory St","location_type":"2","level_id":"level_in_street","circle-color":"#16a085","circle-radius":5,"marker-color":"#00ff00"},"geometry":{"type":"Point","coordinates":[-71.107519,42.310556]}}
,{"type":"Feature","properties":{"stop_id":"node-grnst-fareunpaid","stop_name":"Green Street","location_type":"3","level_id":"level_in_street","circle-color":"#7f8c8d","circle-radius":4,"marker-color":"#444444"},"geometry":{"type":"Point","coordinates":[-71.107597,42.310462]}}
,{"type":"Feature","properties":{"pathway_id":"grnst-004","pathway_mode":1,"is_bidirectional":false,"length":11.8872,"signposted_as":"All trains","line-color":"#2c3e50","line-width":0.7,"stroke-opacity":0.3,"stroke-width":2},"geometry":{"type":"LineString","coordinates":[[-71.107519,42.310556],[-71.107597,42.310462]]}}
,{"type":"Feature","properties":{"pathway_id":"grnst-004","pathway_mode":1,"is_bidirectional":false,"length":11.8872,"signposted_as":"All trains","line-color":"#2c3e50","line-width":0.7,"stroke-opacity":0.3,"stroke-width":2},"geometry":{"type":"LineString","coordinates":[[-71.107519,42.310556],[-71.107597,42.310462]]}}
,{"type":"Feature","properties":{"pathway_id":"grnst-005","pathway_mode":1,"is_bidirectional":false,"length":11.8872,"signposted_as":"Woolsey Square, Green Street, Amory Street, Franklin Park/Zoo","line-color":"#2c3e50","line-width":0.7,"stroke-opacity":0.3,"stroke-width":2},"geometry":{"type":"LineString","coordinates":[[-71.107597,42.310462],[-71.107519,42.310556]]}}
,{"type":"Feature","properties":{"pathway_id":"grnst-005","pathway_mode":1,"is_bidirectional":false,"length":11.8872,"signposted_as":"Woolsey Square, Green Street, Amory Street, Franklin Park/Zoo","line-color":"#2c3e50","line-width":0.7,"stroke-opacity":0.3,"stroke-width":2},"geometry":{"type":"LineString","coordinates":[[-71.107597,42.310462],[-71.107519,42.310556]]}}
,{"type":"Feature","properties":{"stop_id":"node-grnst-farepaid","stop_name":"Green Street","location_type":"3","level_id":"level_in_street","circle-color":"#7f8c8d","circle-radius":4,"marker-color":"#444444"},"geometry":{"type":"Point","coordinates":[-71.107597,42.310462]}}
,{"type":"Feature","properties":{"pathway_id":"grnst-006","pathway_mode":6,"is_bidirectional":false,"line-color":"#27ae60","line-width":2,"stroke-opacity":0.5,"stroke-width":2},"geometry":{"type":"LineString","coordinates":[[-71.107597,42.310462],[-71.107597,42.310462]]}}
,{"type":"Feature","properties":{"pathway_id":"grnst-006","pathway_mode":6,"is_bidirectional":false,"line-color":"#27ae60","line-width":2,"stroke-opacity":0.5,"stroke-width":2},"geometry":{"type":"LineString","coordinates":[[-71.107597,42.310462],[-71.107597,42.310462]]}}
,{"type":"Feature","properties":{"pathway_id":"grnst-007","pathway_mode":7,"is_bidirectional":false,"line-color":"#2ecc71","line-width":2,"stroke-opacity":0.5,"stroke-width":2},"geometry":{"type":"LineString","coordinates":[[-71.107597,42.310462],[-71.107597,42.310462]]}}
,{"type":"Feature","properties":{"pathway_id":"grnst-007","pathway_mode":7,"is_bidirectional":false,"line-color":"#2ecc71","line-width":2,"stroke-opacity":0.5,"stroke-width":2},"geometry":{"type":"LineString","coordinates":[[-71.107597,42.310462],[-71.107597,42.310462]]}}
,{"type":"Feature","properties":{"stop_id":"node-grnst-844-lobby","stop_name":"Green Street","location_type":"3","level_id":"level_in_street","circle-color":"#7f8c8d","circle-radius":4,"marker-color":"#444444"},"geometry":{"type":"Point","coordinates":[-71.107662,42.31037]}}
,{"type":"Feature","properties":{"pathway_id":"grnst-008","pathway_mode":1,"is_bidirectional":false,"length":10.3632,"signposted_as":"Elevator","line-color":"#2c3e50","line-width":0.7,"stroke-opacity":0.3,"stroke-width":2},"geometry":{"type":"LineString","coordinates":[[-71.107597,42.310462],[-71.107662,42.31037]]}}
,{"type":"Feature","properties":{"pathway_id":"grnst-008","pathway_mode":1,"is_bidirectional":false,"length":10.3632,"signposted_as":"Elevator","line-color":"#2c3e50","line-width":0.7,"stroke-opacity":0.3,"stroke-width":2},"geometry":{"type":"LineString","coordinates":[[-71.107597,42.310462],[-71.107662,42.31037]]}}
,{"type":"Feature","properties":{"pathway_id":"grnst-009","pathway_mode":1,"is_bidirectional":false,"length":10.3632,"line-color":"#2c3e50","line-width":0.7,"stroke-opacity":0.3,"stroke-width":2},"geometry":{"type":"LineString","coordinates":[[-71.107662,42.31037],[-71.107597,42.310462]]}}
,{"type":"Feature","properties":{"pathway_id":"grnst-009","pathway_mode":1,"is_bidirectional":false,"length":10.3632,"line-color":"#2c3e50","line-width":0.7,"stroke-opacity":0.3,"stroke-width":2},"geometry":{"type":"LineString","coordinates":[[-71.107662,42.31037],[-71.107597,42.310462]]}}
,{"type":"Feature","properties":{"stop_id":"node-grnst-131-lobby","stop_name":"Green Street","location_type":"3","level_id":"level_in_street","circle-color":"#7f8c8d","circle-radius":4,"marker-color":"#444444"},"geometry":{"type":"Point","coordinates":[-71.107617,42.310388]}}
,{"type":"Feature","properties":{"pathway_id":"grnst-010","pathway_mode":1,"is_bidirectional":false,"length":7.9248,"line-color":"#2c3e50","line-width":0.7,"stroke-opacity":0.3,"stroke-width":2},"geometry":{"type":"LineString","coordinates":[[-71.107597,42.310462],[-71.107617,42.310388]]}}
,{"type":"Feature","properties":{"pathway_id":"grnst-010","pathway_mode":1,"is_bidirectional":false,"length":7.9248,"line-color":"#2c3e50","line-width":0.7,"stroke-opacity":0.3,"stroke-width":2},"geometry":{"type":"LineString","coordinates":[[-71.107597,42.310462],[-71.107617,42.310388]]}}
,{"type":"Feature","properties":{"pathway_id":"grnst-011","pathway_mode":1,"is_bidirectional":false,"length":7.9248,"line-color":"#2c3e50","line-width":0.7,"stroke-opacity":0.3,"stroke-width":2},"geometry":{"type":"LineString","coordinates":[[-71.107617,42.310388],[-71.107597,42.310462]]}}
,{"type":"Feature","properties":{"pathway_id":"grnst-011","pathway_mode":1,"is_bidirectional":false,"length":7.9248,"line-color":"#2c3e50","line-width":0.7,"stroke-opacity":0.3,"stroke-width":2},"geometry":{"type":"LineString","coordinates":[[-71.107617,42.310388],[-71.107597,42.310462]]}}
,{"type":"Feature","properties":{"stop_id":"node-grnst-stairs-lobby","stop_name":"Green Street","location_type":"3","level_id":"level_in_street","circle-color":"#7f8c8d","circle-radius":4,"marker-color":"#444444"},"geometry":{"type":"Point","coordinates":[-71.107673,42.310406]}}
,{"type":"Feature","properties":{"pathway_id":"grnst-012","pathway_mode":1,"is_bidirectional":false,"length":7.9248,"line-color":"#2c3e50","line-width":0.7,"stroke-opacity":0.3,"stroke-width":2},"geometry":{"type":"LineString","coordinates":[[-71.107597,42.310462],[-71.107673,42.310406]]}}
,{"type":"Feature","properties":{"pathway_id":"grnst-012","pathway_mode":1,"is_bidirectional":false,"length":7.9248,"line-color":"#2c3e50","line-width":0.7,"stroke-opacity":0.3,"stroke-width":2},"geometry":{"type":"LineString","coordinates":[[-71.107597,42.310462],[-71.107673,42.310406]]}}
,{"type":"Feature","properties":{"pathway_id":"grnst-013","pathway_mode":1,"is_bidirectional":false,"length":7.9248,"line-color":"#2c3e50","line-width":0.7,"stroke-opacity":0.3,"stroke-width":2},"geometry":{"type":"LineString","coordinates":[[-71.107673,42.310406],[-71.107597,42.310462]]}}
,{"type":"Feature","properties":{"pathway_id":"grnst-013","pathway_mode":1,"is_bidirectional":false,"length":7.9248,"line-color":"#2c3e50","line-width":0.7,"stroke-opacity":0.3,"stroke-width":2},"geometry":{"type":"LineString","coordinates":[[-71.107673,42.310406],[-71.107597,42.310462]]}}
,{"type":"Feature","properties":{"stop_id":"node-grnst-844-platform","stop_name":"Green Street","location_type":"3","level_id":"level_-1_platform","circle-color":"#7f8c8d","circle-radius":4,"marker-color":"#444444"},"geometry":{"type":"Point","coordinates":[-71.107662,42.31037]}}
,{"type":"Feature","properties":{"pathway_id":"grnst-014","pathway_mode":5,"is_bidirectional":false,"traversal_time":46,"signposted_as":"Platform","line-color":"#2980b9","line-width":2,"stroke-opacity":1,"stroke-width":2},"geometry":{"type":"LineString","coordinates":[[-71.107662,42.31037],[-71.107662,42.31037]]}}
,{"type":"Feature","properties":{"pathway_id":"grnst-014","pathway_mode":5,"is_bidirectional":false,"traversal_time":46,"signposted_as":"Platform","line-color":"#2980b9","line-width":2,"stroke-opacity":1,"stroke-width":2},"geometry":{"type":"LineString","coordinates":[[-71.107662,42.31037],[-71.107662,42.31037]]}}
,{"type":"Feature","properties":{"pathway_id":"grnst-015","pathway_mode":5,"is_bidirectional":false,"traversal_time":46,"signposted_as":"Lobby","line-color":"#2980b9","line-width":2,"stroke-opacity":1,"stroke-width":2},"geometry":{"type":"LineString","coordinates":[[-71.107662,42.31037],[-71.107662,42.31037]]}}
,{"type":"Feature","properties":{"pathway_id":"grnst-015","pathway_mode":5,"is_bidirectional":false,"traversal_time":46,"signposted_as":"Lobby","line-color":"#2980b9","line-width":2,"stroke-opacity":1,"stroke-width":2},"geometry":{"type":"LineString","coordinates":[[-71.107662,42.31037],[-71.107662,42.31037]]}}
,{"type":"Feature","properties":{"stop_id":"node-grnst-131-platform","stop_name":"Green Street","location_type":"3","level_id":"level_-1_platform","circle-color":"#7f8c8d","circle-radius":4,"marker-color":"#444444"},"geometry":{"type":"Point","coordinates":[-71.107676,42.310297]}}
,{"type":"Feature","properties":{"pathway_id":"grnst-016","pathway_mode":4,"is_bidirectional":false,"traversal_time":25,"line-color":"#9b59b6","line-width":2,"stroke-opacity":0.8,"stroke-width":2},"geometry":{"type":"LineString","coordinates":[[-71.107676,42.310297],[-71.107617,42.310388]]}}
,{"type":"Feature","properties":{"pathway_id":"grnst-016","pathway_mode":4,"is_bidirectional":false,"traversal_time":25,"line-color":"#9b59b6","line-width":2,"stroke-opacity":0.8,"stroke-width":2},"geometry":{"type":"LineString","coordinates":[[-71.107676,42.310297],[-71.107617,42.310388]]}}
,{"type":"Feature","properties":{"stop_id":"node-grnst-stairs-platform","stop_name":"Green Street","location_type":"3","level_id":"level_-1_platform","circle-color":"#7f8c8d","circle-radius":4,"marker-color":"#444444"},"geometry":{"type":"Point","coordinates":[-71.107743,42.310317]}}
,{"type":"Feature","properties":{"pathway_id":"grnst-017","pathway_mode":2,"is_bidirectional":false,"stair_count":-32,"line-color":"#34495e","line-width":1,"stroke-opacity":0.5,"stroke-width":2},"geometry":{"type":"LineString","coordinates":[[-71.107673,42.310406],[-71.107743,42.310317]]}}
,{"type":"Feature","properties":{"pathway_id":"grnst-017","pathway_mode":2,"is_bidirectional":false,"stair_count":-32,"line-color":"#34495e","line-width":1,"stroke-opacity":0.5,"stroke-width":2},"geometry":{"type":"LineString","coordinates":[[-71.107673,42.310406],[-71.107743,42.310317]]}}
,{"type":"Feature","properties":{"pathway_id":"grnst-018","pathway_mode":2,"is_bidirectional":false,"stair_count":32,"line-color":"#34495e","line-width":1,"stroke-opacity":0.5,"stroke-width":2},"geometry":{"type":"LineString","coordinates":[[-71.107743,42.310317],[-71.107673,42.310406]]}}
,{"type":"Feature","properties":{"pathway_id":"grnst-018","pathway_mode":2,"is_bidirectional":false,"stair_count":32,"line-color":"#34495e","line-width":1,"stroke-opacity":0.5,"stroke-width":2},"geometry":{"type":"LineString","coordinates":[[-71.107743,42.310317],[-71.107673,42.310406]]}}
,{"type":"Feature","properties":{"stop_id":"70003","stop_name":"Green Street","location_type":"0","level_id":"level_-1_platform","circle-color":"#d35400","circle-radius":5,"marker-color":"#ff0000"},"geometry":{"type":"Point","coordinates":[-71.107988,42.309796]}}
,{"type":"Feature","properties":{"pathway_id":"grnst-019","pathway_mode":1,"is_bidirectional":false,"length":15.24,"signposted_as":"Inbound to Oak Grove via Downtown Crossing and State","line-color":"#2c3e50","line-width":0.7,"stroke-opacity":0.3,"stroke-width":2},"geometry":{"type":"LineString","coordinates":[[-71.107662,42.31037],[-71.107988,42.309796]]}}
,{"type":"Feature","properties":{"pathway_id":"grnst-019","pathway_mode":1,"is_bidirectional":false,"length":15.24,"signposted_as":"Inbound to Oak Grove via Downtown Crossing and State","line-color":"#2c3e50","line-width":0.7,"stroke-opacity":0.3,"stroke-width":2},"geometry":{"type":"LineString","coordinates":[[-71.107662,42.31037],[-71.107988,42.309796]]}}
,{"type":"Feature","properties":{"pathway_id":"grnst-020","pathway_mode":1,"is_bidirectional":false,"length":71.0184,"signposted_as":"Elevator","line-color":"#2c3e50","line-width":0.7,"stroke-opacity":0.3,"stroke-width":2},"geometry":{"type":"LineString","coordinates":[[-71.107988,42.309796],[-71.107662,42.31037]]}}
,{"type":"Feature","properties":{"pathway_id":"grnst-020","pathway_mode":1,"is_bidirectional":false,"length":71.0184,"signposted_as":"Elevator","line-color":"#2c3e50","line-width":0.7,"stroke-opacity":0.3,"stroke-width":2},"geometry":{"type":"LineString","coordinates":[[-71.107988,42.309796],[-71.107662,42.31037]]}}
,{"type":"Feature","properties":{"pathway_id":"grnst-021","pathway_mode":1,"is_bidirectional":false,"length":12.192,"signposted_as":"Inbound to Oak Grove via Downtown Crossing and State","line-color":"#2c3e50","line-width":0.7,"stroke-opacity":0.3,"stroke-width":2},"geometry":{"type":"LineString","coordinates":[[-71.107676,42.310297],[-71.107988,42.309796]]}}
,{"type":"Feature","properties":{"pathway_id":"grnst-021","pathway_mode":1,"is_bidirectional":false,"length":12.192,"signposted_as":"Inbound to Oak Grove via Downtown Crossing and State","line-color":"#2c3e50","line-width":0.7,"stroke-opacity":0.3,"stroke-width":2},"geometry":{"type":"LineString","coordinates":[[-71.107676,42.310297],[-71.107988,42.309796]]}}
,{"type":"Feature","properties":{"pathway_id":"grnst-022","pathway_mode":1,"is_bidirectional":false,"length":65.532,"signposted_as":"Exit to street","line-color":"#2c3e50","line-width":0.7,"stroke-opacity":0.3,"stroke-width":2},"geometry":{"type":"LineString","coordinates":[[-71.107988,42.309796],[-71.107676,42.310297]]}}
,{"type":"Feature","properties":{"pathway_id":"grnst-022","pathway_mode":1,"is_bidirectional":false,"length":65.532,"signposted_as":"Exit to street","line-color":"#2c3e50","line-width":0.7,"stroke-opacity":0.3,"stroke-width":2},"geometry":{"type":"LineString","coordinates":[[-71.107988,42.309796],[-71.107676,42.310297]]}}
,{"type":"Feature","properties":{"pathway_id":"grnst-023","pathway_mode":1,"is_bidirectional":false,"length":12.192,"signposted_as":"Inbound to Oak Grove via Downtown Crossing and State","line-color":"#2c3e50","line-width":0.7,"stroke-opacity":0.3,"stroke-width":2},"geometry":{"type":"LineString","coordinates":[[-71.107743,42.310317],[-71.107988,42.309796]]}}
,{"type":"Feature","properties":{"pathway_id":"grnst-023","pathway_mode":1,"is_bidirectional":false,"length":12.192,"signposted_as":"Inbound to Oak Grove via Downtown Crossing and State","line-color":"#2c3e50","line-width":0.7,"stroke-opacity":0.3,"stroke-width":2},"geometry":{"type":"LineString","coordinates":[[-71.107743,42.310317],[-71.107988,42.309796]]}}
,{"type":"Feature","properties":{"pathway_id":"grnst-024","pathway_mode":1,"is_bidirectional":false,"length":67.6656,"signposted_as":"Exit to street","line-color":"#2c3e50","line-width":0.7,"stroke-opacity":0.3,"stroke-width":2},"geometry":{"type":"LineString","coordinates":[[-71.107988,42.309796],[-71.107743,42.310317]]}}
,{"type":"Feature","properties":{"pathway_id":"grnst-024","pathway_mode":1,"is_bidirectional":false,"length":67.6656,"signposted_as":"Exit to street","line-color":"#2c3e50","line-width":0.7,"stroke-opacity":0.3,"stroke-width":2},"geometry":{"type":"LineString","coordinates":[[-71.107988,42.309796],[-71.107743,42.310317]]}}
,{"type":"Feature","properties":{"stop_id":"70002","stop_name":"Green Street","location_type":"0","level_id":"level_-1_platform","circle-color":"#d35400","circle-radius":5,"marker-color":"#ff0000"},"geometry":{"type":"Point","coordinates":[-71.108059,42.309832]}}
,{"type":"Feature","properties":{"pathway_id":"grnst-025","pathway_mode":1,"is_bidirectional":false,"length":15.24,"signposted_as":"Outbound to Forest Hills","line-color":"#2c3e50","line-width":0.7,"stroke-opacity":0.3,"stroke-width":2},"geometry":{"type":"LineString","coordinates":[[-71.107662,42.31037],[-71.108059,42.309832]]}}
,{"type":"Feature","properties":{"pathway_id":"grnst-025","pathway_mode":1,"is_bidirectional":false,"length":15.24,"signposted_as":"Outbound to Forest Hills","line-color":"#2c3e50","line-width":0.7,"stroke-opacity":0.3,"stroke-width":2},"geometry":{"type":"LineString","coordinates":[[-71.107662,42.31037],[-71.108059,42.309832]]}}
,{"type":"Feature","properties":{"pathway_id":"grnst-026","pathway_mode":1,"is_bidirectional":false,"length":71.0184,"signposted_as":"Elevator","line-color":"#2c3e50","line-width":0.7,"stroke-opacity":0.3,"stroke-width":2},"geometry":{"type":"LineString","coordinates":[[-71.108059,42.309832],[-71.107662,42.31037]]}}
,{"type":"Feature","properties":{"pathway_id":"grnst-026","pathway_mode":1,"is_bidirectional":false,"length":71.0184,"signposted_as":"Elevator","line-color":"#2c3e50","line-width":0.7,"stroke-opacity":0.3,"stroke-width":2},"geometry":{"type":"LineString","coordinates":[[-71.108059,42.309832],[-71.107662,42.31037]]}}
,{"type":"Feature","properties":{"pathway_id":"grnst-027","pathway_mode":1,"is_bidirectional":false,"length":12.192,"signposted_as":"Outbound to Forest Hills","line-color":"#2c3e50","line-width":0.7,"stroke-opacity":0.3,"stroke-width":2},"geometry":{"type":"LineString","coordinates":[[-71.107676,42.310297],[-71.108059,42.309832]]}}
,{"type":"Feature","properties":{"pathway_id":"grnst-027","pathway_mode":1,"is_bidirectional":false,"length":12.192,"signposted_as":"Outbound to Forest Hills","line-color":"#2c3e50","line-width":0.7,"stroke-opacity":0.3,"stroke-width":2},"geometry":{"type":"LineString","coordinates":[[-71.107676,42.310297],[-71.108059,42.309832]]}}
,{"type":"Feature","properties":{"pathway_id":"grnst-028","pathway_mode":1,"is_bidirectional":false,"length":65.532,"signposted_as":"Exit to street","line-color":"#2c3e50","line-width":0.7,"stroke-opacity":0.3,"stroke-width":2},"geometry":{"type":"LineString","coordinates":[[-71.108059,42.309832],[-71.107676,42.310297]]}}
,{"type":"Feature","properties":{"pathway_id":"grnst-028","pathway_mode":1,"is_bidirectional":false,"length":65.532,"signposted_as":"Exit to street","line-color":"#2c3e50","line-width":0.7,"stroke-opacity":0.3,"stroke-width":2},"geometry":{"type":"LineString","coordinates":[[-71.108059,42.309832],[-71.107676,42.310297]]}}
,{"type":"Feature","properties":{"pathway_id":"grnst-029","pathway_mode":1,"is_bidirectional":false,"length":12.192,"signposted_as":"Outbound to Forest Hills","line-color":"#2c3e50","line-width":0.7,"stroke-opacity":0.3,"stroke-width":2},"geometry":{"type":"LineString","coordinates":[[-71.107743,42.310317],[-71.108059,42.309832]]}}
,{"type":"Feature","properties":{"pathway_id":"grnst-029","pathway_mode":1,"is_bidirectional":false,"length":12.192,"signposted_as":"Outbound to Forest Hills","line-color":"#2c3e50","line-width":0.7,"stroke-opacity":0.3,"stroke-width":2},"geometry":{"type":"LineString","coordinates":[[-71.107743,42.310317],[-71.108059,42.309832]]}}
,{"type":"Feature","properties":{"pathway_id":"grnst-030","pathway_mode":1,"is_bidirectional":false,"length":67.6656,"signposted_as":"Exit to street","line-color":"#2c3e50","line-width":0.7,"stroke-opacity":0.3,"stroke-width":2},"geometry":{"type":"LineString","coordinates":[[-71.108059,42.309832],[-71.107743,42.310317]]}}
,{"type":"Feature","properties":{"pathway_id":"grnst-030","pathway_mode":1,"is_bidirectional":false,"length":67.6656,"signposted_as":"Exit to street","line-color":"#2c3e50","line-width":0.7,"stroke-opacity":0.3,"stroke-width":2},"geometry":{"type":"LineString","coordinates":[[-71.108059,42.309832],[-71.107743,42.310317]]}}
]}
Display the source blob
Display the rendered blob
Raw
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment