From 6036b6dfe5e63fef4989632e36b3b0db8657751a Mon Sep 17 00:00:00 2001 From: Gianpaolo Coro Date: Thu, 26 Jun 2014 14:46:29 +0000 Subject: [PATCH] adjusted maps comparison git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/data-analysis/EcologicalEngineGeoSpatialExtension@97863 82a268e6-3cf1-43bd-a215-b396298e98cf --- .../geo/algorithms/MapsComparator.java | 56 +++- .../GeothermalDataMetadataInsertDev.java | 263 ++++++++++++++++++ .../geo/matrixmodel/RasterTable.java | 10 +- .../geo/meta/GenericLayerMetadata.java | 4 +- .../geo/test/maps/TestMapsComparison.java | 14 +- 5 files changed, 325 insertions(+), 22 deletions(-) create mode 100644 src/main/java/org/gcube/dataanalysis/geo/batch/GeothermalDataMetadataInsertDev.java diff --git a/src/main/java/org/gcube/dataanalysis/geo/algorithms/MapsComparator.java b/src/main/java/org/gcube/dataanalysis/geo/algorithms/MapsComparator.java index 9b94eb5..14c806e 100644 --- a/src/main/java/org/gcube/dataanalysis/geo/algorithms/MapsComparator.java +++ b/src/main/java/org/gcube/dataanalysis/geo/algorithms/MapsComparator.java @@ -1,10 +1,14 @@ package org.gcube.dataanalysis.geo.algorithms; import java.awt.Image; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.Statement; import java.util.ArrayList; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; +import java.util.Map; import org.gcube.common.scope.api.ScopeProvider; import org.gcube.contentmanagement.graphtools.data.conversions.ImageTools; @@ -21,11 +25,14 @@ import org.gcube.dataanalysis.ecoengine.evaluation.DiscrepancyAnalysis; import org.gcube.dataanalysis.ecoengine.interfaces.DataAnalysis; import org.gcube.dataanalysis.ecoengine.utils.DatabaseUtils; import org.gcube.dataanalysis.ecoengine.utils.IOHelper; +import org.gcube.dataanalysis.ecoengine.utils.Operations; import org.gcube.dataanalysis.geo.connectors.netcdf.NetCDFDataExplorer; +import org.gcube.dataanalysis.geo.connectors.wfs.WFS; import org.gcube.dataanalysis.geo.infrastructure.GeoNetworkInspector; import org.gcube.dataanalysis.geo.matrixmodel.MatrixExtractor; import org.gcube.dataanalysis.geo.matrixmodel.RasterTable; import org.gcube.dataanalysis.geo.matrixmodel.XYExtractor; +import org.hibernate.SessionFactory; import org.jfree.chart.JFreeChart; import org.jfree.data.function.NormalDistributionFunction2D; import org.jfree.data.general.DatasetUtilities; @@ -56,7 +63,7 @@ public class MapsComparator extends DataAnalysis { @Override public String getDescription() { - return "An algorithm for comparing two OGC/NetCDF maps in seamless way to the user. The algorithm assesses the similarities between two geospatial maps by comparing them in a point-to-point fashion. It accepts as input the two geospatial maps (via their UUIDs in the infrastructure spatial data repository - recoverable through the Geoexplorer portlet) and some parameters affecting the comparison such as the z-index, the time index, the comparison threshold."; + return "An algorithm for comparing two OGC/NetCDF maps in seamless way to the user. The algorithm assesses the similarities between two geospatial maps by comparing them in a point-to-point fashion. It accepts as input the two geospatial maps (via their UUIDs in the infrastructure spatial data repository - recoverable through the Geoexplorer portlet) and some parameters affecting the comparison such as the z-index, the time index, the comparison threshold. Note: in the case of WFS layers it makes comparisons on the last feature column."; } public double BBxLL = -180; @@ -120,33 +127,42 @@ public class MapsComparator extends DataAnalysis { AnalysisLogger.getLogger().debug("MapsComparator: ****Rasterizing map 1****"); double[][] slice1 = intersector.extractXYGrid(layerT1, time1, BBxLL, BBxUR, BByLL, BByUR, z, resolution, resolution); + HashMap> polygonsFeatures = null; + if (intersector.currentconnector instanceof WFS) + polygonsFeatures = ((WFS) intersector.currentconnector).getPolygonsFeatures(); + AnalysisLogger.getLogger().debug("MapsComparator: Dumping map 1"); status = 30; - RasterTable raster1 = new RasterTable(BBxLL, BBxUR, BByLL, BByUR, z, resolution, resolution, slice1, config); + RasterTable raster1 = new RasterTable(BBxLL, BBxUR, BByLL, BByUR, z, resolution, resolution, slice1, polygonsFeatures,config); raster1.dumpGeoTable(); String rastertable1 = raster1.getTablename(); AnalysisLogger.getLogger().debug("MapsComparator: Map 1 was dumped in table: " + rastertable1); status = 40; + String columnToCompare1 = assessComparisonColumn(intersector, raster1); intersector = new XYExtractor (config); AnalysisLogger.getLogger().debug("MapsComparator: ****Rasterizing map 2****"); double[][] slice2 = intersector.extractXYGrid(layerT2, time2, BBxLL, BBxUR, BByLL, BByUR, z, resolution, resolution); + polygonsFeatures = null; + if (intersector.currentconnector instanceof WFS) + polygonsFeatures = ((WFS) intersector.currentconnector).getPolygonsFeatures(); AnalysisLogger.getLogger().debug("MapsComparator: Dumping map 2"); status = 50; - RasterTable raster2 = new RasterTable(BBxLL, BBxUR, BByLL, BByUR, z, resolution, resolution, slice2, config); + RasterTable raster2 = new RasterTable(BBxLL, BBxUR, BByLL, BByUR, z, resolution, resolution, slice2, polygonsFeatures,config); raster2.dumpGeoTable(); String rastertable2 = raster2.getTablename(); AnalysisLogger.getLogger().debug("MapsComparator: Map 2 was dumped in table: " + rastertable2); status = 60; - /* - * String rastertable1 = "rstr909f60c1d3f1472e9de998e844990724"; String rastertable2 = "rstre52e744c99224de3a1c5354263c6c8d8"; String resolution = "0.5"; - */ + String columnToCompare2 = assessComparisonColumn(intersector, raster2); + + AnalysisLogger.getLogger().debug("MapsComparator: Comparing on the following features : " + columnToCompare1+" vs "+columnToCompare2); + config.setNumberOfResources(1); config.setParam("FirstTable", rastertable1); config.setParam("SecondTable", rastertable2); config.setParam("FirstTableCsquareColumn", RasterTable.csquareColumn); config.setParam("SecondTableCsquareColumn", RasterTable.csquareColumn); - config.setParam("FirstTableProbabilityColumn", RasterTable.valuesColumn); - config.setParam("SecondTableProbabilityColumn", RasterTable.valuesColumn); + config.setParam("FirstTableProbabilityColumn", columnToCompare1); + config.setParam("SecondTableProbabilityColumn", columnToCompare2); config.setParam("ComparisonThreshold", "" + valuesthreshold); AnalysisLogger.getLogger().debug("MapsComparator: Analyzing discrepancy between maps: " + rastertable1 + " and " + rastertable2); DiscrepancyAnalysis da = new DiscrepancyAnalysis(); @@ -161,10 +177,10 @@ public class MapsComparator extends DataAnalysis { connection = DatabaseUtils.initDBSession(config); AnalysisLogger.getLogger().debug("MapsComparator: Deleting table " + rastertable1); - DatabaseFactory.executeSQLUpdate(DatabaseUtils.dropTableStatement(rastertable1), connection); +// DatabaseFactory.executeSQLUpdate(DatabaseUtils.dropTableStatement(rastertable1), connection); status = 90; AnalysisLogger.getLogger().debug("MapsComparator: Deleting table " + rastertable2); - DatabaseFactory.executeSQLUpdate(DatabaseUtils.dropTableStatement(rastertable2), connection); +// DatabaseFactory.executeSQLUpdate(DatabaseUtils.dropTableStatement(rastertable2), connection); AnalysisLogger.getLogger().debug("MapsComparator: Elapsed: Whole operation completed in " + ((double) (System.currentTimeMillis() - t0) / 1000d) + "s"); } catch (Exception e) { e.printStackTrace(); @@ -177,6 +193,26 @@ public class MapsComparator extends DataAnalysis { } + private String assessComparisonColumn(XYExtractor intersector, RasterTable raster) throws Exception{ + + String columnToCompare = RasterTable.valuesColumn; + try{ + if (intersector.currentconnector instanceof WFS){ + String[] columns = RasterTable.propertiesMapToColumnString(raster.valuesPropertiesMap.values().iterator().next(),false).split(","); + //take the last value as comparison column! + columnToCompare = columns[columns.length-1]; + AnalysisLogger.getLogger().debug("Mapscomparator: Preparing column "+columnToCompare); + org.gcube.dataanalysis.ecoengine.utils.DatabaseFactory.executeUpdateNoTransaction("ALTER TABLE "+raster.getTablename()+" ALTER COLUMN "+columnToCompare+" TYPE real USING "+columnToCompare+"::real", + config.getDatabaseDriver(),config.getDatabaseUserName(),config.getDatabasePassword(),config.getDatabaseURL(), true); + } + }catch(Exception e){ + throw new Exception ("Cannot compare the maps: the column "+columnToCompare+" is not real valued"); + } + finally{ + } + return columnToCompare; + } + public double getBestComparisonResolution(MatrixExtractor intersector, String layerID1, String layerID2) throws Exception{ GeoNetworkInspector fm = intersector.getFeaturer(); diff --git a/src/main/java/org/gcube/dataanalysis/geo/batch/GeothermalDataMetadataInsertDev.java b/src/main/java/org/gcube/dataanalysis/geo/batch/GeothermalDataMetadataInsertDev.java new file mode 100644 index 0000000..82f8f91 --- /dev/null +++ b/src/main/java/org/gcube/dataanalysis/geo/batch/GeothermalDataMetadataInsertDev.java @@ -0,0 +1,263 @@ +package org.gcube.dataanalysis.geo.batch; + +import org.gcube.dataanalysis.geo.meta.GenericLayerMetadata; +import org.opengis.metadata.identification.TopicCategory; + +public class GeothermalDataMetadataInsertDev { + + static String geonetworkurl = "http://geonetwork.geothermaldata.d4science.org/geonetwork"; + static String geoserverurl = "http://geoserver-dev.d4science-ii.research-infrastructures.eu/geoserver"; + /* + static String geonetworkurl = "http://geonetwork.d4science.org/geonetwork/"; + static String geoserverurl = "http://geoserver.d4science-ii.research-infrastructures.eu/geoserver"; + */ + //static String geoserverurl = "http://geoserver-dev.d4science-ii.research-infrastructures.eu/geoserver"; + + static String user = "admin"; + static String password = "d4science2014"; + // static String workspace= "timeseriesgisdb"; + //Temperature Isoline at 3 km depth + //Surface Heat Flow Map of Italy + //Temperature Isoline at 2 km depth + // Temperature Isoline at 1 km depth + //Temperature map at 1 km depth + //Surface Heat Flow Contour Map of Italy + //Temperature map at 2 km depth + //Temperature map at 3 km depth + + public static void main(String[] args) throws Exception{ + TemperatureIsolineat3kmdepth(); + SurfaceHeatFlowMapofItaly(); + TemperatureIsolineat2kmdepth(); + TemperatureIsolineat1kmdepth(); + Temperaturemapat1kmdepth(); + SurfaceHeatFlowContourMapofItaly(); + Temperaturemapat2kmdepth(); + Temperaturemapat3kmdepth(); + } + + private static void TemperatureIsolineat3kmdepth() throws Exception{ + GenericLayerMetadata metadataInserter = new GenericLayerMetadata(); + metadataInserter.setGeonetworkUrl(geonetworkurl); + metadataInserter.setGeonetworkUser(user); + metadataInserter.setGeonetworkPwd(password); + metadataInserter.setResolution(0); + metadataInserter.setXLeftLow(6.62397); + metadataInserter.setYLeftLow(36.64916); + metadataInserter.setXRightUpper(18.51444); + metadataInserter.setYRightUpper(47.09458); + + metadataInserter.setTitle("Temperature Isoline at 3 km depth"); + metadataInserter.setAbstractField("Temperature map at 3km depth (below ground level) of Italy"); + metadataInserter.setCustomTopics("geothermal energy","map","Italy","Energy resources","EGIP","D4Science"); + metadataInserter.setCategoryTypes("_"+TopicCategory.CLIMATOLOGY_METEOROLOGY_ATMOSPHERE.name()+"_"+"_"+TopicCategory.ENVIRONMENT.name()+"_"); + metadataInserter.setResolution(0); + + metadataInserter.setLayerName("IGG:iso_3000"); + + String [] urls = { + "http://repoigg.services.iit.cnr.it/geoserver/IGG/wms?service=WMS&version=1.3.0&request=GetMap&layers=IGG:iso_3000&styles=&bbox=7.59535694122314,36.5945739746094,17.2513008117676,46.1617622375488&width=512&height=507&crs=EPSG:4326&format=application/openlayers", + "http://repoigg.services.iit.cnr.it/geoserver/IGG/ows?service=WFS&version=1.1.0&request=GetFeature&typeName=IGG:iso_3000&srsName=urn:x-ogc:def:crs:EPSG:4326" + }; + String [] protocols = {"WMS","WFS"}; + + metadataInserter.customMetaDataInsert(urls,protocols); + } + + private static void SurfaceHeatFlowMapofItaly() throws Exception{ + GenericLayerMetadata metadataInserter = new GenericLayerMetadata(); + metadataInserter.setGeonetworkUrl(geonetworkurl); + metadataInserter.setGeonetworkUser(user); + metadataInserter.setGeonetworkPwd(password); + metadataInserter.setResolution(0); + metadataInserter.setXLeftLow(6.62397); + metadataInserter.setYLeftLow(36.64916); + metadataInserter.setXRightUpper(18.51444); + metadataInserter.setYRightUpper(47.09458); + + metadataInserter.setTitle("Surface Heat Flow Map of Italy"); + metadataInserter.setAbstractField("Surface Heat Flow Contour Map of Italy"); + metadataInserter.setCustomTopics("geothermal energy","map","Italy","Energy resources","EGIP","D4Science"); + metadataInserter.setCategoryTypes("_"+TopicCategory.CLIMATOLOGY_METEOROLOGY_ATMOSPHERE.name()+"_"+"_"+TopicCategory.ENVIRONMENT.name()+"_"); + metadataInserter.setResolution(0); + + metadataInserter.setLayerName("IGG:hf_1"); + + String [] urls = { + "http://repoigg.services.iit.cnr.it/geoserver/IGG/wms?service=WMS&version=1.3.0&request=GetMap&layers=IGG:hf_1&styles=&bbox=6.66010808944702,36.571231842041,18.6017723083496,47.099250793457&width=512&height=451&crs=EPSG:4326&format=application/openlayers", + "http://repoigg.services.iit.cnr.it/geoserver/IGG/ows?service=WFS&version=1.1.0&request=GetFeature&typeName=IGG:hf_1&srsName=urn:x-ogc:def:crs:EPSG:4326" + }; + String [] protocols = {"WMS","WFS"}; + + metadataInserter.customMetaDataInsert(urls,protocols); + } + + + private static void TemperatureIsolineat2kmdepth() throws Exception{ + GenericLayerMetadata metadataInserter = new GenericLayerMetadata(); + metadataInserter.setGeonetworkUrl(geonetworkurl); + metadataInserter.setGeonetworkUser(user); + metadataInserter.setGeonetworkPwd(password); + metadataInserter.setResolution(0); + metadataInserter.setXLeftLow(6.62397); + metadataInserter.setYLeftLow(36.64916); + metadataInserter.setXRightUpper(18.51444); + metadataInserter.setYRightUpper(47.09458); + + metadataInserter.setTitle("Temperature Isoline at 2 km depth"); + metadataInserter.setAbstractField("Temperature Isoline at 2 km depth (below ground level) of Italy"); + metadataInserter.setCustomTopics("geothermal energy","map","Italy","Energy resources","EGIP","D4Science"); + metadataInserter.setCategoryTypes("_"+TopicCategory.CLIMATOLOGY_METEOROLOGY_ATMOSPHERE.name()+"_"+"_"+TopicCategory.ENVIRONMENT.name()+"_"); + metadataInserter.setResolution(0); + + metadataInserter.setLayerName("IGG:iso_2000"); + + String [] urls = { + "http://repoigg.services.iit.cnr.it/geoserver/IGG/wms?service=WMS&version=1.1.0&request=GetMap&layers=IGG:iso_2000&styles=&bbox=7.53796720504761,36.6590042114258,17.1645240783691,46.0757904052734&width=512&height=500&crs=EPSG:4326&format=application/openlayers", + "http://repoigg.services.iit.cnr.it/geoserver/IGG/ows?service=WFS&version=1.1.0&request=GetFeature&typeName=IGG:iso_2000&srsName=urn:x-ogc:def:crs:EPSG:4326" + }; + String [] protocols = {"WMS","WFS"}; + + metadataInserter.customMetaDataInsert(urls,protocols); + } + + private static void TemperatureIsolineat1kmdepth() throws Exception{ + GenericLayerMetadata metadataInserter = new GenericLayerMetadata(); + metadataInserter.setGeonetworkUrl(geonetworkurl); + metadataInserter.setGeonetworkUser(user); + metadataInserter.setGeonetworkPwd(password); + metadataInserter.setResolution(0); + metadataInserter.setXLeftLow(6.62397); + metadataInserter.setYLeftLow(36.64916); + metadataInserter.setXRightUpper(18.51444); + metadataInserter.setYRightUpper(47.09458); + + metadataInserter.setTitle("Temperature Isoline at 1 km depth"); + metadataInserter.setAbstractField("Temperature Isoline at 1 km depth (below ground level) of Italy"); + metadataInserter.setCustomTopics("geothermal energy","map","Italy","Energy resources","EGIP","D4Science"); + metadataInserter.setCategoryTypes("_"+TopicCategory.CLIMATOLOGY_METEOROLOGY_ATMOSPHERE.name()+"_"+"_"+TopicCategory.ENVIRONMENT.name()+"_"); + metadataInserter.setResolution(0); + + metadataInserter.setLayerName("IGG:iso_1000"); + + String [] urls = { + "http://repoigg.services.iit.cnr.it/geoserver/IGG/wms?service=WMS&version=1.3.0&request=GetMap&layers=IGG:iso_1000&styles=&bbox=7.40797662734985,36.7031669616699,17.1524467468262,46.1305541992188&width=512&height=495&crs=EPSG:4326&format=application/openlayers", + "http://repoigg.services.iit.cnr.it/geoserver/IGG/ows?service=WFS&version=1.1.0&request=GetFeature&typeName=IGG:iso_1000&srsName=urn:x-ogc:def:crs:EPSG:4326" + }; + String [] protocols = {"WMS","WFS"}; + + metadataInserter.customMetaDataInsert(urls,protocols); + } + + private static void Temperaturemapat1kmdepth() throws Exception{ + GenericLayerMetadata metadataInserter = new GenericLayerMetadata(); + metadataInserter.setGeonetworkUrl(geonetworkurl); + metadataInserter.setGeonetworkUser(user); + metadataInserter.setGeonetworkPwd(password); + metadataInserter.setResolution(0); + metadataInserter.setXLeftLow(6.62397); + metadataInserter.setYLeftLow(36.64916); + metadataInserter.setXRightUpper(18.51444); + metadataInserter.setYRightUpper(47.09458); + + metadataInserter.setTitle("Temperature map at 1 km depth"); + metadataInserter.setAbstractField("Temperature map at 1km depth (below ground level) of Italy"); + metadataInserter.setCustomTopics("geothermal energy","map","Italy","Energy resources","EGIP","D4Science"); + metadataInserter.setCategoryTypes("_"+TopicCategory.CLIMATOLOGY_METEOROLOGY_ATMOSPHERE.name()+"_"+"_"+TopicCategory.ENVIRONMENT.name()+"_"); + metadataInserter.setResolution(0); + + metadataInserter.setLayerName("IGG:area_temp_1000"); + + String [] urls = { + "http://repoigg.services.iit.cnr.it/geoserver/IGG/wms?service=WMS&version=1.3.0&request=GetMap&layers=IGG:area_temp_1000&styles=&bbox=6.62688943789748,36.6438921370804,18.5206117399977,47.0919540445501&width=512&height=449&crs=EPSG:4326&format=application/openlayers", + "http://repoigg.services.iit.cnr.it/geoserver/IGG/ows?service=WFS&version=1.1.0&request=GetFeature&typeName=IGG:area_temp_1000&srsName=urn:x-ogc:def:crs:EPSG:4326" + }; + String [] protocols = {"WMS","WFS"}; + + metadataInserter.customMetaDataInsert(urls,protocols); + } + + private static void SurfaceHeatFlowContourMapofItaly() throws Exception{ + GenericLayerMetadata metadataInserter = new GenericLayerMetadata(); + metadataInserter.setGeonetworkUrl(geonetworkurl); + metadataInserter.setGeonetworkUser(user); + metadataInserter.setGeonetworkPwd(password); + metadataInserter.setResolution(0); + metadataInserter.setXLeftLow(6.62397); + metadataInserter.setYLeftLow(36.64916); + metadataInserter.setXRightUpper(18.51444); + metadataInserter.setYRightUpper(47.09458); + + metadataInserter.setTitle("Surface Heat Flow Contour Map of Italy"); + metadataInserter.setAbstractField("Surface Heat Flow Contour Map of Italy"); + metadataInserter.setCustomTopics("geothermal energy","map","Italy","Energy resources","EGIP","D4Science"); + metadataInserter.setCategoryTypes("_"+TopicCategory.CLIMATOLOGY_METEOROLOGY_ATMOSPHERE.name()+"_"+"_"+TopicCategory.ENVIRONMENT.name()+"_"); + metadataInserter.setResolution(0); + + metadataInserter.setLayerName("IGG:heat_flow_1"); + + String [] urls = { + "http://repoigg.services.iit.cnr.it/geoserver/IGG/wms?service=WMS&version=1.3.0&request=GetMap&layers=IGG:heat_flow_1&styles=&bbox=6.699791431427,36.5742835998535,18.6017723083496,47.0844573974609&width=512&height=452&crs=EPSG:4326&format=application/openlayers", + "http://repoigg.services.iit.cnr.it/geoserver/IGG/ows?service=WFS&version=1.1.0&request=GetFeature&typeName=IGG:heat_flow_1&srsName=urn:x-ogc:def:crs:EPSG:4326" + }; + String [] protocols = {"WMS","WFS"}; + + metadataInserter.customMetaDataInsert(urls,protocols); + } + private static void Temperaturemapat2kmdepth() throws Exception{ + GenericLayerMetadata metadataInserter = new GenericLayerMetadata(); + metadataInserter.setGeonetworkUrl(geonetworkurl); + metadataInserter.setGeonetworkUser(user); + metadataInserter.setGeonetworkPwd(password); + metadataInserter.setResolution(0); + metadataInserter.setXLeftLow(6.62397); + metadataInserter.setYLeftLow(36.64916); + metadataInserter.setXRightUpper(18.51444); + metadataInserter.setYRightUpper(47.09458); + + metadataInserter.setTitle("Temperature map at 2 km depth"); + metadataInserter.setAbstractField("Temperature map at 2km depth (below ground level) of Italy"); + metadataInserter.setCustomTopics("geothermal energy","map","Italy","Energy resources","EGIP","D4Science"); + metadataInserter.setCategoryTypes("_"+TopicCategory.CLIMATOLOGY_METEOROLOGY_ATMOSPHERE.name()+"_"+"_"+TopicCategory.ENVIRONMENT.name()+"_"); + metadataInserter.setResolution(0); + + metadataInserter.setLayerName("IGG:area_temp_2000"); + + String [] urls = { + "http://repoigg.services.iit.cnr.it/geoserver/IGG/wms?service=WMS&version=1.3.0&request=GetMap&layers=IGG:area_temp_2000&styles=&bbox=6.6268892288208,36.6438903808594,18.5206127166748,47.0919570922852&width=512&height=449&crs=EPSG:4326&format=application/openlayers", + "http://repoigg.services.iit.cnr.it/geoserver/IGG/ows?service=WFS&version=1.1.0&request=GetFeature&typeName=IGG:area_temp_2000&srsName=urn:x-ogc:def:crs:EPSG:4326" + }; + String [] protocols = {"WMS","WFS"}; + + metadataInserter.customMetaDataInsert(urls,protocols); + } + + private static void Temperaturemapat3kmdepth() throws Exception{ + GenericLayerMetadata metadataInserter = new GenericLayerMetadata(); + metadataInserter.setGeonetworkUrl(geonetworkurl); + metadataInserter.setGeonetworkUser(user); + metadataInserter.setGeonetworkPwd(password); + metadataInserter.setResolution(0); + metadataInserter.setXLeftLow(6.62397); + metadataInserter.setYLeftLow(36.64916); + metadataInserter.setXRightUpper(18.51444); + metadataInserter.setYRightUpper(47.09458); + + metadataInserter.setTitle("Temperature map at 3 km depth"); + metadataInserter.setAbstractField("Temperature map at 3km depth (below ground level) of Italy"); + metadataInserter.setCustomTopics("geothermal energy","map","Italy","Energy resources","EGIP","D4Science"); + metadataInserter.setCategoryTypes("_"+TopicCategory.CLIMATOLOGY_METEOROLOGY_ATMOSPHERE.name()+"_"+"_"+TopicCategory.ENVIRONMENT.name()+"_"); + metadataInserter.setResolution(0); + + metadataInserter.setLayerName("IGG:area_temp_3000"); + + String [] urls = { + "http://repoigg.services.iit.cnr.it/geoserver/IGG/wms?service=WMS&version=1.3.0&request=GetMap&layers=IGG:area_temp_3000&styles=&bbox=6.6268892288208,36.5945739746094,18.5206127166748,47.0919570922852&width=512&height=451&crs=EPSG:4326&format=application/openlayers", + "http://repoigg.services.iit.cnr.it/geoserver/IGG/ows?service=WFS&version=1.1.0&request=GetFeature&typeName=IGG:area_temp_3000&srsName=urn:x-ogc:def:crs:EPSG:4326" + }; + String [] protocols = {"WMS","WFS"}; + + metadataInserter.customMetaDataInsert(urls,protocols); + } + +} diff --git a/src/main/java/org/gcube/dataanalysis/geo/matrixmodel/RasterTable.java b/src/main/java/org/gcube/dataanalysis/geo/matrixmodel/RasterTable.java index 2185eeb..24bf89e 100644 --- a/src/main/java/org/gcube/dataanalysis/geo/matrixmodel/RasterTable.java +++ b/src/main/java/org/gcube/dataanalysis/geo/matrixmodel/RasterTable.java @@ -24,7 +24,7 @@ import org.hibernate.SessionFactory; public class RasterTable { private double valuesMatrix[][]; - private HashMap> valuesPropertiesMap; + public HashMap> valuesPropertiesMap; double x1; double x2; double y1; @@ -39,10 +39,10 @@ public class RasterTable { private String tablename = "rstr" + ("" + UUID.randomUUID()).replace("-", ""); // static String createTableStatement = "CREATE TABLE %1$s (id serial, csquarecode character varying, x real, y real, z real, t real, fvalue real)"; static String createTableStatementStandard = "CREATE TABLE %1$s (id serial, csquarecode character varying, x real, y real, z real, t real, fvalue character varying)"; - static String createTableStatementWithFields = "CREATE TABLE %1$s (id serial, approx_x real, approx_y real, z real, t real, %2$s)"; + static String createTableStatementWithFields = "CREATE TABLE %1$s (id serial, csquarecode character varying, approx_x real, approx_y real, z real, t real, %2$s)"; static String columnsnamesStandard = "csquarecode, x , y , z , t, fvalue"; - static String columnsnamesWithFields = "approx_x , approx_y , z , t , %1$s"; + static String columnsnamesWithFields = "csquarecode, approx_x , approx_y , z , t , %1$s"; public static String csquareColumn = "csquarecode"; public static String valuesColumn = "fvalue"; @@ -168,7 +168,7 @@ public class RasterTable { if (valuesPropertiesMap == null) sb.append("('" + csquare + "'," + x + "," + y + "," + zVal + "," + tVal + ",'" + valueForTable + "')"); else - sb.append("(" + x + "," + y + "," + zVal + "," + tVal + "," + valueForTable + ")"); + sb.append("('" + csquare + "',"+ x + "," + y + "," + zVal + "," + tVal + "," + valueForTable + ")"); } if (rowcounter % 5000 == 0) { // AnalysisLogger.getLogger().debug("Partial Inserting Buffer of " + sb.length() + " Values"); @@ -224,7 +224,7 @@ public class RasterTable { int m = valuesMap.size(); int i = 0; for (String keys : valuesMap.keySet()) { - sb.append(keys); + sb.append("f_"+keys); if (withtype) sb.append(" character varying"); if (i < m - 1) diff --git a/src/main/java/org/gcube/dataanalysis/geo/meta/GenericLayerMetadata.java b/src/main/java/org/gcube/dataanalysis/geo/meta/GenericLayerMetadata.java index b23c5d8..276cfad 100644 --- a/src/main/java/org/gcube/dataanalysis/geo/meta/GenericLayerMetadata.java +++ b/src/main/java/org/gcube/dataanalysis/geo/meta/GenericLayerMetadata.java @@ -81,7 +81,7 @@ public class GenericLayerMetadata { private String contactInfo = "support@d4science.org"; private String abstractField = ""; private String purpose = "Maps publication"; - private String author = "i-Marine"; + private String author = "D4Science"; private double res = 0.5d; private double xLL = -180; private double xRU = 180; @@ -296,7 +296,7 @@ public class GenericLayerMetadata { // layer keywords HashMap> descriptiveKeyWords = new HashMap>(); HashSet keySet = new HashSet(); - keySet.add("i-Marine"); + keySet.add("D4Science"); if (customTopics!=null) keySet.addAll(customTopics); diff --git a/src/main/java/org/gcube/dataanalysis/geo/test/maps/TestMapsComparison.java b/src/main/java/org/gcube/dataanalysis/geo/test/maps/TestMapsComparison.java index 789c06a..03f85fc 100644 --- a/src/main/java/org/gcube/dataanalysis/geo/test/maps/TestMapsComparison.java +++ b/src/main/java/org/gcube/dataanalysis/geo/test/maps/TestMapsComparison.java @@ -29,23 +29,27 @@ public class TestMapsComparison { // String layertitle2 = "FAO aquatic species distribution map of Teuthowenia megalops"; //{MEAN=1.0, VARIANCE=0.0, NUMBER_OF_ERRORS=38596, NUMBER_OF_COMPARISONS=260281, ACCURACY=85.17, MAXIMUM_ERROR=1.0, MAXIMUM_ERROR_POINT=3207:219:1, TREND=CONTRACTION, Resolution=0.5} - String layertitle = "Sarda orientalis"; - String layertitle2 = "FAO aquatic species distribution map of Sarda chiliensis"; - + //String layertitle = "Sarda orientalis"; + //String layertitle2 = "FAO aquatic species distribution map of Sarda chiliensis"; + + String layertitle2 = "4e5c1bbf-f5ce-4b66-a67c-14d7d9920aa0"; + String layertitle = "38b2eb74-1c07-4569-8a81-36ac2f973146"; AnalysisLogger.setLogger(cfg+AlgorithmConfiguration.defaultLoggerFile); AlgorithmConfiguration config = new AlgorithmConfiguration(); config.setConfigPath(cfg); + config.setGcubeScope("/gcube/devsec/devVRE"); config.setPersistencePath("./"); + config.setParam("DatabaseUserName","gcube"); config.setParam("DatabasePassword","d4science2"); config.setParam("DatabaseURL","jdbc:postgresql://localhost/testdb"); config.setParam("DatabaseDriver","org.postgresql.Driver"); config.setParam("Layer_1",layertitle); config.setParam("Layer_2",layertitle2); - config.setParam("ValuesComparisonThreshold","0.01"); + config.setParam("ValuesComparisonThreshold","0.1"); config.setParam("Z","0"); - config.setGcubeScope(null); + MapsComparator mc = new MapsComparator(); mc.setConfiguration(config);