Tuesday, June 10, 2025

Which Bus? Such bus.

 

It started innocently when I noticed a local transit shelter had been moved to the other side of the highway but that wasn't showing up in Open Street Maps. When I looked deeper, I found OSM had 1 shelter and 3 bus stop like nodes where the bus formerly stopped.

Because I was inexperienced at using OSM for public transport routing as opposed to vehicle directions, I knew I should be careful making edits less valid data or relationships be lost or confusing to others.

It later dawned on me that this wasn't 1 stop being removed, or moved, it was 2 stops replaced by one nearby. So I chose to delete the 3 bogons, and move the leftover down the road. I think I did it right and am waiting for various map sites to get these updates and see how they look.

But like pulling a loose thread that turns into an unravel-fest, I found more "errors and omissions" on other stops beyond where I started. Primary bugs:

  • Same bus stop ID number on 2 or more nodes. Should not happen.
  • Some stops had a route identifier; some did not.
  • Some stops had links/routes showing line numbers/names; some did not.
  • Nodes were classified as "bus" "bus stop" "bus station" willy-nilly
  • Multiple routes at one stop were mis-keyed as unseparated values
  • A new route is not on the map; does it exist?


Whispering Woods transit stop, in the area now known as Hopkins Point.



Bus stops seem duped.

Insert oops here

@neatnit@fosstodon.org Thank you for the guidance. Seems redundant stops were added by different people over time, and I was uncertain best approach. This stop was moved to the other side of the highway, so passengers go east one stop to a loop, then go west.


[out:json][timeout:25];
// gather results

/*
*/

node["highway"="bus_stop"]["ref"]({{bbox}});
for(t["ref"]) {
  if(count(nodes) > 1) {
    out tags center;
  }
}

// print results
out geom;


fix check:

https://overpass-api.de/api/sketch-line?network=BaltimoreLink&ref=59&operator=



The above is one view of the metro bus routes, showing the phantom (new) route #40.

It's ARCGIS, with Maryland State as the client/portal.

Another view:


Also ESRI-based, but with a more useful diagram of the route *and* stops. And termini.

https://www.mta.maryland.gov/schedule/stops/40

The MTA has a not-quite-current list of all bus stops, from a non-GUI menu path:

https://geodata.md.gov/imap/rest/services/Transportation/MD_Transit/FeatureServer/9/query

Simple-enough query-by-example fill-in-the boxes:


SELECT
stop_id, stop_name, Routes_Served, shelter
WHERE 
stop_id is NOT NULL

which returns columnar date in separate rows, plus coordinates.

e.g.

stop_name: OLD EASTERN AVE & SELIG AVE fs eb
Routes_Served: OR, 59, 62
Shelter: No
stop_id: 4522
Point:
X: -8511670.83
Y: 4766621.937700003

stop_name: OLD EASTERN AVE & ESSEX AVE eb
Routes_Served: OR, 59, 62, 160
Shelter: No
stop_id: 4524
Point:
X: -8511141.9511
Y: 4766737.762000002

(raw:)
/stop_name: / EASTERN BLVD & VIRGINIA AVE eb
/Routes_Served: / OR, 59, 62, 160
/Shelter: / No
/stop_id: / 7597
/Point:/
/X: / -8514337.1545
/Y: / 4765238.0484

The coordinate reference system I found worked with QGIS is "ESRI meters", also known as:


PROJCRS["WGS_1984_Web_Mercator_Auxiliary_Sphere",
    ID["ESRI",102100]]

I used the findings of the duplicate stop search to check location and routes, as well as naming standards (which someone took care of 99.4% not too many years ago).






The zip-ties are an indicator of datum freshness. Broken signboard likewise.

Next steps:

  • Add the missing 40 bus to OpenStreetMaps as a blank spot on the canvas.
  • Find duplicate stops by checking how close together they are, that aren't headed in opposite directions.
  • Figure out what to do about the majority of missing routes (as relations) for nodes.
  • Other errors and omissions as they appear, i.e. quality assurance.
  • Share timetable/schedule/interval info. See: chaos.social/@jspath55/114659131418285869
  • Compare recorded comfort features (benches/shelters) with ground conditions.








No comments: