package com.github.signed.sandbox.gpx; import static com.github.signed.sandbox.gpx.ProximityFilterTest.TestFiles.black_forrest_huts; import static com.github.signed.sandbox.gpx.ProximityFilterTest.TestFiles.schluchtensteig; import java.nio.file.Path; import java.nio.file.Paths; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; import org.junit.Test; import com.topografix.gpx._1._1.GpxType; import com.topografix.gpx._1._1.WptType; public class ProximityFilterTest { public static final double One_Kilometer = 1.0; private final GpxPersister gpxPersister = new GpxPersister(); private final GpxDistanceCalculator gpxDistanceCalculator = new GpxDistanceCalculator(); private final ProximityFilter proximityFilter = new ProximityFilter(gpxDistanceCalculator); public static class TestFiles { public static Path schluchtensteig = Paths.get("src/test/resources/tracks/schluchtensteig.gpx"); public static Path black_forrest_huts = Paths.get("src/test/resources/huts/blackforsthuts.gpx"); } @Test public void removeHutsThatAreMoreThanOneKilometerAwayFromTheTrack() throws Exception { GpxType track = gpxPersister.load(schluchtensteig); GpxType hutsGpx = gpxPersister.load(black_forrest_huts); List<WptType> closeByShelters = proximityFilter.wayPointsCloseTo(track, hutsGpx.getWpt(), One_Kilometer); hutsGpx.getWpt().clear(); hutsGpx.getWpt().addAll(closeByShelters); String xml = gpxPersister.toXml(hutsGpx); System.out.println(xml); } public static class Lists { public static <T> T last(List<T> list) { return list.get(list.size() - 1); } } @Test public void takeTheLastPointOfEachTrackAndConvertItIntoAWayPoint() throws Exception { List<Path> gpxFiles = new ArrayList<>(); gpxFiles.add(TestFiles.schluchtensteig); List<WptType> lastWayPointsOfEachTrack = gpxFiles.stream() .map(gpxPersister::load) .flatMap(gpxType -> gpxType.getTrk().stream()) .map(trkType -> Lists.last(trkType.getTrkseg())) .map(segment -> Lists.last(segment.getTrkpt())) .collect(Collectors.toList()); GpxType gpxType = new GpxType(); gpxType.getWpt().addAll(lastWayPointsOfEachTrack); String xml = gpxPersister.toXml(gpxType); System.out.println(xml); } }