EDIT: I misread the question, my answer pertains to blocks, not transactions.
...includes the "relayed_by" field, which the documentation describes as "Address of the peer that sent us this transaction". Is this the IP address of the original node that broadcasts the transaction?
Not necessarily, the node listed may be the one that found the block, or that node may have heard about the block from some other node.
In general, we're trying to gather geographical data of the transactions; is there a reliable way to do so?
Not really. An interested user could set up many nodes, in an effort to 'have eyes' in many different places on the network, thus increasing confidence about which node each new block originates from. But even that data is not strongly tied to geography, for example nodes can connect through hidden services such as tor.
In addition to this, many mining pools are composed of geographically distributed miners, so learning the location of a mining pool's node doesn't necessarily tell you anything about where the hardware that actually found the block is located.
Miners can vary the data in the coinbase transaction, and some elect to put a name on this field. For example, see this recent block: when decoded we can see the coinbase transaction includes the text
ViaBTC/Mined by zout905. Worth mentioning: this data is not entirely conclusive, as any miner can put any data they'd like here, so it is possible for someone else to put 'ViaBTC' in a block they find, and it is possible for ViaBTC to put nothing at all.
Another way to distinguish who found a block is to look at the payout address. Some miners/pools will always pay the coinbase transaction to the same address, so you can track which blocks they've found by looking at the payout address. But this would only work for miners that pay to the same address, and requires an assumption they will continue to only pay to that address.