From 7853c98e3fc26918706a2e58b8ff813ac859a59f Mon Sep 17 00:00:00 2001 From: Bart Arendarczyk <s1924442@ed.ac.uk> Date: Mon, 22 Jul 2024 18:19:29 +0100 Subject: [PATCH] Fixed issue with forced protected areas. --- src/ac/ed/lurg/ModelMain.java | 4 +++- src/ac/ed/lurg/landuse/InitProtectedAreasReader.java | 6 +++--- src/ac/ed/lurg/landuse/LandUseItem.java | 2 +- src/ac/ed/lurg/landuse/ProtectedAreasReader.java | 5 +++-- 4 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/ac/ed/lurg/ModelMain.java b/src/ac/ed/lurg/ModelMain.java index 9efa25d4..b3d1cc80 100644 --- a/src/ac/ed/lurg/ModelMain.java +++ b/src/ac/ed/lurg/ModelMain.java @@ -848,7 +848,9 @@ public class ModelMain { RasterSet<LandUseItem> landUseRaster = new RasterSet<LandUseItem>(initialLC.getHeaderDetails()); for (Map.Entry<RasterKey, LandCoverItem> entry : initialLC.entrySet()) { - landUseRaster.put(entry.getKey(), new LandUseItem(entry.getValue())); + if (entry.getValue().getTotalArea() > 0) { + landUseRaster.put(entry.getKey(), new LandUseItem(entry.getValue())); + } } return landUseRaster; diff --git a/src/ac/ed/lurg/landuse/InitProtectedAreasReader.java b/src/ac/ed/lurg/landuse/InitProtectedAreasReader.java index 24774e43..3ddc4ae2 100644 --- a/src/ac/ed/lurg/landuse/InitProtectedAreasReader.java +++ b/src/ac/ed/lurg/landuse/InitProtectedAreasReader.java @@ -10,9 +10,9 @@ public class InitProtectedAreasReader extends AbstractRasterReader<LandCoverItem @Override public void setData(LandCoverItem lcData, String token) { - if (!"nan".equals(token)) { - double protFrac = Double.parseDouble(token); - lcData.setProtectedFraction(protFrac); + double value = Double.parseDouble(token); + if (value >= 0) { // no data is -9999 + lcData.setProtectedFraction(value); } } } diff --git a/src/ac/ed/lurg/landuse/LandUseItem.java b/src/ac/ed/lurg/landuse/LandUseItem.java index daa7afa0..5996162d 100644 --- a/src/ac/ed/lurg/landuse/LandUseItem.java +++ b/src/ac/ed/lurg/landuse/LandUseItem.java @@ -269,7 +269,7 @@ public class LandUseItem implements InterpolatingRasterItem<LandUseItem>, Serial area = Math.min(area, fromArea); // Update unmanaged forest fraction (increases if converting from managed forest, decreased otherwise) - if (toKey.getLcType().equals(LandCoverType.NATURAL)) { + if (toKey.getLcType().equals(LandCoverType.NATURAL) && !fromKey.getLcType().equals(LandCoverType.NATURAL)) { NaturalDetail naturalDetail = (NaturalDetail) getLandCoverDetail(toKey); double prevUnmanForest = naturalDetail.getArea() * naturalDetail.getUnmanagedForestFraction(); diff --git a/src/ac/ed/lurg/landuse/ProtectedAreasReader.java b/src/ac/ed/lurg/landuse/ProtectedAreasReader.java index 5f1b9c13..45b5dcf1 100644 --- a/src/ac/ed/lurg/landuse/ProtectedAreasReader.java +++ b/src/ac/ed/lurg/landuse/ProtectedAreasReader.java @@ -11,8 +11,9 @@ public class ProtectedAreasReader extends AbstractRasterReader<ProtectedAreaItem @Override public void setData(ProtectedAreaItem data, String token) { - if (!"nan".equals(token)) { - data.setProtectedFraction(Double.parseDouble(token)); + double value = Double.parseDouble(token); + if (value >= 0) { // no data is -9999 + data.setProtectedFraction(value); } } } \ No newline at end of file -- GitLab