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 }

http://dive4elements.wald.intevation.org