gpscorrelate icon indicating copy to clipboard operation
gpscorrelate copied to clipboard

Make .gpx processing more robust against invalid data

Open reald opened this issue 4 months ago • 0 comments

Coming back from vacation I wanted to geotag a bunch of images with gpscorrelate. But this did not work correctly, for most of the pictures no fitting coordinate could be found.

I found out that the .gpx files of the GPS (Garmin Vista HCX) had some implausible dates in some points ("2043-10-"). The time itself seems to be correct for these points, also the coordinate seems not to be off.

$> grep -B 4 -A 4 "2043-" 2*.gpx

20240228.gpx-    <time>2024-02-28T14:13:50Z</time>
20240228.gpx-   </trkpt>
20240228.gpx-   <trkpt lat="27.808132" lon="-15.713051">
20240228.gpx-    <ele>66.530</ele>
20240228.gpx:    <time>2043-10-14T14:14:09Z</time>
20240228.gpx-   </trkpt>
20240228.gpx-   <trkpt lat="27.810196" lon="-15.726586">
20240228.gpx-    <ele>66.136</ele>
20240228.gpx-    <time>2024-02-28T14:14:24Z</time>

20240228.gpx-    <time>2024-02-28T14:14:55Z</time>
20240228.gpx-   </trkpt>
20240228.gpx-   <trkpt lat="27.810386" lon="-15.727208">
20240228.gpx-    <ele>90.530</ele>
20240228.gpx:    <time>2043-10-14T14:16:21Z</time>
20240228.gpx-   </trkpt>
20240228.gpx-   <trkpt lat="27.826851" lon="-15.746896">
20240228.gpx-    <ele>86.839</ele>
20240228.gpx-    <time>2024-02-28T14:16:31Z</time>

20240302.gpx-    <time>2024-03-02T10:44:30Z</time>
20240302.gpx-   </trkpt>
20240302.gpx-   <trkpt lat="28.106219" lon="-15.443543">
20240302.gpx-    <ele>109.693</ele>
20240302.gpx:    <time>2043-10-17T10:44:38Z</time>
20240302.gpx-   </trkpt>
20240302.gpx-   <trkpt lat="28.113640" lon="-15.441651">
20240302.gpx-    <ele>106.583</ele>
20240302.gpx-    <time>2024-03-02T10:44:41Z</time>

20240302.gpx-    <time>2024-03-02T13:47:07Z</time>
20240302.gpx-   </trkpt>
20240302.gpx-   <trkpt lat="28.112554" lon="-15.442249">
20240302.gpx-    <ele>154.720</ele>
20240302.gpx:    <time>2043-10-17T13:47:17Z</time>
20240302.gpx-   </trkpt>
20240302.gpx-   <trkpt lat="28.104386" lon="-15.443748">
20240302.gpx-    <ele>163.688</ele>
20240302.gpx-    <time>2024-03-02T13:47:21Z</time>

20240302.gpx-    <time>2024-03-02T13:58:23Z</time>
20240302.gpx-   </trkpt>
20240302.gpx-   <trkpt lat="28.060291" lon="-15.421636">
20240302.gpx-    <ele>78.632</ele>
20240302.gpx:    <time>2043-10-17T13:58:56Z</time>
20240302.gpx-   </trkpt>
20240302.gpx-   <trkpt lat="28.049973" lon="-15.419228">
20240302.gpx-    <ele>82.799</ele>
20240302.gpx-    <time>2024-03-02T13:58:59Z</time>

Although this does not make sense it seems to happen quite often. I suspect that gpscorrelate expects the points in a monotonic increasing order and the year 2034 outliers breaks the order. Please implement some filter and throw away the points that are not in an increasing order when reading the input gpx data.

reald avatar Mar 09 '24 18:03 reald