Suppress duplicates in the output

This commit is contained in:
Ray Miller 2021-04-11 18:39:17 +01:00
parent bc6affbce1
commit 34bdaeab71

View file

@ -63,6 +63,7 @@ func main() {
} }
func findDuplicates(points []RoutePoint, fuzz, minDist, maxDist float64) { func findDuplicates(points []RoutePoint, fuzz, minDist, maxDist float64) {
var lastError *RoutePoint
for i := range points { for i := range points {
p := points[i] p := points[i]
for j := i + 1; j < len(points); j++ { for j := i + 1; j < len(points); j++ {
@ -72,7 +73,8 @@ func findDuplicates(points []RoutePoint, fuzz, minDist, maxDist float64) {
} }
d := euclideanDistance(p.Coordinate, q.Coordinate) d := euclideanDistance(p.Coordinate, q.Coordinate)
D := q.Distance - p.Distance D := q.Distance - p.Distance
if d < fuzz && D > minDist && D < maxDist { if d < fuzz && D > minDist && D < maxDist && (lastError == nil || p.Distance-lastError.Distance > 500) {
lastError = &p
fmt.Printf("Point (%0.f, %0.f) revisited at %0.2f km and %0.2f km\n", fmt.Printf("Point (%0.f, %0.f) revisited at %0.2f km and %0.2f km\n",
p.Coordinate.Easting, p.Coordinate.Northing, p.Distance/1000.0, q.Distance/1000.0) p.Coordinate.Easting, p.Coordinate.Northing, p.Distance/1000.0, q.Distance/1000.0)
} }