Skip to content
Snippets Groups Projects
Commit 3668f7dd authored by Peter Alexander's avatar Peter Alexander
Browse files

Add new classes

parent b00d2b2a
No related branches found
No related tags found
No related merge requests found
......@@ -19,13 +19,24 @@ CLEANUP_GAMS_DIR=false
CHANGE_YIELD_DATA_YEAR=false
CHANGE_DEMAND_YEAR=false
DEBUG_LIMIT_COUNTRIES=false
DEBUG_COUNTRY_NAME=Spain
SSP_SCENARIO=SSP2_v9_130325
MAX_IMPORT_CHANGE=0
END_TIMESTEP=18
TIMESTEP_SIZE=5
MAX_IMPORT_CHANGE=0.0
MARKET_ADJ_PRICE=false
IS_CALIBRATION_RUN = true
#LAND_CHANGE_COST=.6
NUM_CEREAL_CATEGORIES=5
NUM_PASTURE_CATEGORIES=3
#BIOENERGY_CHANGE_ANNUAL_RATE=0.1111111
#TECHNOLOGY_CHANGE_ANNUAL_RATE=0.005
#TRADE_BARRIER_FACTOR_DEFAULT=0.3
#NUM_CEREAL_CATEGORIES = 10
#NUM_PASTURE_CATEGORIES = 3
END_TIMESTEP=28
TIMESTEP_SIZE=5
INTERPOLATE_OUTPUT_YEARS = false
\ No newline at end of file
package ac.ed.lurg.output;
import java.io.File;
import ac.ed.lurg.ModelConfig;
import ac.ed.lurg.landuse.LandUseItem;
import ac.sac.raster.RasterSet;
public abstract class AbstractLandUseOutputer {
protected RasterSet<LandUseItem> landUseRaster;
protected int year;
public AbstractLandUseOutputer(int year, RasterSet<LandUseItem> landUseRaster) {
this.year = year;
this.landUseRaster = landUseRaster;
}
abstract public void writeOutput();
protected static File getOutputDir(int year) {
String outputDirName = ModelConfig.OUTPUT_DIR + File.separator + year;
File outputDir = new File(outputDirName);
outputDir.mkdirs();
return outputDir;
}
}
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.landuse.Intensity;
import ac.ed.lurg.landuse.LandUseItem;
import ac.ed.lurg.types.CropType;
import ac.ed.lurg.types.LandCoverType;
import ac.ed.lurg.utils.LogWriter;
import ac.sac.raster.RasterKey;
import ac.sac.raster.RasterSet;
public class LandUseOutputer extends AbstractLandUseOutputer {
public LandUseOutputer(int year, RasterSet<LandUseItem> landUseRaster) {
super(year, landUseRaster);
}
@Override
public void writeOutput() {
File outputDir = getOutputDir(year);
BufferedWriter fertWriter = null;
try {
String landCoverFileName = outputDir.getPath() + File.separator + "LandUse.txt";
fertWriter = new BufferedWriter(new FileWriter(landCoverFileName, false));
StringBuffer sbHeader = new StringBuffer("Lon,Lat,protected");
for (LandCoverType cover : LandCoverType.values()) {
sbHeader.append("," + cover.getName());
}
for (CropType crop : CropType.getAllItems()) {
String cropString = crop.getGamsName();
sbHeader.append("," + cropString + "_A," + cropString + "_FI," + cropString + "_II," + cropString + "_OI");
}
fertWriter.write(sbHeader.toString());
fertWriter.newLine();
for (Entry<RasterKey, LandUseItem> entry : landUseRaster.entrySet()) {
RasterKey key = entry.getKey();
LandUseItem item = entry.getValue();
if (item == null)
continue;
double lat = landUseRaster.getXCoordin(key);
double lon = landUseRaster.getYCoordin(key);
StringBuffer sbData = new StringBuffer(String.format("%.2f,%.2f", lat, lon));
sbData.append(String.format(",%.14f", item.getProtectedArea()));
for (LandCoverType cover : LandCoverType.values()) {
sbData.append(String.format(",%.14f", item.getLandCoverArea(cover)));
}
for (CropType crop : CropType.getAllItems()) {
double cropFract = item.getCropFraction(crop);
Intensity intensity = item.getIntensity(crop);
double fertI = intensity==null ? 0.0 : intensity.getFertiliserIntensity();
double irrigI = intensity==null ? 0.0 : intensity.getIrrigationIntensity();
double otherI = intensity==null ? 0.0 : intensity.getOtherIntensity();
sbData.append(String.format(",%.14f,%.14f,%.14f,%.14f", cropFract, fertI, irrigI, otherI));
}
fertWriter.write(sbData.toString());
fertWriter.newLine();
}
}
catch (IOException e) {
LogWriter.print(e);
}
finally {
if (fertWriter != null) {
try {
fertWriter.close();
}
catch (IOException e) {
LogWriter.print(e);
}
}
}
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment