Sep 2009
Tue, 08 Sep 2009
# Converting the Fugawi binary trk format for GPS waypoints
There does not seem to be a public specification of the binary trk format for GPS waypoints used by Fugawi navigation products. So I sat down and compared the exported csv waypoints with the binary format. Following is the specification. All fields are little endian encoded.
The file starts with a 36 byte header of which little is known. The first 6
bytes contain the string FUGTRK, bytes 7 and 8 are always 0xffff. Bytes 12
and 13 contain the number of records in the file.
After the header are the waypoint records, 48 bytes each. Each record contains the following fields (again little endian!):
| Offset | Length | Data Type | Contents | |--------|--------|-----------|----------| | 0 | 4 | ? | ? | | 4 | 4 | 32-bit float | Height | | 8 | 4 | 32-bit float | Distance to last waypoint | | 12 | 4 | ? | ? | | 16 | 4 | 32-bit float | Heading | | 20 | 4 | ? | ? | | 24 | 8 | 64-bit double | Latitude WGS84 | | 32 | 8 | 64-bit double | Longitude WGS84 | | 40 | 8 | 64-bit double | Days since 1899-30-12 00:00:00 UTC; fractional part is time in seconds of day รท 86400 |
In my test files all the missing fields are filled with zeros. If anyone has a file without zeros at those positions I would be highly interested in adding this information.
Here is an example application which can convert trks to GPX or KML format:
gcc fugawi.c -o fugawi
# output debug info
./fugawi test.trk
# output gpx
./fugawi test.trk gpx
# output kml
./fugawi test.trk kml
Use at your own risk.
posted at 13:12 | path: /gps | permanent link to this entry
