The ref tag refers to the number from the stop name and isn’t necessarily unique to the stop except when combined with the route and the direction. There are many stops starting with, for instance, Stop 5 (which would all have a ref of 5.)
However, each stop has a unique 4-digit ID assigned by Yarra Trams (and that is used in the passenger-facing app tramTRACKER).
I’m not familiar with the transit network there but what about local_ref? For example https://transport.vic.gov.au/stop/2283/graham-stvictoria-ave-31/1/tram shows #31 and Stop ID 18662. I would think that the Stop ID 18662 would be the ref as the network wide stop identifier, then you’d use local_ref for another ref that isn’t unique across the whole network.
That Stop ID is the Department of Transport and Planning’s (DTP) number, although it does map 1:1 to Yarra Trams’ tramTRACKER IDs. For completeness, it would be best to have both. The tramTRACKER ID is the more public facing of the two.
In that case would the DTF Stop ID best go in one of the GTFS ID fields GTFS - OpenStreetMap Wiki ? We should check if that matches the GTFS ids or not.
Either way I think non-network wide IDs work better in local_ref and network wide IDs work in ref. If we need something like ref:tramtracker so be it, but I’d like to see if it can be fit into one of the ref fields first.
The DTP ID is published in the stops.txt file in GTFS:
So, the preferred option would be to populate ref with the DTP ID, replacing the existing ref which at the moment is this:
name=Stop 31: Graham Street
network=PTV - Metropolitan Trams
network:wikidata=Q7257648
operator=Keolis Downer
operator:wikidata=Q6328065
public_transport=stop_position
railway=tram_stop ref=31
tram=yes
wheelchair=no
… and then use local_ref to store the tramTRACKER IDs?
This is a big change that I wouldn’t do without community consent, of course.
(The above tag copy/paste brings up another point: Keolis Downer are no longer the operators. Yarra Journey Makers [made up of a JV between Transdev and John Holland] have been the operators since Dec 2024. Most operator tags say Keolis Downer, some say Yarra Trams. The trade name has carried over franchises.)
Has a DTP Stop ID of 18662 which is also the GTFS Stop ID, the signposted stop number is 31, and the tramTRACKER number is 1241.
Who we are - Yarra Trams says “Yarra Trams is proudly operated by Yarra Journey Makers, a joint venture between Transdev Australia and John Holland.” as the private operator.
I’m not sure how these values should be represented, it should be up to Melbourne local mappers to decide. I think either doing local_ref=31, ref=1241 and gtfs:stop_id=18662 is okay, or doing ref=31, gtfs:stop_id=18662 and ref:AU-VIC:tramtracker=1241 is also okay, but more leaning to the latter. ref is then used for the most visible signposted identifier, the GTFS ref is under the gtfs: scheme and the tramTRACKER ref really only being used for the tramTRACKER app would be best under it’s own ref namespace.
If it can be validated that Keolis Downer → Yarra Journey Makers would be correct, ie. nothing left operated by Keolis Downer and it’s an exact 1:1 mapping, then we could do a mass tag update.
I’m concerned about breaking any downstream applications that might rely on the tagging as it is, although that’s pretty hard to judge. I’m looking at other instances around the world. Not going to rush into this!