Route File Format
Race files are stored in the GPX format. GPX (the GPS Exchange Format) is a light-weight XML data format for the interchange of GPS data (waypoints, routes, and tracks) between applications and Web services on the Internet. Files have the suffix “.gpx”. The GPX schema and documentation can be viewed at http://www.topografix.com/gpx.asp.
Prior to version 1.10, BLUEWATER used the "waypoint+" format, with the file suffix ".wp+". BLUEWATER will still read race files in waypoint+ format, but it only saves files in GPX format. GPX, being an XML format, is very bulky, but it is more portable. You can edit GPX files directly with your favorite text editor (e.g., NotePad or Emacs). You can also view them with any web browser, and edit them with an XML editor. Following is a sample race file.
<?xml version="1.0" encoding="UTF-8"?> <gpx version="1.0" creator="Bluewater Racing 1.10" xmlns="http://www.topografix.com/GPX/1/0" xmlns:bwr="http://www.bluewaterracing.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/GPX/1/0/gpx.xsd"> <time>2009-12-30T18:22:10Z</time> <wpt lat="-43.250000000" lon="148.016666667"><name>Finish</name></wpt> <wpt lat="-33.833333333" lon="151.333333333"><name>Start</name></wpt> <rte><name>SydHob</name> <extensions> <bwr:attime>@grib</bwr:attime> <bwr:polar>J120</bwr:polar> <bwr:color>blue</bwr:color> <bwr:handicap>$time</bwr:handicap> <bwr:name>SydHob</bwr:name> </extensions> <rtept lat="-33.83333333" lon="151.33333333"> <name>Start</name> <time>1969-12-31T23:59:59Z</time> <type>0</type> <extensions> <bwr:wpp>Start</bwr:wpp> </extensions> </rtept> <rtept lat="-43.25000000" lon="148.01666667"> <name>Finish</name> <time>1969-12-31T23:59:59Z</time> <type>0</type> <extensions> <bwr:wpp>Finish</bwr:wpp> </extensions> </rtept> </rte> </gpx>
The first section is header information required by XML format files. Next, two marks named “Start” and “Finish” are defined, using the <wpt>,</wpt> tags. Next, a single route is defined using the <rte>,</rte> tags. GPX allows for application-specific extensions via the <extensions> tag. BLUEWATER adds all the non-default route options between tags of the form <bwr:option-name>. In the example, options include the route name, <bwr:name>SydHob</bwr:name>, the route polar data file, <bwr:polar>J120</bwr:polar>, and the start time <bwr:attime>@grib</bwr:attime>.
Within each route, route points are given using the <rtept> tag. The <type> of the point is either 0 or 1. A 1 means the point is read-only. Any time prior to 1/1/1970 is taken to mean “time not available,” i.e., a valid time has not been added or computed for this point. (“Why this date?” you ask. It is internal to your computer and that refers to the magical date that UNIX was invented at Bell Labs.)
A GPX format extension is added to the second route point: a “mark reference” <bwr:wpp>Finish</bwr:wpp>.
If a <rtept> entry contains a mark reference, then that route point is defined to be located at the mark whose name occurs between the <bwr:wpp> tags. In the example, it’s the “Finish” mark. The mark must have been previously defined with a <wpt> entry. As race files are read and imported, discovered marks are loaded into the program’s mark database. The mark reference is checked at the time the route point is processed; the referenced waypoint must be in the waypoint database, or an error occurs. The latitude and longitude specified in the tag are ignored, and route point is set to the position of the mark. If the mark does not exist, then a warning message is generated and the route point is placed at the lat/lon coords in the <rtept> tag. The advantage of using a mark reference is that if the mark is moved, then all route points that reference that waypoint will also be moved.
You can add a mark reference to a route point by selecting Edit mode, right-clicking on the route point, and setting the mark field appropriately. Alternately, you can bring up the details for the route, and right click on an entry in the details listing, to bring up the same editing window.