You could do this with Pygo (the actual device from Pylife system).
If you struct.pack you data as timestamp, latitude, longitude 4B each * 3 = 12Bytes per record; there are 4MB available for user. So @30 sec update rate (I guess it's enough), 2 hours are 120 data records, so just 2.9 KB.
This could also be quickly prototyped with any Wipy/Lopy/Fipy + Pytrack, battery and IP67 case.
Downloading the data could be done over FTP/Wifi.