Management of the Bio-Oracle and ASC layers

git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/data-analysis/EcologicalEngineGeoSpatialExtension@81692 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Gianpaolo Coro 2013-09-18 14:44:43 +00:00
parent 6ec736a82e
commit ed0f54443d
14 changed files with 5056 additions and 6 deletions

BIN
javaRasters.jar Normal file

Binary file not shown.

2166
ph.asc Normal file

File diff suppressed because one or more lines are too long

View File

@ -81,7 +81,7 @@
<artifactId>common-utils-encryption</artifactId>
<version>[1.0.2-SNAPSHOT,2.0.0-SNAPSHOT)</version>
</dependency>
<dependency>
<dependency>
<groupId>org.gcube.externals</groupId>
<artifactId>geo-utils-custom-opendap</artifactId>
<version>2.2.0</version>

View File

@ -60,7 +60,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";
return "An algorithm for comparing two OGC/NetCDF maps in seamless way to the user. Supported maps can only be in WFS, Opendap or ASC formats.";
}
@Override
@ -161,7 +161,9 @@ public class MapsComparator extends DataAnalysis {
if (resolution == 0)
resolution = 0.5d;
// I added the following control to limit the amount of calculations
if (resolution<0.01)
if (resolution<0.5 && resolution>0.01)
resolution = 0.5d;
else if (resolution<0.01)
resolution = 0.01d;
AnalysisLogger.getLogger().debug("MapsComparator: Evaluation Indeed at Resolution: " + resolution);

View File

@ -0,0 +1,673 @@
package org.gcube.dataanalysis.geo.batch;
import java.text.DateFormat;
import java.util.Date;
import org.gcube.dataanalysis.geo.meta.GenericLayerMetadata;
import org.opengis.metadata.identification.TopicCategory;
import com.ibm.icu.text.SimpleDateFormat;
public class BioOracleMetadataInsertDev {
static String geonetworkurl = "http://geoserver-dev2.d4science-ii.research-infrastructures.eu/geonetwork/";
// static String geonetworkurl = "http://geoserver-last.d4science-ii.research-infrastructures.eu/geonetwork/";
/*
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 = "admin";
public static void main(String[] args) throws Exception{
calcite();
chlorophyllMax();
chlorophyllMean();
chlorophyllMin();
chlorophyllRange();
cloudMax();
cloudMean();
cloudMin();
diffuseattenuationMax();
diffuseattenuationMean();
diffuseattenuationMin();
dissox();
nitrateMean();
parmax();
parmean();
ph();
phosphate();
salinity();
silicate();
sstmax();
sstmean();
sstmin();
sstrange();
}
private static void calcite() throws Exception{
GenericLayerMetadata metadataInserter = new GenericLayerMetadata();
metadataInserter.setGeonetworkUrl(geonetworkurl);
metadataInserter.setGeonetworkUser(user);
metadataInserter.setGeonetworkPwd(password);
metadataInserter.setTitle("Bio-Oracle Calcite Concentration (Mean)");
metadataInserter.setCategoryTypes("_"+TopicCategory.ENVIRONMENT.name()+"_");
metadataInserter.setResolution(0.083);
metadataInserter.setAbstractField("Mean Calcite concentration (mol/m^3). Aggregated between [2002-2009]. From Bio-Oracle: Tyberghein L., Verbruggen H., Pauly K., Troupin C., Mineur F. & De Clerck O. Bio-ORACLE: a global environmental dataset for marine species distribution modeling. Global Ecology and Biogeography. Hosted on the D4Science Thredds Catalog: http://thredds.research-infrastructures.eu/thredds/catalog/public/netcdf/catalog.xml");
metadataInserter.setCustomTopics("Mean Calcite concentration","D4Science","i-Marine","Bio-Oracle","Thredds","2D");
metadataInserter.setAuthor("D4Science");
SimpleDateFormat formatter = new SimpleDateFormat("yyyy");
Date datestart = formatter.parse("2002");
Date dateend = formatter.parse("2009");
metadataInserter.setStartDate(datestart);
metadataInserter.setEndDate(dateend);
String [] urls = {"http://thredds.research-infrastructures.eu/thredds/fileServer/public/netcdf/calcite.asc"};
String [] protocols = {"HTTP"};
metadataInserter.customMetaDataInsert(urls,protocols);
}
private static void chlorophyllMax() throws Exception{
GenericLayerMetadata metadataInserter = new GenericLayerMetadata();
metadataInserter.setGeonetworkUrl(geonetworkurl);
metadataInserter.setGeonetworkUser(user);
metadataInserter.setGeonetworkPwd(password);
metadataInserter.setTitle("Bio-Oracle Chlorophyll A Concentration (Max)");
metadataInserter.setCategoryTypes("_"+TopicCategory.ENVIRONMENT.name()+"_"+TopicCategory.OCEANS.name()+"_");
metadataInserter.setResolution(0.083);
metadataInserter.setAbstractField("Maximum Chlorophyll A Concentration (mg/m^3). Aggregated between [2002-2009]. From Bio-Oracle: Tyberghein L., Verbruggen H., Pauly K., Troupin C., Mineur F. & De Clerck O. Bio-ORACLE: a global environmental dataset for marine species distribution modeling. Global Ecology and Biogeography. Hosted on the D4Science Thredds Catalog: http://thredds.research-infrastructures.eu/thredds/catalog/public/netcdf/catalog.xml");
metadataInserter.setCustomTopics("Maximum Chlorophyll A Concentration","Chlorophyll","D4Science","i-Marine","Bio-Oracle","Thredds","2D");
metadataInserter.setAuthor("D4Science");
SimpleDateFormat formatter = new SimpleDateFormat("yyyy");
Date datestart = formatter.parse("2002");
Date dateend = formatter.parse("2009");
metadataInserter.setStartDate(datestart);
metadataInserter.setEndDate(dateend);
String [] urls = {"http://thredds.research-infrastructures.eu/thredds/fileServer/public/netcdf/chlomax.asc"};
String [] protocols = {"HTTP"};
metadataInserter.customMetaDataInsert(urls,protocols);
}
private static void chlorophyllMean() throws Exception{
GenericLayerMetadata metadataInserter = new GenericLayerMetadata();
metadataInserter.setGeonetworkUrl(geonetworkurl);
metadataInserter.setGeonetworkUser(user);
metadataInserter.setGeonetworkPwd(password);
metadataInserter.setTitle("Bio-Oracle Chlorophyll A Concentration (Mean)");
metadataInserter.setCategoryTypes("_"+TopicCategory.ENVIRONMENT.name()+"_"+TopicCategory.OCEANS.name()+"_");
metadataInserter.setResolution(0.083);
metadataInserter.setAbstractField("Mean Chlorophyll A Concentration (mg/m^3). Aggregated between [2002-2009]. From Bio-Oracle: Tyberghein L., Verbruggen H., Pauly K., Troupin C., Mineur F. & De Clerck O. Bio-ORACLE: a global environmental dataset for marine species distribution modeling. Global Ecology and Biogeography. Hosted on the D4Science Thredds Catalog: http://thredds.research-infrastructures.eu/thredds/catalog/public/netcdf/catalog.xml");
metadataInserter.setCustomTopics("Mean Chlorophyll A Concentration","Chlorophyll","D4Science","i-Marine","Bio-Oracle","Thredds","2D");
metadataInserter.setAuthor("D4Science");
SimpleDateFormat formatter = new SimpleDateFormat("yyyy");
Date datestart = formatter.parse("2002");
Date dateend = formatter.parse("2009");
metadataInserter.setStartDate(datestart);
metadataInserter.setEndDate(dateend);
String [] urls = {"http://thredds.research-infrastructures.eu/thredds/fileServer/public/netcdf/chlomean.asc"};
String [] protocols = {"HTTP"};
metadataInserter.customMetaDataInsert(urls,protocols);
}
private static void chlorophyllMin() throws Exception{
GenericLayerMetadata metadataInserter = new GenericLayerMetadata();
metadataInserter.setGeonetworkUrl(geonetworkurl);
metadataInserter.setGeonetworkUser(user);
metadataInserter.setGeonetworkPwd(password);
metadataInserter.setTitle("Bio-Oracle Chlorophyll A Concentration (Min)");
metadataInserter.setCategoryTypes("_"+TopicCategory.ENVIRONMENT.name()+"_"+TopicCategory.OCEANS.name()+"_");
metadataInserter.setResolution(0.083);
metadataInserter.setAbstractField("Minimum Chlorophyll A Concentration (mg/m^3). Aggregated between [2002-2009]. From Bio-Oracle: Tyberghein L., Verbruggen H., Pauly K., Troupin C., Mineur F. & De Clerck O. Bio-ORACLE: a global environmental dataset for marine species distribution modeling. Global Ecology and Biogeography. Hosted on the D4Science Thredds Catalog: http://thredds.research-infrastructures.eu/thredds/catalog/public/netcdf/catalog.xml");
metadataInserter.setCustomTopics("Minimum Chlorophyll A Concentration","Chlorophyll","D4Science","i-Marine","Bio-Oracle","Thredds","2D");
metadataInserter.setAuthor("D4Science");
SimpleDateFormat formatter = new SimpleDateFormat("yyyy");
Date datestart = formatter.parse("2002");
Date dateend = formatter.parse("2009");
metadataInserter.setStartDate(datestart);
metadataInserter.setEndDate(dateend);
String [] urls = {"http://thredds.research-infrastructures.eu/thredds/fileServer/public/netcdf/chlomin.asc"};
String [] protocols = {"HTTP"};
metadataInserter.customMetaDataInsert(urls,protocols);
}
private static void chlorophyllRange() throws Exception{
GenericLayerMetadata metadataInserter = new GenericLayerMetadata();
metadataInserter.setGeonetworkUrl(geonetworkurl);
metadataInserter.setGeonetworkUser(user);
metadataInserter.setGeonetworkPwd(password);
metadataInserter.setTitle("Bio-Oracle Chlorophyll A Concentration (Range)");
metadataInserter.setCategoryTypes("_"+TopicCategory.ENVIRONMENT.name()+"_"+TopicCategory.OCEANS.name()+"_");
metadataInserter.setResolution(0.083);
metadataInserter.setAbstractField("Range Chlorophyll A Concentration (mg/m^3). Aggregated between [2002-2009]. From Bio-Oracle: Tyberghein L., Verbruggen H., Pauly K., Troupin C., Mineur F. & De Clerck O. Bio-ORACLE: a global environmental dataset for marine species distribution modeling. Global Ecology and Biogeography. Hosted on the D4Science Thredds Catalog: http://thredds.research-infrastructures.eu/thredds/catalog/public/netcdf/catalog.xml");
metadataInserter.setCustomTopics("Range Chlorophyll A Concentration","Chlorophyll","D4Science","i-Marine","Bio-Oracle","Thredds","2D");
metadataInserter.setAuthor("D4Science");
SimpleDateFormat formatter = new SimpleDateFormat("yyyy");
Date datestart = formatter.parse("2002");
Date dateend = formatter.parse("2009");
metadataInserter.setStartDate(datestart);
metadataInserter.setEndDate(dateend);
String [] urls = {"http://thredds.research-infrastructures.eu/thredds/fileServer/public/netcdf/chlorange.asc"};
String [] protocols = {"HTTP"};
metadataInserter.customMetaDataInsert(urls,protocols);
}
private static void cloudMax() throws Exception{
GenericLayerMetadata metadataInserter = new GenericLayerMetadata();
metadataInserter.setGeonetworkUrl(geonetworkurl);
metadataInserter.setGeonetworkUser(user);
metadataInserter.setGeonetworkPwd(password);
metadataInserter.setTitle("Bio-Oracle Cloud Fraction (Max)");
metadataInserter.setCategoryTypes("_"+TopicCategory.CLIMATOLOGY_METEOROLOGY_ATMOSPHERE.name()+"_");
metadataInserter.setResolution(0.083);
metadataInserter.setAbstractField("Maximum Cloud Fraction (percentage). Aggregated between [2005-2010]. From Bio-Oracle: Tyberghein L., Verbruggen H., Pauly K., Troupin C., Mineur F. & De Clerck O. Bio-ORACLE: a global environmental dataset for marine species distribution modeling. Global Ecology and Biogeography. Hosted on the D4Science Thredds Catalog: http://thredds.research-infrastructures.eu/thredds/catalog/public/netcdf/catalog.xml");
metadataInserter.setCustomTopics("Maximum Cloud Fraction","Cloud Fraction","D4Science","i-Marine","Bio-Oracle","Thredds","2D");
metadataInserter.setAuthor("D4Science");
SimpleDateFormat formatter = new SimpleDateFormat("yyyy");
Date datestart = formatter.parse("2005");
Date dateend = formatter.parse("2010");
metadataInserter.setStartDate(datestart);
metadataInserter.setEndDate(dateend);
String [] urls = {"http://thredds.research-infrastructures.eu/thredds/fileServer/public/netcdf/cloudmax.asc"};
String [] protocols = {"HTTP"};
metadataInserter.customMetaDataInsert(urls,protocols);
}
private static void cloudMin() throws Exception{
GenericLayerMetadata metadataInserter = new GenericLayerMetadata();
metadataInserter.setGeonetworkUrl(geonetworkurl);
metadataInserter.setGeonetworkUser(user);
metadataInserter.setGeonetworkPwd(password);
metadataInserter.setTitle("Bio-Oracle Cloud Fraction (Min)");
metadataInserter.setCategoryTypes("_"+TopicCategory.CLIMATOLOGY_METEOROLOGY_ATMOSPHERE.name()+"_");
metadataInserter.setResolution(0.083);
metadataInserter.setAbstractField("Minimum Cloud Fraction (percentage). Aggregated between [2005-2010]. From Bio-Oracle: Tyberghein L., Verbruggen H., Pauly K., Troupin C., Mineur F. & De Clerck O. Bio-ORACLE: a global environmental dataset for marine species distribution modeling. Global Ecology and Biogeography. Hosted on the D4Science Thredds Catalog: http://thredds.research-infrastructures.eu/thredds/catalog/public/netcdf/catalog.xml");
metadataInserter.setCustomTopics("Minimum Cloud Fraction","Cloud Fraction","D4Science","i-Marine","Bio-Oracle","Thredds","2D");
metadataInserter.setAuthor("D4Science");
SimpleDateFormat formatter = new SimpleDateFormat("yyyy");
Date datestart = formatter.parse("2005");
Date dateend = formatter.parse("2010");
metadataInserter.setStartDate(datestart);
metadataInserter.setEndDate(dateend);
String [] urls = {"http://thredds.research-infrastructures.eu/thredds/fileServer/public/netcdf/cloudmin.asc"};
String [] protocols = {"HTTP"};
metadataInserter.customMetaDataInsert(urls,protocols);
}
private static void cloudMean() throws Exception{
GenericLayerMetadata metadataInserter = new GenericLayerMetadata();
metadataInserter.setGeonetworkUrl(geonetworkurl);
metadataInserter.setGeonetworkUser(user);
metadataInserter.setGeonetworkPwd(password);
metadataInserter.setTitle("Bio-Oracle Cloud Fraction (Mean)");
metadataInserter.setCategoryTypes("_"+TopicCategory.CLIMATOLOGY_METEOROLOGY_ATMOSPHERE.name()+"_");
metadataInserter.setResolution(0.083);
metadataInserter.setAbstractField("Mean Cloud Fraction (percentage). Aggregated between [2005-2010]. From Bio-Oracle: Tyberghein L., Verbruggen H., Pauly K., Troupin C., Mineur F. & De Clerck O. Bio-ORACLE: a global environmental dataset for marine species distribution modeling. Global Ecology and Biogeography. Hosted on the D4Science Thredds Catalog: http://thredds.research-infrastructures.eu/thredds/catalog/public/netcdf/catalog.xml");
metadataInserter.setCustomTopics("Mean Cloud Fraction","Cloud Fraction","D4Science","i-Marine","Bio-Oracle","Thredds","2D");
metadataInserter.setAuthor("D4Science");
SimpleDateFormat formatter = new SimpleDateFormat("yyyy");
Date datestart = formatter.parse("2005");
Date dateend = formatter.parse("2010");
metadataInserter.setStartDate(datestart);
metadataInserter.setEndDate(dateend);
String [] urls = {"http://thredds.research-infrastructures.eu/thredds/fileServer/public/netcdf/cloudmean.asc"};
String [] protocols = {"HTTP"};
metadataInserter.customMetaDataInsert(urls,protocols);
}
private static void diffuseattenuationMax() throws Exception{
GenericLayerMetadata metadataInserter = new GenericLayerMetadata();
metadataInserter.setGeonetworkUrl(geonetworkurl);
metadataInserter.setGeonetworkUser(user);
metadataInserter.setGeonetworkPwd(password);
metadataInserter.setTitle("Bio-Oracle Diffuse Attenuation Coefficient at 490mm (Max)");
metadataInserter.setCategoryTypes("_"+TopicCategory.ENVIRONMENT.name()+"_");
metadataInserter.setResolution(0.083);
metadataInserter.setAbstractField("Maximum Diffuse Attenuation Coefficient at 490mm (m^-1). Aggregated between [2002-2009]. From Bio-Oracle: Tyberghein L., Verbruggen H., Pauly K., Troupin C., Mineur F. & De Clerck O. Bio-ORACLE: a global environmental dataset for marine species distribution modeling. Global Ecology and Biogeography. Hosted on the D4Science Thredds Catalog: http://thredds.research-infrastructures.eu/thredds/catalog/public/netcdf/catalog.xml");
metadataInserter.setCustomTopics("Maximum Diffuse Attenuation Coefficient","Diffuse Attenuation Coefficient","D4Science","i-Marine","Bio-Oracle","Thredds","2D");
metadataInserter.setAuthor("D4Science");
SimpleDateFormat formatter = new SimpleDateFormat("yyyy");
Date datestart = formatter.parse("2002");
Date dateend = formatter.parse("2009");
metadataInserter.setStartDate(datestart);
metadataInserter.setEndDate(dateend);
String [] urls = {"http://thredds.research-infrastructures.eu/thredds/fileServer/public/netcdf/damax.asc"};
String [] protocols = {"HTTP"};
metadataInserter.customMetaDataInsert(urls,protocols);
}
private static void diffuseattenuationMean() throws Exception{
GenericLayerMetadata metadataInserter = new GenericLayerMetadata();
metadataInserter.setGeonetworkUrl(geonetworkurl);
metadataInserter.setGeonetworkUser(user);
metadataInserter.setGeonetworkPwd(password);
metadataInserter.setTitle("Bio-Oracle Diffuse Attenuation Coefficient at 490mm (Mean)");
metadataInserter.setCategoryTypes("_"+TopicCategory.ENVIRONMENT.name()+"_");
metadataInserter.setResolution(0.083);
metadataInserter.setAbstractField("Mean Diffuse Attenuation Coefficient at 490mm (m^-1). Aggregated between [2002-2009]. From Bio-Oracle: Tyberghein L., Verbruggen H., Pauly K., Troupin C., Mineur F. & De Clerck O. Bio-ORACLE: a global environmental dataset for marine species distribution modeling. Global Ecology and Biogeography. Hosted on the D4Science Thredds Catalog: http://thredds.research-infrastructures.eu/thredds/catalog/public/netcdf/catalog.xml");
metadataInserter.setCustomTopics("Mean Diffuse Attenuation Coefficient","Diffuse Attenuation Coefficient","D4Science","i-Marine","Bio-Oracle","Thredds","2D");
metadataInserter.setAuthor("D4Science");
SimpleDateFormat formatter = new SimpleDateFormat("yyyy");
Date datestart = formatter.parse("2002");
Date dateend = formatter.parse("2009");
metadataInserter.setStartDate(datestart);
metadataInserter.setEndDate(dateend);
String [] urls = {"http://thredds.research-infrastructures.eu/thredds/fileServer/public/netcdf/damean.asc"};
String [] protocols = {"HTTP"};
metadataInserter.customMetaDataInsert(urls,protocols);
}
private static void diffuseattenuationMin() throws Exception{
GenericLayerMetadata metadataInserter = new GenericLayerMetadata();
metadataInserter.setGeonetworkUrl(geonetworkurl);
metadataInserter.setGeonetworkUser(user);
metadataInserter.setGeonetworkPwd(password);
metadataInserter.setTitle("Bio-Oracle Diffuse Attenuation Coefficient at 490mm (Min)");
metadataInserter.setCategoryTypes("_"+TopicCategory.ENVIRONMENT.name()+"_");
metadataInserter.setResolution(0.083);
metadataInserter.setAbstractField("Minimum Diffuse Attenuation Coefficient at 490mm (m^-1). Aggregated between [2002-2009]. From Bio-Oracle: Tyberghein L., Verbruggen H., Pauly K., Troupin C., Mineur F. & De Clerck O. Bio-ORACLE: a global environmental dataset for marine species distribution modeling. Global Ecology and Biogeography. Hosted on the D4Science Thredds Catalog: http://thredds.research-infrastructures.eu/thredds/catalog/public/netcdf/catalog.xml");
metadataInserter.setCustomTopics("Minimum Diffuse Attenuation Coefficient","Diffuse Attenuation Coefficient","D4Science","i-Marine","Bio-Oracle","Thredds","2D");
metadataInserter.setAuthor("D4Science");
SimpleDateFormat formatter = new SimpleDateFormat("yyyy");
Date datestart = formatter.parse("2002");
Date dateend = formatter.parse("2009");
metadataInserter.setStartDate(datestart);
metadataInserter.setEndDate(dateend);
String [] urls = {"http://thredds.research-infrastructures.eu/thredds/fileServer/public/netcdf/damin.asc"};
String [] protocols = {"HTTP"};
metadataInserter.customMetaDataInsert(urls,protocols);
}
private static void dissox() throws Exception{
GenericLayerMetadata metadataInserter = new GenericLayerMetadata();
metadataInserter.setGeonetworkUrl(geonetworkurl);
metadataInserter.setGeonetworkUser(user);
metadataInserter.setGeonetworkPwd(password);
metadataInserter.setTitle("Bio-Oracle Dissolved Oxygen Concentration (Mean)");
metadataInserter.setCategoryTypes("_"+TopicCategory.ENVIRONMENT.name()+"_"+TopicCategory.OCEANS.name()+"_");
metadataInserter.setResolution(0.083);
metadataInserter.setAbstractField("Mean Dissolved Oxygen Concentration (ml/l). Aggregated between [1898-2009]. From Bio-Oracle: Tyberghein L., Verbruggen H., Pauly K., Troupin C., Mineur F. & De Clerck O. Bio-ORACLE: a global environmental dataset for marine species distribution modeling. Global Ecology and Biogeography. Hosted on the D4Science Thredds Catalog: http://thredds.research-infrastructures.eu/thredds/catalog/public/netcdf/catalog.xml");
metadataInserter.setCustomTopics("Mean Dissolved Oxygen Concentration","Dissolved Oxygen Concentration","D4Science","i-Marine","Bio-Oracle","Thredds","2D");
metadataInserter.setAuthor("D4Science");
SimpleDateFormat formatter = new SimpleDateFormat("yyyy");
Date datestart = formatter.parse("1898");
Date dateend = formatter.parse("2009");
metadataInserter.setStartDate(datestart);
metadataInserter.setEndDate(dateend);
String [] urls = {"http://thredds.research-infrastructures.eu/thredds/fileServer/public/netcdf/dissox.asc"};
String [] protocols = {"HTTP"};
metadataInserter.customMetaDataInsert(urls,protocols);
}
private static void nitrateMean() throws Exception{
GenericLayerMetadata metadataInserter = new GenericLayerMetadata();
metadataInserter.setGeonetworkUrl(geonetworkurl);
metadataInserter.setGeonetworkUser(user);
metadataInserter.setGeonetworkPwd(password);
metadataInserter.setTitle("Bio-Oracle Nitrate (Mean)");
metadataInserter.setCategoryTypes("_"+TopicCategory.ENVIRONMENT.name()+"_");
metadataInserter.setResolution(0.083);
metadataInserter.setAbstractField("Mean Nitrate (umol/l). Aggregated between [1928-2008]. From Bio-Oracle: Tyberghein L., Verbruggen H., Pauly K., Troupin C., Mineur F. & De Clerck O. Bio-ORACLE: a global environmental dataset for marine species distribution modeling. Global Ecology and Biogeography. Hosted on the D4Science Thredds Catalog: http://thredds.research-infrastructures.eu/thredds/catalog/public/netcdf/catalog.xml");
metadataInserter.setCustomTopics("Mean Nitrate","Nitrate","D4Science","i-Marine","Bio-Oracle","Thredds","2D");
metadataInserter.setAuthor("D4Science");
SimpleDateFormat formatter = new SimpleDateFormat("yyyy");
Date datestart = formatter.parse("1928");
Date dateend = formatter.parse("2008");
metadataInserter.setStartDate(datestart);
metadataInserter.setEndDate(dateend);
String [] urls = {"http://thredds.research-infrastructures.eu/thredds/fileServer/public/netcdf/nitrate.asc"};
String [] protocols = {"HTTP"};
metadataInserter.customMetaDataInsert(urls,protocols);
}
private static void parmax() throws Exception{
GenericLayerMetadata metadataInserter = new GenericLayerMetadata();
metadataInserter.setGeonetworkUrl(geonetworkurl);
metadataInserter.setGeonetworkUser(user);
metadataInserter.setGeonetworkPwd(password);
metadataInserter.setTitle("Bio-Oracle Photosynthetically Available Radiation (Max)");
metadataInserter.setCategoryTypes("_"+TopicCategory.ENVIRONMENT.name()+"_");
metadataInserter.setResolution(0.083);
metadataInserter.setAbstractField("Maximum Photosynthetically Available Radiation (Einstein/m^2/day). Aggregated between [1997-2009]. From Bio-Oracle: Tyberghein L., Verbruggen H., Pauly K., Troupin C., Mineur F. & De Clerck O. Bio-ORACLE: a global environmental dataset for marine species distribution modeling. Global Ecology and Biogeography. Hosted on the D4Science Thredds Catalog: http://thredds.research-infrastructures.eu/thredds/catalog/public/netcdf/catalog.xml");
metadataInserter.setCustomTopics("Maximum Photosynthetically Available Radiation","Photosynthetically Available Radiation","D4Science","i-Marine","Bio-Oracle","Thredds","2D");
metadataInserter.setAuthor("D4Science");
SimpleDateFormat formatter = new SimpleDateFormat("yyyy");
Date datestart = formatter.parse("1997");
Date dateend = formatter.parse("2009");
metadataInserter.setStartDate(datestart);
metadataInserter.setEndDate(dateend);
String [] urls = {"http://thredds.research-infrastructures.eu/thredds/fileServer/public/netcdf/parmax.asc"};
String [] protocols = {"HTTP"};
metadataInserter.customMetaDataInsert(urls,protocols);
}
private static void parmean() throws Exception{
GenericLayerMetadata metadataInserter = new GenericLayerMetadata();
metadataInserter.setGeonetworkUrl(geonetworkurl);
metadataInserter.setGeonetworkUser(user);
metadataInserter.setGeonetworkPwd(password);
metadataInserter.setTitle("Bio-Oracle Photosynthetically Available Radiation (Mean)");
metadataInserter.setCategoryTypes("_"+TopicCategory.ENVIRONMENT.name()+"_");
metadataInserter.setResolution(0.083);
metadataInserter.setAbstractField("Mean Photosynthetically Available Radiation (Einstein/m^2/day). Aggregated between [1997-2009]. From Bio-Oracle: Tyberghein L., Verbruggen H., Pauly K., Troupin C., Mineur F. & De Clerck O. Bio-ORACLE: a global environmental dataset for marine species distribution modeling. Global Ecology and Biogeography. Hosted on the D4Science Thredds Catalog: http://thredds.research-infrastructures.eu/thredds/catalog/public/netcdf/catalog.xml");
metadataInserter.setCustomTopics("Mean Photosynthetically Available Radiation","Photosynthetically Available Radiation","D4Science","i-Marine","Bio-Oracle","Thredds","2D");
metadataInserter.setAuthor("D4Science");
SimpleDateFormat formatter = new SimpleDateFormat("yyyy");
Date datestart = formatter.parse("1997");
Date dateend = formatter.parse("2009");
metadataInserter.setStartDate(datestart);
metadataInserter.setEndDate(dateend);
String [] urls = {"http://thredds.research-infrastructures.eu/thredds/fileServer/public/netcdf/parmean.asc"};
String [] protocols = {"HTTP"};
metadataInserter.customMetaDataInsert(urls,protocols);
}
private static void ph() throws Exception{
GenericLayerMetadata metadataInserter = new GenericLayerMetadata();
metadataInserter.setGeonetworkUrl(geonetworkurl);
metadataInserter.setGeonetworkUser(user);
metadataInserter.setGeonetworkPwd(password);
metadataInserter.setTitle("Bio-Oracle Ph (Mean)");
metadataInserter.setCategoryTypes("_"+TopicCategory.ENVIRONMENT.name()+"_"+TopicCategory.OCEANS.name()+"_");
metadataInserter.setResolution(0.083);
metadataInserter.setAbstractField("Mean Ph (unitless). Aggregated between [1910-2007]. From Bio-Oracle: Tyberghein L., Verbruggen H., Pauly K., Troupin C., Mineur F. & De Clerck O. Bio-ORACLE: a global environmental dataset for marine species distribution modeling. Global Ecology and Biogeography. Hosted on the D4Science Thredds Catalog: http://thredds.research-infrastructures.eu/thredds/catalog/public/netcdf/catalog.xml");
metadataInserter.setCustomTopics("Mean Ph","Ph","D4Science","i-Marine","Bio-Oracle","Thredds","2D");
metadataInserter.setAuthor("D4Science");
SimpleDateFormat formatter = new SimpleDateFormat("yyyy");
Date datestart = formatter.parse("1910");
Date dateend = formatter.parse("2007");
metadataInserter.setStartDate(datestart);
metadataInserter.setEndDate(dateend);
String [] urls = {"http://thredds.research-infrastructures.eu/thredds/fileServer/public/netcdf/ph.asc"};
String [] protocols = {"HTTP"};
metadataInserter.customMetaDataInsert(urls,protocols);
}
private static void phosphate() throws Exception{
GenericLayerMetadata metadataInserter = new GenericLayerMetadata();
metadataInserter.setGeonetworkUrl(geonetworkurl);
metadataInserter.setGeonetworkUser(user);
metadataInserter.setGeonetworkPwd(password);
metadataInserter.setTitle("Bio-Oracle Phosphate (Mean)");
metadataInserter.setCategoryTypes("_"+TopicCategory.ENVIRONMENT.name()+"_");
metadataInserter.setResolution(0.083);
metadataInserter.setAbstractField("Mean Phosphate (umol/l). Aggregated between [1922-1986]. From Bio-Oracle: Tyberghein L., Verbruggen H., Pauly K., Troupin C., Mineur F. & De Clerck O. Bio-ORACLE: a global environmental dataset for marine species distribution modeling. Global Ecology and Biogeography. Hosted on the D4Science Thredds Catalog: http://thredds.research-infrastructures.eu/thredds/catalog/public/netcdf/catalog.xml");
metadataInserter.setCustomTopics("Mean Phosphate","Phosphate","D4Science","i-Marine","Bio-Oracle","Thredds","2D");
metadataInserter.setAuthor("D4Science");
SimpleDateFormat formatter = new SimpleDateFormat("yyyy");
Date datestart = formatter.parse("1922");
Date dateend = formatter.parse("1986");
metadataInserter.setStartDate(datestart);
metadataInserter.setEndDate(dateend);
String [] urls = {"http://thredds.research-infrastructures.eu/thredds/fileServer/public/netcdf/phosphate.asc"};
String [] protocols = {"HTTP"};
metadataInserter.customMetaDataInsert(urls,protocols);
}
private static void salinity() throws Exception{
GenericLayerMetadata metadataInserter = new GenericLayerMetadata();
metadataInserter.setGeonetworkUrl(geonetworkurl);
metadataInserter.setGeonetworkUser(user);
metadataInserter.setGeonetworkPwd(password);
metadataInserter.setTitle("Bio-Oracle Salinity (Mean)");
metadataInserter.setCategoryTypes("_"+TopicCategory.ENVIRONMENT.name()+"_"+TopicCategory.OCEANS.name()+"_");
metadataInserter.setResolution(0.083);
metadataInserter.setAbstractField("Mean Salinity (PSS). Aggregated between [1961-2009]. From Bio-Oracle: Tyberghein L., Verbruggen H., Pauly K., Troupin C., Mineur F. & De Clerck O. Bio-ORACLE: a global environmental dataset for marine species distribution modeling. Global Ecology and Biogeography. Hosted on the D4Science Thredds Catalog: http://thredds.research-infrastructures.eu/thredds/catalog/public/netcdf/catalog.xml");
metadataInserter.setCustomTopics("Mean Salinity","Salinity","D4Science","i-Marine","Bio-Oracle","Thredds","2D");
metadataInserter.setAuthor("D4Science");
SimpleDateFormat formatter = new SimpleDateFormat("yyyy");
Date datestart = formatter.parse("1961");
Date dateend = formatter.parse("2009");
metadataInserter.setStartDate(datestart);
metadataInserter.setEndDate(dateend);
String [] urls = {"http://thredds.research-infrastructures.eu/thredds/fileServer/public/netcdf/salinity.asc"};
String [] protocols = {"HTTP"};
metadataInserter.customMetaDataInsert(urls,protocols);
}
private static void silicate() throws Exception{
GenericLayerMetadata metadataInserter = new GenericLayerMetadata();
metadataInserter.setGeonetworkUrl(geonetworkurl);
metadataInserter.setGeonetworkUser(user);
metadataInserter.setGeonetworkPwd(password);
metadataInserter.setTitle("Bio-Oracle Silicate (Mean)");
metadataInserter.setCategoryTypes("_"+TopicCategory.ENVIRONMENT.name()+"_");
metadataInserter.setResolution(0.083);
metadataInserter.setAbstractField("Mean Silicate (umol/l). Aggregated between [1930-2008]. From Bio-Oracle: Tyberghein L., Verbruggen H., Pauly K., Troupin C., Mineur F. & De Clerck O. Bio-ORACLE: a global environmental dataset for marine species distribution modeling. Global Ecology and Biogeography. Hosted on the D4Science Thredds Catalog: http://thredds.research-infrastructures.eu/thredds/catalog/public/netcdf/catalog.xml");
metadataInserter.setCustomTopics("Mean Silicate","Silicate","D4Science","i-Marine","Bio-Oracle","Thredds","2D");
metadataInserter.setAuthor("D4Science");
SimpleDateFormat formatter = new SimpleDateFormat("yyyy");
Date datestart = formatter.parse("1930");
Date dateend = formatter.parse("2008");
metadataInserter.setStartDate(datestart);
metadataInserter.setEndDate(dateend);
String [] urls = {"http://thredds.research-infrastructures.eu/thredds/fileServer/public/netcdf/silicate.asc"};
String [] protocols = {"HTTP"};
metadataInserter.customMetaDataInsert(urls,protocols);
}
private static void sstmax() throws Exception{
GenericLayerMetadata metadataInserter = new GenericLayerMetadata();
metadataInserter.setGeonetworkUrl(geonetworkurl);
metadataInserter.setGeonetworkUser(user);
metadataInserter.setGeonetworkPwd(password);
metadataInserter.setTitle("Bio-Oracle Sea Surface Temperature (Max)");
metadataInserter.setCategoryTypes("_"+TopicCategory.ENVIRONMENT.name()+"_"+TopicCategory.OCEANS.name()+"_");
metadataInserter.setResolution(0.083);
metadataInserter.setAbstractField("Maximum Sea Surface Temperature (°C). Aggregated between [2002-2009]. From Bio-Oracle: Tyberghein L., Verbruggen H., Pauly K., Troupin C., Mineur F. & De Clerck O. Bio-ORACLE: a global environmental dataset for marine species distribution modeling. Global Ecology and Biogeography. Hosted on the D4Science Thredds Catalog: http://thredds.research-infrastructures.eu/thredds/catalog/public/netcdf/catalog.xml");
metadataInserter.setCustomTopics("Maximum Sea Surface Temperature","Sea Surface Temperature","D4Science","i-Marine","Bio-Oracle","Thredds","2D");
metadataInserter.setAuthor("D4Science");
SimpleDateFormat formatter = new SimpleDateFormat("yyyy");
Date datestart = formatter.parse("2002");
Date dateend = formatter.parse("2009");
metadataInserter.setStartDate(datestart);
metadataInserter.setEndDate(dateend);
String [] urls = {"http://thredds.research-infrastructures.eu/thredds/fileServer/public/netcdf/sstmax.asc"};
String [] protocols = {"HTTP"};
metadataInserter.customMetaDataInsert(urls,protocols);
}
private static void sstmean() throws Exception{
GenericLayerMetadata metadataInserter = new GenericLayerMetadata();
metadataInserter.setGeonetworkUrl(geonetworkurl);
metadataInserter.setGeonetworkUser(user);
metadataInserter.setGeonetworkPwd(password);
metadataInserter.setTitle("Bio-Oracle Sea Surface Temperature (Mean)");
metadataInserter.setCategoryTypes("_"+TopicCategory.ENVIRONMENT.name()+"_"+TopicCategory.OCEANS.name()+"_");
metadataInserter.setResolution(0.083);
metadataInserter.setAbstractField("Mean Sea Surface Temperature (°C). Aggregated between [2002-2009]. From Bio-Oracle: Tyberghein L., Verbruggen H., Pauly K., Troupin C., Mineur F. & De Clerck O. Bio-ORACLE: a global environmental dataset for marine species distribution modeling. Global Ecology and Biogeography. Hosted on the D4Science Thredds Catalog: http://thredds.research-infrastructures.eu/thredds/catalog/public/netcdf/catalog.xml");
metadataInserter.setCustomTopics("Mean Sea Surface Temperature","Sea Surface Temperature","D4Science","i-Marine","Bio-Oracle","Thredds","2D");
metadataInserter.setAuthor("D4Science");
SimpleDateFormat formatter = new SimpleDateFormat("yyyy");
Date datestart = formatter.parse("2002");
Date dateend = formatter.parse("2009");
metadataInserter.setStartDate(datestart);
metadataInserter.setEndDate(dateend);
String [] urls = {"http://thredds.research-infrastructures.eu/thredds/fileServer/public/netcdf/sstmean.asc"};
String [] protocols = {"HTTP"};
metadataInserter.customMetaDataInsert(urls,protocols);
}
private static void sstmin() throws Exception{
GenericLayerMetadata metadataInserter = new GenericLayerMetadata();
metadataInserter.setGeonetworkUrl(geonetworkurl);
metadataInserter.setGeonetworkUser(user);
metadataInserter.setGeonetworkPwd(password);
metadataInserter.setTitle("Bio-Oracle Sea Surface Temperature (Min)");
metadataInserter.setCategoryTypes("_"+TopicCategory.ENVIRONMENT.name()+"_"+TopicCategory.OCEANS.name()+"_");
metadataInserter.setResolution(0.083);
metadataInserter.setAbstractField("Minimum Sea Surface Temperature (°C). Aggregated between [2002-2009]. From Bio-Oracle: Tyberghein L., Verbruggen H., Pauly K., Troupin C., Mineur F. & De Clerck O. Bio-ORACLE: a global environmental dataset for marine species distribution modeling. Global Ecology and Biogeography. Hosted on the D4Science Thredds Catalog: http://thredds.research-infrastructures.eu/thredds/catalog/public/netcdf/catalog.xml");
metadataInserter.setCustomTopics("Minimum Sea Surface Temperature","Sea Surface Temperature","D4Science","i-Marine","Bio-Oracle","Thredds","2D");
metadataInserter.setAuthor("D4Science");
SimpleDateFormat formatter = new SimpleDateFormat("yyyy");
Date datestart = formatter.parse("2002");
Date dateend = formatter.parse("2009");
metadataInserter.setStartDate(datestart);
metadataInserter.setEndDate(dateend);
String [] urls = {"http://thredds.research-infrastructures.eu/thredds/fileServer/public/netcdf/sstmin.asc"};
String [] protocols = {"HTTP"};
metadataInserter.customMetaDataInsert(urls,protocols);
}
private static void sstrange() throws Exception{
GenericLayerMetadata metadataInserter = new GenericLayerMetadata();
metadataInserter.setGeonetworkUrl(geonetworkurl);
metadataInserter.setGeonetworkUser(user);
metadataInserter.setGeonetworkPwd(password);
metadataInserter.setTitle("Bio-Oracle Sea Surface Temperature (Range)");
metadataInserter.setCategoryTypes("_"+TopicCategory.ENVIRONMENT.name()+"_"+TopicCategory.OCEANS.name()+"_");
metadataInserter.setResolution(0.083);
metadataInserter.setAbstractField("Range Sea Surface Temperature (°C). Aggregated between [2002-2009]. From Bio-Oracle: Tyberghein L., Verbruggen H., Pauly K., Troupin C., Mineur F. & De Clerck O. Bio-ORACLE: a global environmental dataset for marine species distribution modeling. Global Ecology and Biogeography. Hosted on the D4Science Thredds Catalog: http://thredds.research-infrastructures.eu/thredds/catalog/public/netcdf/catalog.xml");
metadataInserter.setCustomTopics("Range Sea Surface Temperature","Sea Surface Temperature","D4Science","i-Marine","Bio-Oracle","Thredds","2D");
metadataInserter.setAuthor("D4Science");
SimpleDateFormat formatter = new SimpleDateFormat("yyyy");
Date datestart = formatter.parse("2002");
Date dateend = formatter.parse("2009");
metadataInserter.setStartDate(datestart);
metadataInserter.setEndDate(dateend);
String [] urls = {"http://thredds.research-infrastructures.eu/thredds/fileServer/public/netcdf/sstrange.asc"};
String [] protocols = {"HTTP"};
metadataInserter.customMetaDataInsert(urls,protocols);
}
}

View File

@ -144,6 +144,10 @@ public class FeaturesManager {
return innerlayername;
}
public String getHttpLink(Metadata meta) {
return searchInUrl(meta, "http");
}
public String getWFSLink(Metadata meta) {
return searchInUrl(meta, "service=wfs");
}
@ -194,7 +198,12 @@ public class FeaturesManager {
public boolean isThreddsFile(Metadata meta) {
return (getOpenDapLink(meta) != null);
}
public boolean isAscFile(Metadata meta) {
String httplink = getHttpLink(meta);
return (httplink!=null && (httplink.endsWith(".asc")||httplink.endsWith(".ASC")));
}
public GeoNetworkReader initGeoNetworkReader() throws Exception {
AnalysisLogger.getLogger().debug("Features Manager: configuring GeoNetwork");
if (scope!=null)

View File

@ -11,6 +11,7 @@ import org.gcube.dataanalysis.ecoengine.configuration.AlgorithmConfiguration;
import org.gcube.dataanalysis.ecoengine.signals.SignalProcessing;
import org.gcube.dataanalysis.ecoengine.utils.Tuple;
import org.gcube.dataanalysis.geo.meta.features.FeaturesManager;
import org.gcube.dataanalysis.geo.utils.AscDataExplorer;
import org.gcube.dataanalysis.geo.utils.EnvDataExplorer;
import org.gcube.dataanalysis.geo.utils.FeaturedPolygon;
import org.gcube.dataanalysis.geo.utils.ThreddsDataExplorer;
@ -98,7 +99,16 @@ public class GeoIntersector {
featuresSets.add(features);
}
*/
} else {
}
else if (featurer.isAscFile(meta)){
AnalysisLogger.getLogger().debug("managing ASC File");
String remoteFile = featurer.getHttpLink(meta);
AscDataExplorer asc = new AscDataExplorer(remoteFile);
features = asc.retrieveDataFromAsc(triplets);
AnalysisLogger.getLogger().debug("ASC File managed");
}
else {
AnalysisLogger.getLogger().debug("found a Geo Layer with reference " + layerTitle + " and layer name " + layer);
// AnalysisLogger.getLogger().debug("Taking point: (" + x + "," + y + ")");
List<FeaturedPolygon> featuresInTime = new ArrayList<FeaturedPolygon>();

View File

@ -33,6 +33,7 @@ public class TestLayersRetrieval {
for (Metadata meta:metae){
Identification id = meta.getIdentificationInfo().iterator().next();
String title = id.getCitation().getTitle().toString();
String abstractF = id.getAbstract().toString();
DefaultDataIdentification did = (DefaultDataIdentification) id;
double resolution = MathFunctions.roundDecimal(did.getSpatialResolutions().iterator().next().getDistance(),3);
@ -45,7 +46,31 @@ public class TestLayersRetrieval {
unit = ss.substring(ss.indexOf(":")+1);
}
}
String[] elements = parseTitle(title);
String[] elements =null;
if (title.contains("Bio-Oracle"))
{
elements = new String[4];
elements[0]=title;
elements[1]=abstractF.substring(abstractF.indexOf("Aggregated"),abstractF.lastIndexOf("]")+1);
elements[2]="2D";
unit = abstractF.substring(abstractF.indexOf("(")+1,abstractF.lastIndexOf(")"));
elements[3]=abstractF;
}
else if (title.contains("GEBCO"))
{
elements = new String[4];
elements[0]=title;
elements[1]="2008";
elements[2]="3D";
unit = "m";
elements[3]=abstractF;
}
else if (title.contains("WorldClimBio")||title.contains("Etna")||title.contains("OpenModeller"))
{
continue;
}
else
elements = parseTitle(title);
String entry = elements[0]+d+elements[1]+d+elements[2]+d+unit+d+resolution+d+elements[3];
if (!table.contains(entry)){
table.add(entry);
@ -68,6 +93,7 @@ public class TestLayersRetrieval {
}
public static String[] parseTitle(String title){
// System.out.println("Parsing Title:"+title);
String timerange = title.substring(title.indexOf("["),title.lastIndexOf("]")+1);
// timerange = timerange.replace("] to [", " ; ");
// System.out.println(timerange);

View File

@ -0,0 +1,46 @@
package org.gcube.dataanalysis.geo.test.maps;
import java.util.List;
import org.gcube.dataanalysis.ecoengine.configuration.AlgorithmConfiguration;
import org.gcube.dataanalysis.ecoengine.interfaces.ComputationalAgent;
import org.gcube.dataanalysis.ecoengine.interfaces.Evaluator;
import org.gcube.dataanalysis.ecoengine.processing.factories.EvaluatorsFactory;
import org.gcube.dataanalysis.ecoengine.test.regression.Regressor;
public class TestMapsComparisonASCFiles {
/**
* example of parallel processing on a single machine the procedure will generate a new table for a distribution on suitable species
*
*/
public static void main(String[] args) throws Exception {
List<ComputationalAgent> evaluators = EvaluatorsFactory.getEvaluators(testConfig1());
evaluators.get(0).init();
Regressor.process(evaluators.get(0));
evaluators = null;
}
private static AlgorithmConfiguration testConfig1() {
AlgorithmConfiguration config = Regressor.getConfig();
config.setNumberOfResources(1);
config.setConfigPath("./cfg");
config.setPersistencePath("./");
config.setAgent("MAPS_COMPARISON");
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","Bio-Oracle Chlorophyll A Concentration (Mean)");
config.setParam("Layer_2","Bio-Oracle Chlorophyll A Concentration (Max)");
config.setParam("ValuesComparisonThreshold",""+0.1);
config.setParam("Z","0");
config.setGcubeScope("/gcube");
return config;
}
}

View File

@ -0,0 +1,162 @@
package org.gcube.dataanalysis.geo.utils;
import java.util.ArrayList;
import java.util.List;
import org.gcube.contentmanagement.lexicalmatcher.utils.AnalysisLogger;
import org.gcube.dataanalysis.ecoengine.utils.Tuple;
public class AscDataExplorer {
public double xOrigin;
public double yOrigin;
public int ncolumns;
public int nrows;
public double cellsize;
AscRaster ascFile;
public AscDataExplorer(String file) throws Exception{
AnalysisLogger.getLogger().debug("Managing Asc File: "+file);
AscRasterReader reader = new AscRasterReader();
int i=0;
while(i<10){
try{
ascFile = reader.readRaster(file);
break;
}catch(Exception e){
AnalysisLogger.getLogger().debug("Error in reading remote file: "+file);
}
i++;
}
if (i==10)
throw new Exception("Reading Timeout for the file "+file);
xOrigin=ascFile.getXll();
yOrigin=ascFile.getYll();
ncolumns = ascFile.getCols();
nrows = ascFile.getRows();
cellsize = ascFile.getCellsize();
AnalysisLogger.getLogger().debug("Origin: "+xOrigin+","+yOrigin);
AnalysisLogger.getLogger().debug("Cellsize: "+cellsize);
AnalysisLogger.getLogger().debug("Rows: "+nrows+" Cols:"+ncolumns);
}
public int longitude2Index (double longitude){
return (int)Math.round((longitude-xOrigin)/cellsize);
}
public int latitude2Index (double latitude){
return (int) Math.round((latitude-yOrigin)/cellsize);
}
public List<Double> retrieveDataFromAsc( List<Tuple<Double>> triplets){
List<Double> values = new ArrayList<Double>();
for (Tuple<Double> triplet:triplets){
double x = triplet.getElements().get(0);
double y = triplet.getElements().get(1);
int j = longitude2Index(x);
int i = latitude2Index(y);
if (j>ncolumns){
AnalysisLogger.getLogger().debug("Warning: Column Overflow: adjusting!");
AnalysisLogger.getLogger().debug("Overflow: y:"+y+","+"x:"+x);
AnalysisLogger.getLogger().debug("Overflow: iy:"+i+","+"jx:"+j);
j=ncolumns;
}
if (i>nrows){
AnalysisLogger.getLogger().debug("Warning: Row Overflow: adjusting!");
AnalysisLogger.getLogger().debug("Overflow: y:"+y+","+"x:"+x);
AnalysisLogger.getLogger().debug("Overflow: iy:"+i+","+"jx:"+j);
i=nrows;
}
//AnalysisLogger.getLogger().debug("y:"+y+","+"x:"+x);
//AnalysisLogger.getLogger().debug("iy:"+i+","+"jx:"+j);
double value = ascFile.getValue(i, j);
values.add(value);
}
return values;
}
public static void testReaders() throws Exception {
/*
// File file = new File("http://thredds.d4science.org/thredds/fileServer/public/netcdf/sstrange.tiff");
File file = new File("sstrange.tiff");
AbstractGridFormat format = new GeoTiffFormat();
StringBuilder buffer = new StringBuilder();
buffer.append(file.getAbsolutePath()).append("\n");
// Object o = file.toURI().toURL();
Object o = file;
if (format.accepts(o)) {
buffer.append("ACCEPTED").append("\n");
// getting a reader
GeoTiffReader reader = new GeoTiffReader(o, new Hints(Hints.FORCE_LONGITUDE_FIRST_AXIS_ORDER, Boolean.TRUE));
if (reader != null) {
// reading the coverage
GridCoverage2D coverage = (GridCoverage2D) reader.read(null);
buffer.append("CRS: ").append(coverage.getCoordinateReferenceSystem2D().toWKT()).append("\n");
buffer.append("GG: ").append(coverage.getGridGeometry().toString()).append("\n");
// display metadata
IIOMetadataDumper iIOMetadataDumper = new IIOMetadataDumper(((GeoTiffReader) reader).getMetadata().getRootNode());
buffer.append("TIFF metadata: ").append(iIOMetadataDumper.getMetadata()).append("\n");
coverage.show();
// PlanarImage.wrapRenderedImage(coverage.getRenderedImage()).getTiles();
}
else
buffer.append("NOT ACCEPTED").append("\n");
}
*/
/*
GeoTiff gt = new GeoTiff("sstrange.tiff");
gt.read();
System.out.println(gt.showInfo());
gt.close();
*/
// GridDataset gds = ucar.nc2.dt.grid.GridDataset.open("sstrange.tiff");
// List<GridDatatype> gridTypes = gds.getGrids();
// GridDatatype grid = gds.findGridDatatype(gdt.getName());
// GridCoordSystem gcs = grid.getCoordinateSystem();
AscRasterReader reader = new AscRasterReader();
AscRaster r1 = reader.readRaster( "ph.asc" );
System.out.println("center:"+r1.getXll()+","+r1.getYll());
System.out.println("cols:"+r1.getCols());
System.out.println("data:"+r1.getValue(1, 1));
}
/*
public void testBandNames() throws Exception {
final File file = TestData.file(GeoTiffReaderTest.class, "wind.tiff");
assertNotNull(file);
final AbstractGridFormat format = new GeoTiffFormat();
GridCoverage2D coverage = format.getReader(file).read(null);
String band1Name = coverage.getSampleDimension(0).getDescription().toString();
String band2Name = coverage.getSampleDimension(1).getDescription().toString();
assertEquals("Band1", band1Name);
assertEquals("Band2", band2Name);
}
*/
public static void main(String[] args) throws Exception {
AscDataExplorer ade = new AscDataExplorer("http://thredds.d4science.org/thredds/fileServer/public/netcdf/ph.asc");
List<Tuple<Double>> triplets = new ArrayList<Tuple<Double>>();
triplets.add(new Tuple<Double>(-180d,-90d));
triplets.add(new Tuple<Double>(0d,0d));
triplets.add(new Tuple<Double>(180d,90d));
List<Double> values = ade.retrieveDataFromAsc(triplets);
for (Double value:values){
AnalysisLogger.getLogger().debug("val:"+value);
}
}
}

View File

@ -0,0 +1,260 @@
package org.gcube.dataanalysis.geo.utils;
import java.util.Arrays;
/**
* Represents my best guess at the ESRI ASCII raster format. I couldn't find
* any sensible documentation, so it supports the following features:
* <ul>
* <li>cellsize, xll and xll are stored as doubles, and largely ignored
* <li>NDATA has a string representation (as it is typically read in from an
* ascii string) and is internally represented as Double.NaN, as this is safer and
* easier to deal with than the -9999 found in most rasters.
* </ul>
* @author dmrust
*
*/
public class AscRaster
{
protected double[][] data;
protected double xll;
protected double yll;
protected double cellsize;
protected int cols;
protected int rows;
protected String NDATA;
public static final String DEFAULT_NODATA = "-9999";
public void print()
{
System.out.println( "Rows: " + rows + " cols: " + cols + " cellsize " + cellsize );
for( double[] row : data )
{
for( double val : row )
System.out.print( val + " " );
System.out.println( "" );
}
}
/**
* Creates an empty raster
*/
public AscRaster()
{
}
/**
* Creates a raster from the given data
* @param cellsize
* @param xll
* @param yll
*/
public AscRaster( double cellsize, double xll, double yll )
{
this();
setCellsize( cellsize );
setXll( xll );
setYll( yll );
}
/**
* Creates a raster from the given data
* @param data
* @param cellsize
* @param xll
* @param yll
*/
public AscRaster( double[][] data, double cellsize, double xll, double yll )
{
this(cellsize, xll, yll);
setData( data );
}
/**
* Creates a raster from the given data
* @param data
* @param cellsize
* @param xll
* @param yll
*/
public AscRaster( int[][] data, double cellsize, double xll, double yll )
{
this(cellsize, xll, yll);
setData( data );
}
public static AscRaster getTempRaster( double[][] data, double xll, double yll, double size )
{
return getTempRaster( data, xll, yll, size, DEFAULT_NODATA );
}
public static AscRaster getTempRaster( double[][] data, double xll, double yll, double size, String ndata )
{
AscRaster a = new AscRaster();
a.data = data;
a.xll = xll;
a.yll = yll;
a.cellsize = size;
a.NDATA = ndata;
a.rows = data.length;
a.cols = data[0].length;
return a;
}
/**
* Sets the parameters of this raster (rows, columns, corner, cellsize, NDATA etc)
* to be the same as the other raster. This includes initialising the data array
* with NDATAs
* @param other
*/
public void init( AscRaster other )
{
xll = other.xll;
yll = other.yll;
cellsize = other.cellsize;
NDATA = other.NDATA;
setSize( other.getRows(), other.getCols() );
}
/**
* Initialises the Raster to Double.NaN (i.e. NDATA)
*/
public void initData()
{
initData( Double.NaN );
}
/**
* Initialises the raster so the entire data array contains 'value'
* @param value
*/
public void initData( double value )
{
data = new double[rows][];
for( int i = 0; i < rows; i++ )
{
data[i] = new double[cols];
Arrays.fill( data[i], value );
}
}
/**
* Returns the underlying data array - NOTE: this is *NOT* a copy, if you
* change it, you change the data
* @return the data array
*/
public double[][] getData()
{
return data;
}
public void setValue( int row, int column, double value )
{
if( row < rows && column < cols )
data[row][column] = value;
}
public double getValue( int row, int column )
{
if( row < rows && column < cols )
return data[row][column];
return Double.NaN;
}
/**
* Copies the given data into the underlying data array. Also updates the number of rows and columns.
* @param data
*/
public void setData( double[][] data )
{
rows = data.length;
cols = data[0].length;
initData();
for( int i = 0; i < rows; i++ )
for( int j = 0; j < cols; j++ )
this.data[i][j] = data[i][j];
}
/**
* Copies the given data into the underlying data array. Also updates the number of rows and columns.
* @param data
*/
public void setData( int[][] data )
{
rows = data.length;
cols = data[0].length;
initData();
for( int i = 0; i < rows; i++ )
for( int j = 0; j < cols; j++ )
this.data[i][j] = data[i][j];
}
public double getXll()
{
return xll;
}
public void setXll( double xll )
{
this.xll = xll;
}
public double getYll()
{
return yll;
}
public void setYll( double yll )
{
this.yll = yll;
}
public double getCellsize()
{
return cellsize;
}
public void setCellsize( double cellsize )
{
this.cellsize = cellsize;
}
public int getCols()
{
return cols;
}
public int getRows()
{
return rows;
}
/**
* Sets the size of the raster, and also initialises the array
* with NDATA
* @param nrows
* @param columns
*/
public void setSize( int nrows, int columns )
{
this.rows = nrows;
this.cols = columns;
initData();
}
public String getNDATA()
{
return NDATA;
}
public void setNDATA( String nDATA )
{
NDATA = nDATA;
}
}

View File

@ -0,0 +1,122 @@
package org.gcube.dataanalysis.geo.utils;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* A class which reads an ESRI ASCII raster file into a Raster
* @author dmrust
*
*/
public class AscRasterReader
{
String noData = AscRaster.DEFAULT_NODATA;
Pattern header = Pattern.compile( "^(\\w+)\\s+(-?\\d+(.\\d+)?)");
public static void main( String[] args ) throws IOException
{
AscRasterReader rt = new AscRasterReader();
rt.readRaster( "data/test.asc" );
}
/**
* The most useful method - reads a raster file, and returns a Raster object.
*
* Throws standard IOExceptions associated with opening and reading files, and
* RuntimeExceptions if there are problems with the file format
* @param filename
* @return the Raster object read in from the file
* @throws IOException
*/
public AscRaster readRaster( String filename ) throws IOException, RuntimeException
{
AscRaster raster = new AscRaster();
BufferedReader input = null;
URLConnection urlConn =null;
if (filename.startsWith("http")){
URL fileurl = new URL(filename);
urlConn = fileurl.openConnection();
urlConn.setConnectTimeout(60000);
urlConn.setReadTimeout(60000);
urlConn.setAllowUserInteraction(false);
urlConn.setDoOutput(true);
input = new BufferedReader(new InputStreamReader(urlConn.getInputStream()));
}
else
input = new BufferedReader( new FileReader( filename ) );
while( input.ready() )
{
String line = input.readLine();
Matcher headMatch = header.matcher( line );
//Match all the heads
if( headMatch.matches() )
{
String head = headMatch.group( 1 );
String value = headMatch.group( 2 );
if( head.equalsIgnoreCase( "nrows" ) )
raster.rows = Integer.parseInt( value );
else if ( head.equalsIgnoreCase( "ncols" ) )
raster.cols = Integer.parseInt( value );
else if ( head.equalsIgnoreCase( "xllcorner" ) )
raster.xll = Double.parseDouble( value );
else if ( head.equalsIgnoreCase( "yllcorner" ) )
raster.yll = Double.parseDouble( value );
else if ( head.equalsIgnoreCase( "NODATA_value" ) )
raster.NDATA = value;
else if ( head.equals( "cellsize" ) )
raster.cellsize = Double.parseDouble( value );
else
System.out.println( "Unknown setting: " + line );
}
else if( line.matches( "^-?\\d+.*" ))
{
//System.out.println( "Processing data section");
//Check that data is set up!
//Start processing numbers!
int row = 0;
double[][] data = new double[raster.rows][];
while( true )
{
//System.out.println( "Got data row: " + line );
String[] inData = line.split( "\\s+" );
double[] numData = new double[raster.cols];
if( inData.length != numData.length ) throw new RuntimeException( "Wrong number of columns: Expected " +
raster.cols + " got " + inData.length + " for line \n" + line );
for( int col = 0; col < raster.cols; col ++ )
{
if( inData[col].equals( noData )) numData[col] = Double.NaN;
else numData[col] = Double.parseDouble( inData[col] );
}
data[row] = numData;
//Ugly backward input structure...
if( input.ready() ) line = input.readLine();
else break;
row++;
}
if( row != raster.rows - 1)
throw new RuntimeException( "Wrong number of rows: expected " + raster.rows + " got " + (row+1) );
raster.data = data;
}
else
{
if( line.length() >= 0 && ! line.matches( "^\\s*$" ))
System.out.println( "Unknown line: " + line);
}
}
if (input!=null){
input.close();
if (urlConn!=null && urlConn.getInputStream()!=null)
urlConn.getInputStream().close();
}
return raster;
}
}

1574
sstrange.asc Normal file

File diff suppressed because one or more lines are too long

BIN
sstrange.tiff Normal file

Binary file not shown.