
A GPX file can be displayed on the map as a
ghost. The data in the main window is called the
base. Comparison data between the ghost and the base
can be displayed in Ghost HUD.
Ghost is one way to enjoy GPX data. It is not intended for serious, detailed data analysis.
What Is a Ghost
A GPX file for the ghost is loaded, and ghost data is generated
based on the base. The ghost calculates and displays the position
on the ghost side that corresponds to the current position of the
base.
If the ghost GPX does not contain date/time data,
the ghost cannot be generated.
*** Note ***
Travel distance and travel time are calculated from each GPX data set. Even on the same route, travel distance may differ due to GPS fluctuation or drift.
Ghost Generation Logic
The ghost calculates how far the ghost moved at the same elapsed time as the base, and displays the estimated position.
The base is at t seconds after the start
↓
Find the ghost position at t seconds
↓
Display the ghost cursor at that position
Multi Ghost
Multiple GPX files can be loaded as ghosts and displayed at the
same time. Multi Ghost is specified using Ghost JSON.
Ghost JSON
is a JSON file used to collect multiple ghost GPX files and
display settings. The base is the currently opened GPX. Ghost GPX
files are specified in Ghost JSON.
| Item | Description |
|---|---|
| Base | Currently opened GPX |
| Ghost | GPX specified in Ghost JSON |
| Maximum count | 9 ghosts |
| Ghost number | Valid ghosts in Ghost JSON are handled from top to bottom as
Ghost #1, Ghost #2,
Ghost #3, and so on |
Ghost JSON
When a multi-ghost file is loaded, the screen displays the Ghost JSON file name instead of the first ghost GPX file name.
Main Items in Ghost JSON
| Item | Description |
|---|---|
| Settings | Common ghost settings |
| Ghosts | Array of ghost GPX definitions |
| GpxFileName | Ghost GPX file |
| CursorFolder | Ghost cursor image folder |
| CursorOpacity | Ghost cursor opacity |
| ShowCursor | Show ghost cursor |
| ShowTrack | Show ghost track |
| StartLine | Start line |
| EndLine | Finish line |
The order specified in Ghosts becomes the basic
ghost numbering. To change the order, change the order in the JSON
file.
Ghosts with Enabled=false are not
generated. G1, G2, and so on in the HUD
are treated as the display order of enabled ghosts.
For
each ghost, you can individually specify the cursor image folder,
opacity, cursor display, and track display.
Behavior When Omitted
| Item | If omitted |
|---|---|
| Settings | Default values are used |
| Ghosts.Enabled | Treated as enabled |
| CursorFolder | Not specified |
| CursorOpacity | 128 |
| ShowCursor | OFF |
| ShowTrack | OFF |
| StartLine | Disabled |
| EndLine | Disabled |
CursorOpacity is specified from 0 to 255. 0 is
fully transparent, and 255 is fully opaque.
Notes
- Ghost GPX files require date/time data
- If there are no enabled ghosts, no ghost is generated
- If the specified GPX file does not exist, the ghost cannot be generated
- The 10th and later ghosts are not loaded
- Ghost numbers are determined by the order in the JSON file
- Ghosts with
Enabled=falseare excluded from number display
Start and Finish
There are two ways to set the start and finish.
Full Data Method
The first point of the base data is the start, and the last
point is the finish. Adjust the data by deleting unnecessary
points to match that range.
To use the first point of the
GPX as the start point as-is, turn Use Raw Start ON.
Line Method
Set any two points on the map and draw a line. The point that
crosses the line is used as the start / end (finish) point. The
detected start / end point index is displayed.
Use 🚩 to
set the first point of the line. After clicking it, set the second
point and the line is drawn. Use the clear button to clear the
line. The Start Pin / End Pin set in Options is used.
Lines are used to determine indexes. Even when ghost data is
cleared, the lines remain. To clear a line, press the clear
button.
Line Display
If the background of each line is green / red, the line has been drawn. Clear it with the clear button.
StartLine / EndLine in Ghost JSON
In Ghost JSON, StartLine and EndLine
can be specified inside Settings.
StartLine is the line used for start detection.
EndLine is the line used for end detection.
"Settings": {
"StartLine": {
"Enabled": true,
"P1": {
"Lat": 35.6810000,
"Lon": 139.7660000
},
"P2": {
"Lat": 35.6820000,
"Lon": 139.7670000
}
},
"EndLine": {
"Enabled": true,
"P1": {
"Lat": 35.6815000,
"Lon": 139.7665000
},
"P2": {
"Lat": 35.6825000,
"Lon": 139.7675000
}
}
}| Setting | Behavior |
|---|---|
| No StartLine / No EndLine | Use the entire section |
| StartLine only | Use the section after StartLine |
| EndLine only | Use the section up to EndLine |
| StartLine and EndLine | Use the section from StartLine to EndLine |
| Same StartLine and EndLine | Use the section from the first crossing to the second crossing |
Options
| Item | Description | |
|---|---|---|
| Use Raw Start | ON | Use the first point of the ghost source data as the start point |
| OFF | Use the start position found from the line reference | |
| Interpolate Crossing | ON | Turn ON the setting related to line crossing interpolation |
| OFF | Turn OFF the setting related to line crossing interpolation | |
| Highlight Ghost Range | ON | Highlight the range used to generate the ghost in the list |
| OFF | Do not highlight | |
| Show Ghost on Chart | ON | Show the ghost on the chart |
| OFF | Do not show the ghost on the chart |
Use Raw Start = ON when you want to use the first point of the
GPX as the start point in the full data method.
Use Raw
Start = OFF when using the start position detected by the line
method.
Interpolate Crossing
In the current version, Interpolate Crossing is kept as a setting item in the UI and Ghost JSON, but its effect on ghost generation and movement results is limited.
Map Display
The ghost cursor and track are displayed.
Specify the
folder for Cursor. The contents are the same as the Cursor Pin
option.
| Item | Description | |
|---|---|---|
| Show Cursor | ON | Show the ghost cursor |
| OFF | Do not show the ghost cursor | |
| Show Track | ON | Show the ghost track |
| OFF | Do not show the ghost track |
Display Settings
The UI-side Show Cursor / Show Track settings affect all
ghosts. ShowCursor / ShowTrack in Ghost
JSON are individual settings for each ghost.
Relationship Between UI Settings and JSON Settings
| Display | Condition |
|---|---|
| Ghost cursor | UI Show Cursor is ON and each ghost has
ShowCursor=true |
| Ghost track | UI Show Track is ON and each ghost has
ShowTrack=true |
The UI-side checkboxes affect all ghosts.
In contrast,
CursorOpacity is an individual setting for each
ghost. In Multi Ghost, a different opacity can be specified for
each ghost.
Ghost Operation
As usual, the cursor moves with the up and down arrow keys. If the base reaches the finish first, the main window reaches the end of the list and cannot move farther, but on the map window you can press the down arrow until the ghost reaches the finish.
Ghost HUD
Displays various ghost information.
| Item | Description |
|---|---|
| Top Left | Top left |
| Bottom Left | Bottom left |
| Top Right | Top right |
| Bottom Right | Bottom right |
| Item | Name | Description | |
|---|---|---|---|
| LATI | Latitude | Latitude | Latitude of the current ghost position |
| LONG | Longitude | Longitude | Longitude of the current ghost position |
| ELEV | Elevation | Elevation | Elevation of the current ghost position |
| SPED | Speed | Speed | Speed of the current ghost position |
| DIST | Distance | Distance | Distance from the ghost start point |
| HEAD | Heading | Heading | Travel direction of the current ghost position |
| TYPE | Data Type | Data type | MEAS = measured point / INTR =
interpolated point |
| EDIF | Elevation Difference | Elevation difference | Base elevation - ghost elevation |
| SDIF | Speed Difference | Speed difference | Base speed - ghost speed |
| TDIF | Time Difference | Time difference | Time difference between base / ghost at the same distance |
| DDIF | Distance Difference | Distance difference | Base distance - ghost distance |
| PDIF | Position Difference | Position difference | Straight-line distance between base position and ghost position |
| DSTB | Remaining Distance Base | Base remaining distance | Base remaining distance to finish |
| DSTG | Remaining Distance Ghost | Ghost remaining distance | Ghost remaining distance to finish |
| TIMB | Remaining Time Base | Base remaining time | Base remaining time to finish |
| TIMG | Remaining Time Ghost | Ghost remaining time | Ghost remaining time to finish |
TDIF
TDIF is the time difference between the base and
ghost at the same distance point.
TDIF = elapsed time for the ghost to reach the same distance - elapsed time of the base
When TDIF is positive, the ghost reached the same
distance later. In other words, the base is ahead of the ghost.
The TDIF value when the base reaches the finish is a
guide to the final time difference.
| Item | Reference |
|---|---|
| Ghost cursor | Same elapsed time |
| TDIF | Same distance point |
| DDIF | Distance difference at the same elapsed time |
| PDIF | Straight-line distance between base position and ghost position |
The ghost cursor shows "where the ghost is at the same time",
and TDIF shows "how many seconds apart the base and
ghost reached the same distance".
Multi Ghost HUD
In Multi Ghost, ghost numbers are added to the HUD.
TDIF G1 +12.34 s
G2 -03.21 s
G1 and G2 indicate the display order
of enabled ghosts.
Multi Ghost HUD Display Item
In Multi Ghost HUD, all specified HUD items are not listed.
Instead, only the single item with the highest priority is
displayed for each ghost.
If you want to display
TDIF in Multi Ghost, it is safest to specify only
TDIF in Items in Ghost JSON.
"Hud": {
"Position": "TopRight",
"Items": [
"TDIF"
]
}HUD Item Priority Order
The HUD item display order is not the order written in
Items in Ghost JSON. It is handled using a fixed
internal order.
- LATI
- LONG
- ELEV
- SPED
- DIST
- HEAD
- TYPE
- EDIF
- SDIF
- TDIF
- DDIF
- PDIF
- DST
- TIM
For example, if the following is specified, Multi Ghost HUD
displays SPED instead of TDIF.
"Items": [
"TDIF",
"SPED"
]This is because SPED has higher priority.
Ghost JSON Examples
Single Ghost
{
"FileType": "TurboGPX.Ghost",
"Version": 1,
"Settings": {
"UseRawStart": false,
"InterpolateCrossing": false,
"Hud": {
"Position": "TopRight",
"Items": [
"TDIF"
]
}
},
"Ghosts": [
{
"Enabled": true,
"GpxFileName": "C:\\GPX\\ghost01.gpx",
"CursorFolder": "C:\\Turbo GPX\\image\\ghost\\ghost01",
"CursorOpacity": 255,
"ShowCursor": true,
"ShowTrack": true
}
]
}Multi Ghost
{
"FileType": "TurboGPX.Ghost",
"Version": 1,
"Settings": {
"UseRawStart": false,
"InterpolateCrossing": false,
"Hud": {
"Position": "TopRight",
"Items": [
"TDIF"
]
}
},
"Ghosts": [
{
"Enabled": true,
"GpxFileName": "C:\\GPX\\ghost01.gpx",
"CursorFolder": "C:\\Turbo GPX\\image\\ghost\\ghost01",
"CursorOpacity": 255,
"ShowCursor": true,
"ShowTrack": true
},
{
"Enabled": true,
"GpxFileName": "C:\\GPX\\ghost02.gpx",
"CursorFolder": "C:\\Turbo GPX\\image\\ghost\\ghost02",
"CursorOpacity": 192,
"ShowCursor": true,
"ShowTrack": true
},
{
"Enabled": false,
"GpxFileName": "C:\\GPX\\ghost03.gpx",
"CursorFolder": "C:\\Turbo GPX\\image\\ghost\\ghost03",
"CursorOpacity": 128,
"ShowCursor": true,
"ShowTrack": true
}
]
}In this example, Ghost #1 and Ghost #2 are enabled. Ghost #3 is
not generated because Enabled=false.
Notes on GPX Data
Ghost accuracy depends on the quality of the GPX data.
| Condition | Effect |
|---|---|
| GPX point intervals are coarse | Position and time errors become larger |
| GPS log is unstable | Ghost position may move unnaturally |
| Base and ghost courses are very different | Distance and time differences become less intuitive |
| Start positions are misaligned | Affects TDIF and the comparison start position |
| Finish positions are misaligned | Affects the final time difference |
For more accurate comparison, align the start position, finish position, and course shape of the base GPX and ghost GPX as much as possible.