Mercurial > dive4elements > gnv-client
comparison gnv-artifacts/src/main/java/de/intevation/gnv/math/QueriedXYDepth.java @ 462:912797826099
Use new raster access.
gnv-artifacts/trunk@519 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Sat, 09 Jan 2010 12:45:42 +0000 |
parents | 92d6cf448598 |
children | 07672838fa5f |
comparison
equal
deleted
inserted
replaced
461:3ddc22aab764 | 462:912797826099 |
---|---|
35 private static final String queryID = "rasterQuery"; | 35 private static final String queryID = "rasterQuery"; |
36 | 36 |
37 private QueryExecutor queryExecutor; | 37 private QueryExecutor queryExecutor; |
38 | 38 |
39 private ArrayList<SoftReference<RasterObject>> rasterData; | 39 private ArrayList<SoftReference<RasterObject>> rasterData; |
40 | |
41 private RasterObject last; | |
40 | 42 |
41 /** | 43 /** |
42 * Constructor | 44 * Constructor |
43 */ | 45 */ |
44 public QueriedXYDepth() { | 46 public QueriedXYDepth() { |
58 try { | 60 try { |
59 String[] filterValues = new String[] { WKTUtils.toWKT(coordinate) }; | 61 String[] filterValues = new String[] { WKTUtils.toWKT(coordinate) }; |
60 Collection<Result> result = queryExecutor.executeQuery(this.queryID,filterValues); | 62 Collection<Result> result = queryExecutor.executeQuery(this.queryID,filterValues); |
61 for (Result row: result) { | 63 for (Result row: result) { |
62 if ((ro = (RasterObject)row.getObject(0)) != null) { | 64 if ((ro = (RasterObject)row.getObject(0)) != null) { |
63 rasterData.add(new SoftReference<RasterObject>(ro)); | 65 rasterData.add(new SoftReference<RasterObject>(last = ro)); |
64 } | 66 } |
65 break; | 67 break; |
66 } | 68 } |
67 } catch (QueryException e) { | 69 } catch (QueryException e) { |
68 log.error(e, e); | 70 log.error(e, e); |
72 ? ro.getValue(coordinate) | 74 ? ro.getValue(coordinate) |
73 : Double.NaN; | 75 : Double.NaN; |
74 } | 76 } |
75 | 77 |
76 private RasterObject getRasterObject(Coordinate coordinate){ | 78 private RasterObject getRasterObject(Coordinate coordinate){ |
79 if (last != null && last.contains(coordinate)) { | |
80 return last; | |
81 } | |
77 for (int i = rasterData.size()-1; i >= 0; --i) { | 82 for (int i = rasterData.size()-1; i >= 0; --i) { |
78 SoftReference<RasterObject> ref = rasterData.get(i); | 83 SoftReference<RasterObject> ref = rasterData.get(i); |
79 RasterObject ro = ref.get(); | 84 RasterObject ro = ref.get(); |
80 if (ro != null && ro.getEnvelope().contains(coordinate)) { | 85 if (ro != null && ro.contains(coordinate)) { |
81 return ro; | 86 return last = ro; |
82 } | 87 } |
83 } | 88 } |
84 return null; | 89 return null; |
85 } | 90 } |
86 } | 91 } |