diff --git a/src/ac/ed/lurg/landuse/LandCoverReader.java b/src/ac/ed/lurg/landuse/LandCoverReader.java index d7113cde0bf8f2db1e92ee43aaca2b5eaf35d707..520dff75b5fb5c21e9f1eda933e8d3249e4c936a 100644 --- a/src/ac/ed/lurg/landuse/LandCoverReader.java +++ b/src/ac/ed/lurg/landuse/LandCoverReader.java @@ -26,7 +26,16 @@ public class LandCoverReader extends AbstractTabularRasterReader<LandCoverItem> lcData.setLandCoverFract(LandCoverType.MANAGED_FOREST, getValueForCol(rowValues, "managed_forest")); lcData.setLandCoverFract(LandCoverType.UNMANAGED_FOREST, getValueForCol(rowValues, "unmanaged_forest")); lcData.setLandCoverFract(LandCoverType.BARREN, getValueForCol(rowValues, "barren")); - lcData.setLandCoverFract(LandCoverType.URBAN, getValueForCol(rowValues, "urban")); - + lcData.setLandCoverFract(LandCoverType.URBAN, getValueForCol(rowValues, "urban")); + } + + @Override + protected int getXCol() { + return getColForName("lon"); + } + + @Override + protected int getYCol() { + return getColForName("lat"); } } diff --git a/src/ac/sac/raster/AbstractTabularRasterReader.java b/src/ac/sac/raster/AbstractTabularRasterReader.java index 14b6cdf88412353d8b25f5506416ef904fc1baf7..83847b88d26770993e5f7d279d69f4fec0c194a5 100644 --- a/src/ac/sac/raster/AbstractTabularRasterReader.java +++ b/src/ac/sac/raster/AbstractTabularRasterReader.java @@ -17,6 +17,7 @@ public abstract class AbstractTabularRasterReader<D extends RasterItem> { protected RasterSet<D> dataset; private String delimiterRegex; private int minColNum; + protected String[] dataColNames; public AbstractTabularRasterReader (String delimiterRegex, int minColNum) { this.delimiterRegex = delimiterRegex; @@ -32,6 +33,14 @@ public abstract class AbstractTabularRasterReader<D extends RasterItem> { return line.trim().split(delimiterRegex); } + protected int getXCol() { + return X_COL; + } + + protected int getYCol() { + return Y_COL; + } + private String[] handleHeader(String[] headertokens) { if (headertokens.length < minColNum) { LogWriter.printlnError("Too few columns"); @@ -53,7 +62,7 @@ public abstract class AbstractTabularRasterReader<D extends RasterItem> { try { in = new BufferedReader(new FileReader(filename)); String line = in.readLine(); // read header - String[] dataColNames = handleHeader(parseLine(line)); + dataColNames = handleHeader(parseLine(line)); while ((line=in.readLine()) != null) { if (line.isEmpty()) // skip empty lines @@ -62,8 +71,8 @@ public abstract class AbstractTabularRasterReader<D extends RasterItem> { String[] tokens = parseLine(line); try { - double x = Double.parseDouble(tokens[X_COL]); - double y = Double.parseDouble(tokens[Y_COL]); + double x = Double.parseDouble(tokens[getXCol()]); + double y = Double.parseDouble(tokens[getYCol()]); Map<String, Double> rowValues = new HashMap<String, Double>(dataColNames.length); for (int i=2; i<tokens.length; i++) { @@ -103,6 +112,16 @@ public abstract class AbstractTabularRasterReader<D extends RasterItem> { return dataset; } + protected int getColForName(String colName) { + String lowerColName = colName.toLowerCase(); + int i=0; + for (; i<colName.length(); i++) + if (dataColNames[i].toLowerCase().equals(lowerColName)) + return i; + + return Integer.MIN_VALUE; + } + protected double getValueForCol(Map<String, Double> rowValues, String colName) { Double d = rowValues.get(colName.toLowerCase()); if (d == null) { diff --git a/src/ac/sac/raster/RasterSet.java b/src/ac/sac/raster/RasterSet.java index 7bc26df3d43207af016a947c216bfff0fac1a2ca..f207da45264c613e82988b0f9864d03dcf31f9cf 100755 --- a/src/ac/sac/raster/RasterSet.java +++ b/src/ac/sac/raster/RasterSet.java @@ -67,7 +67,7 @@ public class RasterSet<D extends RasterItem> extends HashMap<RasterKey, D> { int row = header.getNrows() - 1 - (int) Math.round((source_y - header.getYllCorner())/header.getYCellSize()); if (row < 0 || col < 0) { - LogWriter.println("Got negative values"); + LogWriter.println("Got negative row or col values: " + row + ", "+ col); } return new RasterKey(col, row); }