# HG changeset patch # User Felix Wolfsteller # Date 1341936284 0 # Node ID 739aa90eb79edbc425b8fa09f4f469e202597b64 # Parent 31168ac9c7e762bb08920c24c984c437f4b9fe38 Fix issue694. flys-artifacts/trunk@4917 c6561f87-3c4e-4783-a992-168aeb5c3f6f diff -r 31168ac9c7e7 -r 739aa90eb79e flys-artifacts/ChangeLog --- a/flys-artifacts/ChangeLog Tue Jul 10 15:31:56 2012 +0000 +++ b/flys-artifacts/ChangeLog Tue Jul 10 16:04:44 2012 +0000 @@ -1,3 +1,10 @@ +2012-07-10 Felix Wolfsteller + + Fix for issue694. + + * src/main/java/de/intevation/flys/artifacts/StaticWKmsArtifact.java: + Also resolve edge cases (last/first cross section km). + 2012-07-10 Felix Wolfsteller Partial fix for issue694 (Heightmarks snap to nearest cross section diff -r 31168ac9c7e7 -r 739aa90eb79e flys-artifacts/src/main/java/de/intevation/flys/artifacts/StaticWKmsArtifact.java --- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/StaticWKmsArtifact.java Tue Jul 10 15:31:56 2012 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/StaticWKmsArtifact.java Tue Jul 10 16:04:44 2012 +0000 @@ -280,20 +280,19 @@ * * @param wkms WKms in which to search for a spatially close W value. * @param km the input km, which is compared to values from wkms. - * @param next the next available input km. - * @param prev the previous available input km. + * @param next the next available input km (-1 if unavailable). + * @param prev the previous available input km (-1 if unavailable). * * @return W in wkms that is closer to km than to next and prev, or Double.NaN. */ public double getWAtCloseKm(WKms wkms, double km, double next, double prev) { int size = wkms.size(); - // TODO handle edge cases (with no next or prev). for (int i = 0; i < size; i++) { double wkmsKm = wkms.getKm(i); double dist = Distance.distance(wkmsKm, km); - if ((prev != km && dist <= Distance.distance(wkmsKm, prev)) - && dist <= Distance.distance(wkmsKm, next)) { - return wkms.getW(i); + if ((prev == -1d || dist <= Distance.distance(wkmsKm, prev)) + && (next == -1d || dist <= Distance.distance(wkmsKm, next))) { + return wkms.getW(i); } }