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. |