Just break the problem into small pieces... Make the data be transmitted to a node not very far away, once this node receives the data, it retransmit it forward and so on. You could use two nodes on those repeaters on different frequencies or simply retransmit the data incrementing a counter on the payload, so all nodes that already transmitted that message would ignore it in case they receive the same message back.
You need to perform tests to see what is the maximum reliable distance you can transmit, maybe a distance where the antennas can "see" each other. The antenna positioning will be very important as well. Yagi ones not be the ideal as they can get out of alignment when the cars are not all straight.
Have a look on this Node: Whisper Node - AVR - Wisen, the standard version should be well within the FCC limits when using digital modulation, also it is already design to run with minimal waste of energy. The board has a RFM69W module built-in, which is very reliable, especially if you lower the baud-rate to a few kb/s, which should be enough for you application.
Half dozen of those boards connected to some external antennas "visible" to each other should solve your problem. Put all on some nice enclosure with an easy way to attach/detach and you can move the whole thing from one train to another in no time
Cheers!