From 900e8ba88073cc55c6f5c0340a9ea686356de7cb Mon Sep 17 00:00:00 2001 From: Gianpaolo Coro Date: Tue, 4 Jun 2013 17:04:57 +0000 Subject: [PATCH] git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/data-analysis/EcologicalEngineGeoSpatialExtension@76768 82a268e6-3cf1-43bd-a215-b396298e98cf --- .../geo/utils/ThreddsDataExplorer.java | 68 +++++++++++++++---- 1 file changed, 56 insertions(+), 12 deletions(-) diff --git a/src/main/java/org/gcube/dataanalysis/geo/utils/ThreddsDataExplorer.java b/src/main/java/org/gcube/dataanalysis/geo/utils/ThreddsDataExplorer.java index 0300b28..a46f178 100644 --- a/src/main/java/org/gcube/dataanalysis/geo/utils/ThreddsDataExplorer.java +++ b/src/main/java/org/gcube/dataanalysis/geo/utils/ThreddsDataExplorer.java @@ -19,7 +19,10 @@ import org.w3c.dom.NodeList; import org.xml.sax.InputSource; import ucar.ma2.Array; +import ucar.ma2.ArrayDouble; import ucar.ma2.ArrayFloat; +import ucar.ma2.ArrayInt; +import ucar.ma2.ArrayLong; import ucar.ma2.Range; import ucar.ma2.StructureData; import ucar.ma2.StructureMembers.Member; @@ -153,12 +156,42 @@ public class ThreddsDataExplorer { AnalysisLogger.getLogger().debug("Layer Information Retrieval ELAPSED Time: " + (System.currentTimeMillis() - t01)); int rank = data.getRank(); AnalysisLogger.getLogger().debug("Rank of the layer: " + rank); - ArrayFloat.D3 data3 = null; - ArrayFloat.D2 data2 = null; - if (data.getRank() == 3) - data3 = (ArrayFloat.D3) data; - else - data2 = (ArrayFloat.D2) data; + + ArrayFloat.D3 data3Float = null; + ArrayDouble.D3 data3Double = null; + ArrayInt.D3 data3Int = null; + ArrayLong.D3 data3Long = null; + ArrayFloat.D2 data2Float = null; + ArrayDouble.D2 data2Double= null; + ArrayInt.D2 data2Int = null; + ArrayLong.D2 data2Long = null; + + if (data.getRank() == 3){ + if (data instanceof ArrayFloat.D3) + data3Float = (ArrayFloat.D3) data; + else if (data instanceof ArrayInt.D3) + data3Int = (ArrayInt.D3) data; + else if (data instanceof ArrayDouble.D3) + data3Double = (ArrayDouble.D3) data; + else if (data instanceof ArrayDouble.D3) + data3Double = (ArrayDouble.D3) data; + else if (data instanceof ArrayLong.D3) + data3Long = (ArrayLong.D3) data; + else + throw new Exception("Layer data format not supported"); + } + else{ + if (data instanceof ArrayFloat.D2) + data2Float = (ArrayFloat.D2) data; + else if (data instanceof ArrayInt.D2) + data2Int = (ArrayInt.D2) data; + else if (data instanceof ArrayDouble.D2) + data2Double = (ArrayDouble.D2) data; + else if (data instanceof ArrayLong.D2) + data2Long = (ArrayLong.D2) data; + else + throw new Exception("Layer data format not supported"); + } double xmin = xAxis.getMinValue(); @@ -205,12 +238,23 @@ public class ThreddsDataExplorer { yint = yD-1; if (zint>zD-1) zint = zD-1; - if (data3 != null){ -// System.out.println(val+" - "+zint+" "+yint+" "+xint +" --- "+xy[1]+" "+xy[0]); -// System.out.println(val+" - "+zint+" "+yint+" "+xint+" "+x+" "+y); - val = Double.valueOf(data3.get(zint, yint, xint)); - }else if (data2 != null) - val = Double.valueOf(data2.get(yint, xint)); + if (data3Float != null) + val = Double.valueOf(data3Float.get(zint, yint, xint)); + else if (data3Int != null) + val = Double.valueOf(data3Int.get(zint, yint, xint)); + else if (data3Double != null) + val = Double.valueOf(data3Double.get(zint, yint, xint)); + else if (data3Long != null) + val = Double.valueOf(data3Long.get(zint, yint, xint)); + + else if (data2Float != null) + val = Double.valueOf(data2Float.get(yint, xint)); + else if (data2Int != null) + val = Double.valueOf(data2Int.get(yint, xint)); + else if (data2Double != null) + val = Double.valueOf(data2Double.get(yint, xint)); + else if (data2Long != null) + val = Double.valueOf(data2Long.get(yint, xint)); values.add(val); }