WikiProject United States railways

From OpenStreetMap Wiki
Jump to: navigation, search

This page intends to help organize efforts to map railways in the United States.

Editing Railroads starting from TIGER data

Like highways, railroad tracks have been imported from TIGER data and share similar problems like disconnected segments, wrong tagging, missing bridges and crossings and positions that are frequently off quite a lot. So a review is necessary as it is for highways. Sources to improve these data might include Bing imagery and/or a state Public Utilities Commission road/rail crossing spreadsheet. Such review might include following an entire rail "line" from one end to the other, paying particular attention to:

• alignment (against recent aerial or satellite imagery like Bing),
• multiple tracks (each mapped individually, preferably not with tracks=#),
• crossover tracks between mainlines, branches, sidings and spurs,
• tracks which make up yards,
• bridges and tunnels, where they exist and
• assuring that at-grade road/rail crossings are an actual intersecting node with a railway=level_crossing tag.

Reviewed/corrected segments of a single (named) railway should eventually be collected into a named route=railway relation. However, before doing so, given the abundance of TIGER rail data OSM has in the USA, try these steps while doing the above review:

• Select an element of TIGER rail, change its name=* tag to operator=* (rail company, transit district, public works entity...) and add a new name=* tag with a value of the name of the rail segment, often something like "XYZ Subdivision" or "ABC Industrial Line."
• Check the railway=* tag: valid tags include railway=rail, railway=tram, railway=light_rail, railway=subway, railway=disused, railway=abandoned, railway=narrow_gauge, railway=preserved and railway=construction.
• If you find a railway=spur tag, change it to railway=rail and add service=spur.
• See if an odd service=* tag exists (like service=branch, which doesn't make sense) and delete it if necessary. Valid service=* tags include service=spur, service=crossover and service=yard.
• Add a usage=* tag [main, branch, industrial, military, tourism] if one doesn't already exist. These can be subjective (see here), but usage=main is generally correct for heavy-traffic passenger and freight rail, especially as a contiguous named Subdivision.
• If a tiger:reviewed=no tag exists and you "reviewed" the rail (for example, comparing against Bing imagery and correcting where necessary), delete this tag (don't change it to the superfluous tiger:reviewed=yes).

Now you might gather identically named rail segments into a named relation with type=route, route=railway and name=Name of Subdivision or Line. Be aware of private/corporate rail map data being copyrighted; don't copy these into OSM.

These steps (review, proper alignment and tagging, creating a named relation) lead toward excellent OSM data and render well in OpenRailwayMap (ORM) after approximately 24 hours. Definitive ORM tagging documentation is found here, however, see below.

These are only brief, "local" (to the USA) summary guidelines for rail tagging. Also, these are additional useful North American conventions which are helpful to know.

OSM Rail Structure in the USA

ORM documents tagging rail with three "levels" of relations:

Railway Line Railway Route Train Route (Passenger Rail)
route=tracks route=railway route=train or route=light_rail or route=subway or route=tram

However, in the USA, largely because of how our TIGER import entered rail, we essentially skip collecting members into route=tracks relations and collect "physical railroad" elements (track members as infrastructure) directly into route=railway relations. These route=railway relations have become equated with our familiar named Subdivisions, Branches, Industrial Lines and railway=abandoned: contiguous rail segments with identical railway=*, name=*, operator=* and usage=* tags. ORM tagging suggests these be tagged with route=tracks rather than route=railway. The distinction seems like a small extra syntax wrapper we largely dismiss, however wider impact of not using route=tracks relations (on rendering, routing engines...) is unknown. (There remain a few route=tracks relations in Brooklyn, New York, but they are exceptions in North American rail).

Collections of rail segments (tracks) into route=railway relations continues at another "level" as these route=railway relations are themselves collected into super-relations. For example, the USA has a "Transcontinental" route=railway super-relation from Los Angeles to Chicago named Southern Transcon containing the eleven member route=railway relations that make up this route. We call this a "Major Mainline Rail," and there are others like it, not yet entered into OSM (e.g. Northern Transcon).

So, in the USA, we largely express rail with these three kinds of route relations:

Railway Route "Aggregated" Railway Route (Major Mainline Rail) Train Route (Passenger Rail)
route=railway Several contiguous route=railway relations in a super-relation route=train or route=light_rail or route=subway or route=tram

This diverges from tagging as is done in Europe (especially Germany), since in the USA route=tracks relations are nearly always omitted, being conflated into a route=railway relation. For important further discussion, please see the Discussion page.

Train Routes

Rail Renderers

In addition to OpenRailwayMap (ORM) displaying rail infrastructure, OpenPublicTransportMap (OPTM) displays passenger rail in route=train relations. At closer zooms, OPTM also displays route=light_rail, route=subway, route=tram, route=monorail, route=funicular, route=bus, route=trolleybus, route=aerialway and route=ferry with colors similar to ORM. Please compare and contrast ORM (rail infrastructure) and OPTM (passenger rail, bus and ferry routes) with OSM's Transport layer which rather simply displays "any and all rail" (railway=*, excluding railway=disused and railway=abandoned) and at closer zooms, route=bus.

Thanks to Indy Hurt, here is another rail renderer which displays rail-based passenger routes with their colour=* or color=* tag.


Map Your Train Ride! Add public_transport=platforms to the route=train relation of your commute. It's easy: add a node or draw a small polygon representing the exact location of the platform, and tag with public_transport=platform, railway=platform and rail=yes, light_rail=yes, subway=yes or tram=yes. You might also add it to the proper route=train relation(s) which should be found around that railway=station. For further guidance, see this diagram of a "simple railway station".

State projects