From c66109c5053de2e0421cb9483c1e5ab00fdfde01 Mon Sep 17 00:00:00 2001 From: Gianpaolo Coro Date: Tue, 30 Apr 2013 10:03:08 +0000 Subject: [PATCH] git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/data-analysis/EcologicalEngineGeoSpatialExtension@74232 82a268e6-3cf1-43bd-a215-b396298e98cf --- .../geo/retrieval/GeoIntersector.java | 93 ++++++++++++++----- 1 file changed, 69 insertions(+), 24 deletions(-) diff --git a/src/main/java/org/gcube/dataanalysis/geo/retrieval/GeoIntersector.java b/src/main/java/org/gcube/dataanalysis/geo/retrieval/GeoIntersector.java index 2b5b048..3754c8a 100644 --- a/src/main/java/org/gcube/dataanalysis/geo/retrieval/GeoIntersector.java +++ b/src/main/java/org/gcube/dataanalysis/geo/retrieval/GeoIntersector.java @@ -1,9 +1,12 @@ package org.gcube.dataanalysis.geo.retrieval; +import java.util.ArrayList; import java.util.LinkedHashMap; +import java.util.List; import org.gcube.contentmanagement.lexicalmatcher.utils.AnalysisLogger; import org.gcube.dataanalysis.ecoengine.configuration.AlgorithmConfiguration; +import org.gcube.dataanalysis.ecoengine.utils.Tuple; import org.gcube.dataanalysis.geo.meta.features.FeaturesManager; import org.gcube.dataanalysis.geo.utils.EnvDataExplorer; import org.gcube.dataanalysis.geo.utils.ThreddsDataExplorer; @@ -22,33 +25,74 @@ public class GeoIntersector { public LinkedHashMap getFeaturesInTime(String layerTitle, double x, double y) throws Exception { return getFeaturesInTime(layerTitle, x, y, 0); } - + public LinkedHashMap getFeaturesInTime(String layerTitle, double x, double y, double z) throws Exception { LinkedHashMap features = new LinkedHashMap(); // get the layer -// Metadata meta = featurer.getGNInfobyTitle(layerTitle); - Metadata meta = featurer.checkForMetadatabyTitle(FeaturesManager.treatTitleForGN(layerTitle),layerTitle); + // Metadata meta = featurer.getGNInfobyTitle(layerTitle); + Metadata meta = featurer.checkForMetadatabyTitle(FeaturesManager.treatTitleForGN(layerTitle), layerTitle); // if the layer is good if (meta != null) { String layer = featurer.getLayerName(meta); - - if (layer == null) + + if (layer == null) layer = layerTitle; - - // check if it is a NetCDF - if (featurer.isThreddsFile(meta)) { - Identification id = meta.getIdentificationInfo().iterator().next(); - String title = id.getCitation().getTitle().toString(); - - System.out.println("found a netCDF file with title " +title +" and layer name "+layer); + + // check if it is a NetCDF + if (featurer.isThreddsFile(meta)) { + Identification id = meta.getIdentificationInfo().iterator().next(); + String title = id.getCitation().getTitle().toString(); + + System.out.println("found a netCDF file with title " + title + " and layer name " + layer); + features = getFeaturesFromNetCDF(featurer.getOpenDapLink(meta), layer, x, y, z); + } else { + System.out.println("found a Geo Layer with title " + layerTitle + " and layer name " + layer); + features = getFeaturesFromWFS(featurer.getWFSLink(meta), layer, x, y); + } + } + + return features; + } + + public List> getFeaturesInTime(String layerTitle, List> triplets) throws Exception { + List> featuresSets = new ArrayList>(); + // get the layer + Metadata meta = featurer.checkForMetadatabyTitle(FeaturesManager.treatTitleForGN(layerTitle), layerTitle); + // if the layer is good + if (meta != null) { + String layer = featurer.getLayerName(meta); + if (layer == null) + layer = layerTitle; + // check if it is a NetCDF + if (featurer.isThreddsFile(meta)) { + Identification id = meta.getIdentificationInfo().iterator().next(); + String title = id.getCitation().getTitle().toString(); + System.out.println("found a netCDF file with title " + title + " and layer name " + layer); + for (Tuple triplet : triplets) { + double x = triplet.getElements().get(0); + double y = triplet.getElements().get(1); + double z = 0; + if (triplet.getElements().size() > 2) + z = triplet.getElements().get(2); + + LinkedHashMap features = new LinkedHashMap(); features = getFeaturesFromNetCDF(featurer.getOpenDapLink(meta), layer, x, y, z); - } else { - System.out.println("found a Geo Layer with title " + layerTitle+" and layer name "+layer); + featuresSets.add(features); + } + + } else { + System.out.println("found a Geo Layer with title " + layerTitle + " and layer name " + layer); + for (Tuple triplet : triplets) { + double x = triplet.getElements().get(0); + double y = triplet.getElements().get(1); + LinkedHashMap features = new LinkedHashMap(); features = getFeaturesFromWFS(featurer.getWFSLink(meta), layer, x, y); + featuresSets.add(features); } } - - return features; + } + + return featuresSets; } private LinkedHashMap getFeaturesFromNetCDF(String opendapURL, String layer, double x, double y, double z) { @@ -64,14 +108,15 @@ public class GeoIntersector { return EnvDataExplorer.getFeatures(wfsUrl, layer, x, y); } - - public static void main(String args[] ) throws Exception{ - AnalysisLogger.setLogger("./cfg/"+AlgorithmConfiguration.defaultLoggerFile); -// GeoIntersector inters = new GeoIntersector("/gcube/devsec"); + + public static void main(String args[]) throws Exception { + AnalysisLogger.setLogger("./cfg/" + AlgorithmConfiguration.defaultLoggerFile); + // GeoIntersector inters = new GeoIntersector("/gcube/devsec"); GeoIntersector inters = new GeoIntersector(null); - -// System.out.println(inters.getFeaturesInTime("temperature (04091217ruc.nc)", 0.1, 0.1)); - System.out.println(inters.getFeaturesInTime("wind stress from [05-01-07 14:00] to [04-01-12 14:00] (2D) {CERSAT-GLO-CLIM_WIND_L4-OBS_FULL_TIME_SERIE_CLIMATOLOGY_METEOROLOGY_ATMOSPHERE_1366217956317.nc}", 0.1, 0.1,3000)); + + // System.out.println(inters.getFeaturesInTime("temperature (04091217ruc.nc)", 0.1, 0.1)); + // System.out.println(inters.getFeaturesInTime("wind stress from [05-01-07 14:00] to [04-01-12 14:00] (2D) {Monthly ASCAT global wind field: Data extracted from dataset http://tds0.ifremer.fr/thredds/dodsC/CERSAT-GLO-CLIM_WIND_L4-OBS_FULL_TIME_SERIE}", 0.1, 0.1,3000)); + System.out.println(inters.getFeaturesInTime("Statistical Mean in [07-01-01 01:00] (3D) {World Ocean Atlas 09: Sea Water Temperature - annual: dods://thredds.research-infrastructures.eu/thredds/dodsC/public/netcdf/temperature_annual_1deg_ENVIRONMENT_OCEANS_.nc}", -70, 0.1, 3000)); } - + }