|
From: <rob...@us...> - 2010-07-13 23:12:56
|
Revision: 74
http://netcdftools.svn.sourceforge.net/netcdftools/?rev=74&view=rev
Author: robertbridle
Date: 2010-07-13 23:12:49 +0000 (Tue, 13 Jul 2010)
Log Message:
-----------
ANDSWRON-665 - Place IPCC standard model names as metadata in the netCDF files.
Modified Paths:
--------------
trunk/launch/ScenarioCConverter-AllData.launch
trunk/launch/ScenarioCConverter.launch
trunk/src/main/java/au/csiro/netcdf/wron/MdbsyScenarioCConverter.java
Modified: trunk/launch/ScenarioCConverter-AllData.launch
===================================================================
--- trunk/launch/ScenarioCConverter-AllData.launch 2010-07-13 06:36:28 UTC (rev 73)
+++ trunk/launch/ScenarioCConverter-AllData.launch 2010-07-13 23:12:49 UTC (rev 74)
@@ -8,7 +8,7 @@
</listAttribute>
<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.maven.ide.eclipse.launchconfig.classpathProvider"/>
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="au.csiro.netcdf.wron.MdbsyScenarioCConverter"/>
-<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="--lookupFile "C:\dev\scenC\unq_cells_dem9s2rc.csv_corLat_regions.csv" --inputDirectory "U:\_ScenarioC_RRModellingData\cccma_t47\High_Global_Warming\\" --outputDirectory "C:\dev\scenC\output\\" --metadataFile "C:\dev\scenC\attributes.txt" --scenario "Scenario-C" --model "Model-ccma_t47" --case "Case-High" -r 2 --decade --latitude"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="--lookupFile "C:\dev\scenC\unq_cells_dem9s2rc.csv_corLat_regions.csv" --inputDirectory "U:\_ScenarioC_RRModellingData\cccma_t47\High_Global_Warming\\" --outputDirectory "C:\dev\scenC\output\\" --metadataFile "C:\dev\scenC\attributes.txt" --scenario "Scenario-C" --model "Model-cccma_t47" --case "Case-High" -r 2 --decade --latitude"/>
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="netcdf-tools"/>
<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.maven.ide.eclipse.launchconfig.sourcepathProvider"/>
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xmx1500m -Xms800m"/>
Modified: trunk/launch/ScenarioCConverter.launch
===================================================================
--- trunk/launch/ScenarioCConverter.launch 2010-07-13 06:36:28 UTC (rev 73)
+++ trunk/launch/ScenarioCConverter.launch 2010-07-13 23:12:49 UTC (rev 74)
@@ -8,7 +8,7 @@
</listAttribute>
<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.maven.ide.eclipse.launchconfig.classpathProvider"/>
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="au.csiro.netcdf.wron.MdbsyScenarioCConverter"/>
-<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="--lookupFile "C:\dev\scenC\unq_cells_dem9s2rc.csv_corLat_regions.csv" --inputDirectory "U:\_ScenarioC_RRModellingData\cccma_t47\High_Global_Warming\\" --outputDirectory "C:\dev\scenC\output\\" --metadataFile "C:\dev\scenC\attributes.txt" --scenario "Scenario-C" --model "Model-ccma_t47" --case "Case-High" -r 250 --decade --latitude"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="--lookupFile "C:\dev\scenC\unq_cells_dem9s2rc.csv_corLat_regions.csv" --inputDirectory "U:\_ScenarioC_RRModellingData\cccma_t47\High_Global_Warming\\" --outputDirectory "C:\dev\scenC\output\\" --metadataFile "C:\dev\scenC\attributes.txt" --scenario "Scenario-C" --model "Model-cccma_t47" --case "Case-High" -r 250 --latitude"/>
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="netcdf-tools"/>
<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.maven.ide.eclipse.launchconfig.sourcepathProvider"/>
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xmx1500m -Xms800m"/>
Modified: trunk/src/main/java/au/csiro/netcdf/wron/MdbsyScenarioCConverter.java
===================================================================
--- trunk/src/main/java/au/csiro/netcdf/wron/MdbsyScenarioCConverter.java 2010-07-13 06:36:28 UTC (rev 73)
+++ trunk/src/main/java/au/csiro/netcdf/wron/MdbsyScenarioCConverter.java 2010-07-13 23:12:49 UTC (rev 74)
@@ -82,7 +82,7 @@
// netCDF file naming components
private static String COLLECTION = "Collection-MDBSY_Climate";
private static String SCENARIO = "";
- private static String MODEL = "";
+ private static String[] MODEL_NAMES;
private static String CASE = "";
/**
@@ -94,7 +94,7 @@
* The file containing the metadata attributes (if any).
*/
private static String METADATA_FILE = "";
-
+
/**
* The directory containing the Scenario C csv data files.
*/
@@ -114,6 +114,34 @@
* Encoding used to fill variables.
*/
private static final String ENCODING = "UTF-8";
+
+ /**
+ * The 15 climate models used in the MDBSY project.
+ */
+ private static Map<String, String> CLIMATE_MODELS = new HashMap<String, String>();
+ static
+ {
+ CLIMATE_MODELS.put("cccma_t47", "CCCMA T47");
+ CLIMATE_MODELS.put("cccma_t63", "CCCMA T63");
+ CLIMATE_MODELS.put("cnrm", "CNRM");
+ CLIMATE_MODELS.put("csiro", "CSIRO-MK3.0");
+ CLIMATE_MODELS.put("gfdl", "GFDL 2.0");
+ CLIMATE_MODELS.put("giss_aom", "GISS-AOM");
+ CLIMATE_MODELS.put("iap", "IAP");
+ CLIMATE_MODELS.put("inmcm", "INMCM");
+ CLIMATE_MODELS.put("ipsl", "IPSL");
+ CLIMATE_MODELS.put("miroc", "MIROC-M");
+ CLIMATE_MODELS.put("miub", "MIUB");
+ CLIMATE_MODELS.put("mpi", "MPI-ECHAM5");
+ CLIMATE_MODELS.put("mri", "MRI");
+ CLIMATE_MODELS.put("ncar_ccsm", "NCAR-CCSM");
+ CLIMATE_MODELS.put("ncar_pcm", "NCAR-PCM1");
+ }
+ /**
+ * Index of model names in {@link MdbsyScenarioCConverter#MODEL_NAMES}.
+ */
+ private static final int FILE_NAME_MODEL_NAME = 0;
+ private static final int IPCC_MODEL_NAME = 1;
// Variables
private static final String[] variableNames = new String[] { "rainfall", "APET" };
@@ -291,7 +319,7 @@
SCENARIO = (parsedCommandLine.hasOption("scenario")) ? parsedCommandLine.getOptionValue("scenario") : "";
METADATA_FILE = (parsedCommandLine.hasOption("metadataFile")) ? parsedCommandLine
.getOptionValue("metadataFile") : "";
- MODEL = (parsedCommandLine.hasOption("model")) ? parsedCommandLine.getOptionValue("model") : "";
+ MODEL_NAMES = getModelMapping((parsedCommandLine.hasOption("model")) ? parsedCommandLine.getOptionValue("model") : "");
CASE = (parsedCommandLine.hasOption("case")) ? parsedCommandLine.getOptionValue("case") : "";
ROW_CHUNK_SIZE = (parsedCommandLine.hasOption("rows")) ? Integer.valueOf(parsedCommandLine
.getOptionValue("rows")) : ROW_CHUNK_SIZE;
@@ -526,9 +554,11 @@
// Add attributes
DateFormat utcDateTime = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
Attribute converter = new Attribute("History", utcDateTime.format(new Date()) + " Converted to netCDF by "
- + "$Id: MdbsyScenarioCConverter.java 7155 2010-06-10 02:51:25Z dem040 $");
+ + "$Id: MdbsyScenarioCConverter.java 7155 2010-06-10 02:51:25Z dem040 $");
+ Attribute ipccClimateModel = new Attribute("IPCC Climate Model Name", MODEL_NAMES[IPCC_MODEL_NAME]);
List<Attribute> globalAttrs = new ArrayList<Attribute>();
globalAttrs.add(converter);
+ globalAttrs.add(ipccClimateModel);
if (METADATA_FILE.length() > 0)
{
globalAttrs.addAll(NetCDFUtils.readAttributesFromStream(new FileInputStream(METADATA_FILE)));
@@ -1259,9 +1289,9 @@
private String generateLatitudeFilename(String latitudeDegree, String variable)
{
String filename = OUTPUT_NETCDF_DIRECTORY + COLLECTION + "." + SCENARIO + ".";
- if (MODEL.length() > 0)
+ if (MODEL_NAMES[FILE_NAME_MODEL_NAME].length() > 0)
{
- filename += MODEL + ".";
+ filename += MODEL_NAMES[FILE_NAME_MODEL_NAME] + ".";
}
if (CASE.length() > 0)
{
@@ -1283,9 +1313,9 @@
private String generateDecadeFilename(String decadeStr, String variable)
{
String filename = OUTPUT_NETCDF_DIRECTORY + COLLECTION + "." + SCENARIO + ".";
- if (MODEL.length() > 0)
+ if (MODEL_NAMES[FILE_NAME_MODEL_NAME].length() > 0)
{
- filename += MODEL + ".";
+ filename += MODEL_NAMES[FILE_NAME_MODEL_NAME] + ".";
}
if (CASE.length() > 0)
{
@@ -1324,5 +1354,34 @@
{
CELLID, LONGITUDE, LATITUDE, ELEVATION, CATCHMENTID, REPORTINGREGIONID
}
+
+ /**
+ * Maps a climate model name used for file naming to an IPCC standard climate model name.
+ *
+ * @param directoryModelName
+ * a climate model name used for file naming.
+ * @return a String[] which forms a mapping from a climate model name used for file naming to an IPCC standard
+ * climate model name.
+ */
+ private static String[] getModelMapping(String directoryModelName)
+ {
+ // strip "Model-" prefix that may be used.
+ int beginIndex = directoryModelName.indexOf("Model-");
+ if (beginIndex != -1)
+ {
+ directoryModelName = directoryModelName.substring(beginIndex + ("Model-1".length() - 1));
+ }
+ // determine the mapping between the climate model used to name the file and the IPCC standard climate
+ // model name stored as metadata.
+ if (CLIMATE_MODELS.containsKey(directoryModelName))
+ {
+ String[] modelNameMapping = new String[2];
+ modelNameMapping[FILE_NAME_MODEL_NAME] = directoryModelName;
+ modelNameMapping[IPCC_MODEL_NAME] = CLIMATE_MODELS.get(directoryModelName);
+ return modelNameMapping;
+ }
+ throw new IllegalArgumentException("Unknown model: " + directoryModelName + ". Valid models are: "
+ + CLIMATE_MODELS.keySet());
+ }
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|