From 58db3a20865c2928f12ef785a5d7ea8c11005625 Mon Sep 17 00:00:00 2001 From: Peter Alexander <peter@blackhillock.co.uk> Date: Mon, 3 Aug 2015 12:46:49 +0100 Subject: [PATCH] Change format of LPJG file received --- GAMS/IntExtOpt.gms | 6 +- src/ac/ed/lurg/ModelConfig.java | 2 +- src/ac/ed/lurg/ModelMain.java | 4 +- src/ac/ed/lurg/output/LpjgOutputer.java | 69 +++++++++++++++++++ src/ac/ed/lurg/types/FertiliserRate.java | 12 +++- .../lurg/yield/LPJYieldResponseMapReader.java | 28 ++++---- .../output => sac/raster}/RasterOutputer.java | 7 +- 7 files changed, 101 insertions(+), 27 deletions(-) create mode 100644 src/ac/ed/lurg/output/LpjgOutputer.java rename src/ac/{ed/lurg/output => sac/raster}/RasterOutputer.java (97%) diff --git a/GAMS/IntExtOpt.gms b/GAMS/IntExtOpt.gms index 8fab4b93..2b08fc4b 100644 --- a/GAMS/IntExtOpt.gms +++ b/GAMS/IntExtOpt.gms @@ -113,9 +113,9 @@ $gdxin PASTURE_DECREASE_CONV_CALC(location) ENERGY_EQ total energy objective function; - UNIT_ENERGY_EQ(crop, location) .. unitEnergy(crop, location) =E= ( baseCost(crop) * power(cropAdj(crop), 1) + - (fertiliserUnitCost * fertI(crop, location)) + - (irrigCost(location) * irrigI(crop, location)) ) ; + UNIT_ENERGY_EQ(crop, location) .. unitEnergy(crop, location) =E= ( baseCost(crop) * cropAdj(crop) + + fertiliserUnitCost * fertI(crop, location) + + irrigCost(location) * irrigI(crop, location) ) ; YIELD_EQ(crop, location) .. yield(crop, location) =E= ( yieldNone(crop, location) + diff --git a/src/ac/ed/lurg/ModelConfig.java b/src/ac/ed/lurg/ModelConfig.java index f0b75b42..2f5e043e 100644 --- a/src/ac/ed/lurg/ModelConfig.java +++ b/src/ac/ed/lurg/ModelConfig.java @@ -96,7 +96,7 @@ public class ModelConfig { public static final String COMMODITY_DATA_FILE = DATA_DIR + File.separator + "con_prod_c_and_m.csv"; // yield data - public static final String YIELD_DIR = "/Users/peteralexander/Documents/LURG/LPJ/tom-April2015"; + public static final String YIELD_DIR = "/Users/peteralexander/Documents/LURG/LPJ/tom-July2015"; // Spatial (gridded) data public static final String SPATIAL_DATA_DIR = DATA_DIR; // + File.separator + "tinyTest"; diff --git a/src/ac/ed/lurg/ModelMain.java b/src/ac/ed/lurg/ModelMain.java index 53fbd1f6..90fbf0a4 100644 --- a/src/ac/ed/lurg/ModelMain.java +++ b/src/ac/ed/lurg/ModelMain.java @@ -24,7 +24,6 @@ import ac.ed.lurg.landuse.IrrigationCostItem; import ac.ed.lurg.landuse.IrrigiationCostReader; import ac.ed.lurg.landuse.LandCoverItem; import ac.ed.lurg.landuse.LandCoverReader; -import ac.ed.lurg.output.RasterOutputer; import ac.ed.lurg.types.CropToDoubleMap; import ac.ed.lurg.types.CropType; import ac.ed.lurg.types.FertiliserRate; @@ -36,6 +35,7 @@ import ac.ed.lurg.yield.YieldRaster; import ac.sac.raster.IntegerRasterItem; import ac.sac.raster.RasterHeaderDetails; import ac.sac.raster.RasterKey; +import ac.sac.raster.RasterOutputer; import ac.sac.raster.RasterSet; public class ModelMain { @@ -241,7 +241,7 @@ public class ModelMain { // DEBUG code - if (!(country.getCountryName().equals("United States of Americaxx") || country.getCountryName().equals("Russian Federation"))) { //|| country.getCountryName().equals("China") + if (!(country.getCountryName().equals("United States of America") || country.getCountryName().equals("Russian Federationxx"))) { //|| country.getCountryName().equals("China") continue; } diff --git a/src/ac/ed/lurg/output/LpjgOutputer.java b/src/ac/ed/lurg/output/LpjgOutputer.java new file mode 100644 index 00000000..5a3c8908 --- /dev/null +++ b/src/ac/ed/lurg/output/LpjgOutputer.java @@ -0,0 +1,69 @@ +package ac.ed.lurg.output; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.util.Map.Entry; + +import ac.ed.lurg.ModelConfig; +import ac.ed.lurg.landuse.AreasItem; +import ac.ed.lurg.landuse.IntensitiesItem; +import ac.sac.raster.RasterKey; +import ac.sac.raster.RasterSet; + +public class LpjgOutputer { + + private RasterSet<IntensitiesItem> intensityRaster; + private RasterSet<AreasItem> cropAreaRaster; + private int timestep; + + public LpjgOutputer(int timestep, RasterSet<IntensitiesItem> intensityRaster, RasterSet<AreasItem> cropAreaRaster) { + this.intensityRaster = intensityRaster; + this.cropAreaRaster = cropAreaRaster; + } + + + public void writeOutput(boolean writeImage) { + BufferedWriter fileWriter = null; + + try { + String areaFileName = ModelConfig.OUTPUT_DIR + File.separator + "Areas" + timestep + ".txt"; + fileWriter = new BufferedWriter(new FileWriter(areaFileName,false)); + + writeHeader(fileWriter); + + for (Entry<RasterKey, AreasItem> entry : cropAreaRaster.entrySet()) { + RasterKey location = entry.getKey(); + AreasItem item = entry.getValue(); + + /* Double d = getValue(location); + + if (d == null) + fileWriter.write(nullDataString + " "); + else + fileWriter.write(d + " ");*/ + + fileWriter.newLine(); + } + } + catch (IOException e) { + e.printStackTrace(); + } + finally { + if (fileWriter != null) { + try { + fileWriter.close(); + } + catch (IOException e) { + e.printStackTrace(); + } + } + } + } + + private void writeHeader(BufferedWriter outputFile) throws IOException { + outputFile.write("h1,h2,... ,hn"); + outputFile.newLine(); + } +} diff --git a/src/ac/ed/lurg/types/FertiliserRate.java b/src/ac/ed/lurg/types/FertiliserRate.java index 704ca490..e1e6ae7b 100644 --- a/src/ac/ed/lurg/types/FertiliserRate.java +++ b/src/ac/ed/lurg/types/FertiliserRate.java @@ -1,10 +1,16 @@ package ac.ed.lurg.types; +import java.io.File; + public enum FertiliserRate { - NO_FERT("yield_1996_2005_minfert_CRU.out"), - MID_FERT("yield_1996_2005_middlefert_CRU.out"), - MAX_FERT("yield_1996_2005_highfert_CRU.out"); + // NO_FERT("yield_1996_2005_minfert_CRU.out"), + // MID_FERT("yield_1996_2005_middlefert_CRU.out"), + // MAX_FERT("yield_1996_2005_highfert_CRU.out"); + NO_FERT("minfert" + File.separator + "yield_1996_2005"), + MID_FERT("middlefert" + File.separator + "yield_1996_2005"), + MAX_FERT("highfert" + File.separator + "yield_1996_2005"); + private String fileName; FertiliserRate(String fileName) { diff --git a/src/ac/ed/lurg/yield/LPJYieldResponseMapReader.java b/src/ac/ed/lurg/yield/LPJYieldResponseMapReader.java index efb48f75..2cde5a8b 100644 --- a/src/ac/ed/lurg/yield/LPJYieldResponseMapReader.java +++ b/src/ac/ed/lurg/yield/LPJYieldResponseMapReader.java @@ -56,27 +56,33 @@ public class LPJYieldResponseMapReader { break; case 2: //YieldRecord values in kg DM / m2, we want t/ha, so 10 times larger - record.teSW = d * 10; + record.c3Pasture = d * 10; break; case 3: - record.teSWirr = d * 10; + record.c4Pasture = d * 10; break; case 4: record.teWW = d * 10; break; case 5: - record.teWWirr = d * 10; + record.teSW = d * 10; break; case 6: record.teCo = d * 10; break; case 7: - record.teCoirr = d * 10; + record.trRi = d * 10; break; case 8: - record.trRi = d * 10; + record.teWWirr = d * 10; break; case 9: + record.teSWirr = d * 10; + break; + case 10: + record.teCoirr = d * 10; + break; + case 11: record.trRiirr = d * 10; break; } @@ -124,19 +130,15 @@ public class LPJYieldResponseMapReader { item.setYield(noIrrigYieldType, CropType.STARCHY_ROOTS, record.teSW * 1.1); item.setYield(maxIrrigYieldType, CropType.STARCHY_ROOTS, record.teSWirr * 1.1); - if (noIrrigYieldType.getFertiliserRate() == FertiliserRate.MAX_FERT) { - item.setYield(noIrrigYieldType, CropType.PASTURE, record.teSW*1.2); - item.setYield(maxIrrigYieldType, CropType.PASTURE, record.teSWirr*1.2); - } - else { - item.setYield(noIrrigYieldType, CropType.PASTURE, record.teSW*0.6); - item.setYield(maxIrrigYieldType, CropType.PASTURE, record.teSWirr*0.7); - } + item.setYield(noIrrigYieldType, CropType.PASTURE, Math.max(record.c3Pasture, record.c4Pasture)); + item.setYield(maxIrrigYieldType, CropType.PASTURE, Math.max(record.c3Pasture, record.c4Pasture)*1.2); } class YieldRecord { double x; double y; + double c3Pasture; + double c4Pasture; double teSW; double teSWirr; double teWW; diff --git a/src/ac/ed/lurg/output/RasterOutputer.java b/src/ac/sac/raster/RasterOutputer.java similarity index 97% rename from src/ac/ed/lurg/output/RasterOutputer.java rename to src/ac/sac/raster/RasterOutputer.java index acc511de..ff4c3b7f 100644 --- a/src/ac/ed/lurg/output/RasterOutputer.java +++ b/src/ac/sac/raster/RasterOutputer.java @@ -1,4 +1,4 @@ -package ac.ed.lurg.output; +package ac.sac.raster; import java.awt.Image; import java.awt.image.BufferedImage; @@ -19,13 +19,10 @@ import java.io.IOException; import javax.imageio.ImageIO; import ac.ed.lurg.ModelConfig; -import ac.sac.raster.RasterItem; -import ac.sac.raster.RasterKey; -import ac.sac.raster.RasterSet; public abstract class RasterOutputer<D extends RasterItem> { protected RasterSet<D> results; - String fileName; + private String fileName; public RasterOutputer(RasterSet<D> results, String fileName) { this.results = results; -- GitLab