turf-swift icon indicating copy to clipboard operation
turf-swift copied to clipboard

Port geosimplify-js

Open 1ec5 opened this issue 4 years ago • 1 comments

LineString.simplify(tolerance:highestQuality:) and simplified(tolerance:highQuality:) are based on simplify-js, which is fine for certain simplification use cases. However, sampling the input to a map matching algorithm requires interpolating points along a straightaway: https://github.com/mapbox/mapbox-directions-swift/issues/661#issuecomment-1063184448. The standard Ramer–Douglas–Peucker algorithm can easily create a space between vertices large enough to result in a gap according to the map matching algorithm.

geosimplify-js is a derivative of simplify-js that preserves points along straightaways. It could be ported to Swift as an alternative to the usual simplification algorithm. Suggested method signatures:

mutating func simplify(minimumOffset: LocationDistance, minimumGap: LocationDistance)
func simplified(minimumOffset: LocationDistance, minimumGap: LocationDistance)

/cc @danpat @Guardiola31337

1ec5 avatar Mar 09 '22 19:03 1ec5

Tagging @mapbox/navigation-android for parity.

MaximAlien avatar Apr 18 '22 17:04 MaximAlien