From fac489998ac26aef6980bcf7312e26c368bfa74a Mon Sep 17 00:00:00 2001 From: Florian1209 Date: Mon, 8 Feb 2021 11:30:54 +0100 Subject: [PATCH] add target product parameter for new graph builder compatibility --- .../esa/s2tbx/biophysical/Biophysical10mOp.java | 14 +++++++++----- .../s2tbx/biophysical/BiophysicalLandsatOp.java | 14 +++++++++----- .../org/esa/s2tbx/biophysical/BiophysicalOp.java | 14 +++++++++----- 3 files changed, 27 insertions(+), 15 deletions(-) diff --git a/s2tbx-biophysical/src/main/java/org/esa/s2tbx/biophysical/Biophysical10mOp.java b/s2tbx-biophysical/src/main/java/org/esa/s2tbx/biophysical/Biophysical10mOp.java index d49bb004d6..e0c7b4b7ca 100644 --- a/s2tbx-biophysical/src/main/java/org/esa/s2tbx/biophysical/Biophysical10mOp.java +++ b/s2tbx-biophysical/src/main/java/org/esa/s2tbx/biophysical/Biophysical10mOp.java @@ -29,6 +29,7 @@ import org.esa.snap.core.gpf.annotations.OperatorMetadata; import org.esa.snap.core.gpf.annotations.Parameter; import org.esa.snap.core.gpf.annotations.SourceProduct; +import org.esa.snap.core.gpf.annotations.TargetProduct; import org.esa.snap.core.gpf.pointop.PixelOperator; import org.esa.snap.core.gpf.pointop.ProductConfigurer; import org.esa.snap.core.gpf.pointop.Sample; @@ -59,6 +60,9 @@ public class Biophysical10mOp extends PixelOperator { @SourceProduct(alias = "source", description = "The source product.") private Product sourceProduct; + @TargetProduct + private Product targetProduct; + @Parameter(defaultValue = "S2A_10m", label = "Sensor", description = "Sensor", valueSet = {"S2A_10m", "S2B_10m"}) private String sensor; @@ -168,13 +172,13 @@ protected void configureTargetProduct(ProductConfigurer productConfigurer) { productConfigurer.copyMetadata(); productConfigurer.copyMasks(); - Product tp = productConfigurer.getTargetProduct(); + targetProduct = productConfigurer.getTargetProduct(); // todo setDescription for (BiophysicalVariable biophysicalVariable : BiophysicalVariable.values()) { if (BiophysicalModel.S2A_10m.computesVariable(biophysicalVariable) && isComputed(biophysicalVariable)) { // Add biophysical variable band - final Band biophysicalVariableBand = tp.addBand(biophysicalVariable.getBandName(), ProductData.TYPE_FLOAT32); + final Band biophysicalVariableBand = targetProduct.addBand(biophysicalVariable.getBandName(), ProductData.TYPE_FLOAT32); biophysicalVariableBand.setDescription(biophysicalVariable.getDescription()); biophysicalVariableBand.setUnit(biophysicalVariable.getUnit()); // todo better setDescription @@ -185,18 +189,18 @@ protected void configureTargetProduct(ProductConfigurer productConfigurer) { // Add corresponding flag band String flagBandName = String.format("%s_flags", biophysicalVariable.getBandName()); - final Band biophysicalVariableFlagBand = tp.addBand(flagBandName, ProductData.TYPE_UINT8); + final Band biophysicalVariableFlagBand = targetProduct.addBand(flagBandName, ProductData.TYPE_UINT8); final FlagCoding biophysicalVariableFlagCoding = new FlagCoding(flagBandName); for (BiophysicalFlag flagDef : BiophysicalFlag.values()) { biophysicalVariableFlagCoding.addFlag(flagDef.getName(), flagDef.getFlagValue(), flagDef.getDescription()); } - tp.getFlagCodingGroup().add(biophysicalVariableFlagCoding); + targetProduct.getFlagCodingGroup().add(biophysicalVariableFlagCoding); biophysicalVariableFlagBand.setSampleCoding(biophysicalVariableFlagCoding); // Add a mask for each flag for (BiophysicalFlag flagDef : BiophysicalFlag.values()) { String maskName = String.format("%s_%s", biophysicalVariable.getBandName(), flagDef.getName().toLowerCase()); - tp.addMask(maskName, + targetProduct.addMask(maskName, String.format("%s.%s", flagBandName, flagDef.getName()), flagDef.getDescription(), flagDef.getColor(), flagDef.getTransparency()); diff --git a/s2tbx-biophysical/src/main/java/org/esa/s2tbx/biophysical/BiophysicalLandsatOp.java b/s2tbx-biophysical/src/main/java/org/esa/s2tbx/biophysical/BiophysicalLandsatOp.java index 0e1fc1ae81..b1bbda5671 100644 --- a/s2tbx-biophysical/src/main/java/org/esa/s2tbx/biophysical/BiophysicalLandsatOp.java +++ b/s2tbx-biophysical/src/main/java/org/esa/s2tbx/biophysical/BiophysicalLandsatOp.java @@ -29,6 +29,7 @@ import org.esa.snap.core.gpf.annotations.OperatorMetadata; import org.esa.snap.core.gpf.annotations.Parameter; import org.esa.snap.core.gpf.annotations.SourceProduct; +import org.esa.snap.core.gpf.annotations.TargetProduct; import org.esa.snap.core.gpf.pointop.PixelOperator; import org.esa.snap.core.gpf.pointop.ProductConfigurer; import org.esa.snap.core.gpf.pointop.Sample; @@ -56,6 +57,9 @@ public class BiophysicalLandsatOp extends PixelOperator { private Map algos = new HashMap<>(); + @TargetProduct + private Product targetProduct; + @SourceProduct(alias = "source", description = "The source product.") private Product sourceProduct; @@ -167,13 +171,13 @@ protected void configureTargetProduct(ProductConfigurer productConfigurer) { productConfigurer.copyMetadata(); productConfigurer.copyMasks(); - Product tp = productConfigurer.getTargetProduct(); + targetProduct = productConfigurer.getTargetProduct(); // todo setDescription for (BiophysicalVariable biophysicalVariable : BiophysicalVariable.values()) { if (BiophysicalModel.LANDSAT8.computesVariable(biophysicalVariable) && isComputed(biophysicalVariable)) { // Add biophysical variable band - final Band biophysicalVariableBand = tp.addBand(biophysicalVariable.getBandName(), ProductData.TYPE_FLOAT32); + final Band biophysicalVariableBand = targetProduct.addBand(biophysicalVariable.getBandName(), ProductData.TYPE_FLOAT32); biophysicalVariableBand.setDescription(biophysicalVariable.getDescription()); biophysicalVariableBand.setUnit(biophysicalVariable.getUnit()); // todo better setDescription @@ -184,18 +188,18 @@ protected void configureTargetProduct(ProductConfigurer productConfigurer) { // Add corresponding flag band String flagBandName = String.format("%s_flags", biophysicalVariable.getBandName()); - final Band biophysicalVariableFlagBand = tp.addBand(flagBandName, ProductData.TYPE_UINT8); + final Band biophysicalVariableFlagBand = targetProduct.addBand(flagBandName, ProductData.TYPE_UINT8); final FlagCoding biophysicalVariableFlagCoding = new FlagCoding(flagBandName); for (BiophysicalFlag flagDef : BiophysicalFlag.values()) { biophysicalVariableFlagCoding.addFlag(flagDef.getName(), flagDef.getFlagValue(), flagDef.getDescription()); } - tp.getFlagCodingGroup().add(biophysicalVariableFlagCoding); + targetProduct.getFlagCodingGroup().add(biophysicalVariableFlagCoding); biophysicalVariableFlagBand.setSampleCoding(biophysicalVariableFlagCoding); // Add a mask for each flag for (BiophysicalFlag flagDef : BiophysicalFlag.values()) { String maskName = String.format("%s_%s", biophysicalVariable.getBandName(), flagDef.getName().toLowerCase()); - tp.addMask(maskName, + targetProduct.addMask(maskName, String.format("%s.%s", flagBandName, flagDef.getName()), flagDef.getDescription(), flagDef.getColor(), flagDef.getTransparency()); diff --git a/s2tbx-biophysical/src/main/java/org/esa/s2tbx/biophysical/BiophysicalOp.java b/s2tbx-biophysical/src/main/java/org/esa/s2tbx/biophysical/BiophysicalOp.java index 9f0cd80f44..eddb0efd2d 100644 --- a/s2tbx-biophysical/src/main/java/org/esa/s2tbx/biophysical/BiophysicalOp.java +++ b/s2tbx-biophysical/src/main/java/org/esa/s2tbx/biophysical/BiophysicalOp.java @@ -29,6 +29,7 @@ import org.esa.snap.core.gpf.annotations.OperatorMetadata; import org.esa.snap.core.gpf.annotations.Parameter; import org.esa.snap.core.gpf.annotations.SourceProduct; +import org.esa.snap.core.gpf.annotations.TargetProduct; import org.esa.snap.core.gpf.pointop.PixelOperator; import org.esa.snap.core.gpf.pointop.ProductConfigurer; import org.esa.snap.core.gpf.pointop.Sample; @@ -60,6 +61,9 @@ public class BiophysicalOp extends PixelOperator { @SourceProduct(alias = "source", description = "The source product.") private Product sourceProduct; + @TargetProduct + private Product targetProduct; + @Parameter(defaultValue = "S2A", label = "Sensor", description = "Sensor", valueSet = {"S2A", "S2B"}) private String sensor; @@ -182,13 +186,13 @@ protected void configureTargetProduct(ProductConfigurer productConfigurer) { productConfigurer.copyMetadata(); productConfigurer.copyMasks(); - Product tp = productConfigurer.getTargetProduct(); + targetProduct = productConfigurer.getTargetProduct(); // todo setDescription for (BiophysicalVariable biophysicalVariable : BiophysicalVariable.values()) { if (BiophysicalModel.S2A.computesVariable(biophysicalVariable) && isComputed(biophysicalVariable)) { // Add biophysical variable band - final Band biophysicalVariableBand = tp.addBand(biophysicalVariable.getBandName(), ProductData.TYPE_FLOAT32); + final Band biophysicalVariableBand = targetProduct.addBand(biophysicalVariable.getBandName(), ProductData.TYPE_FLOAT32); biophysicalVariableBand.setDescription(biophysicalVariable.getDescription()); biophysicalVariableBand.setUnit(biophysicalVariable.getUnit()); // todo better setDescription @@ -199,18 +203,18 @@ protected void configureTargetProduct(ProductConfigurer productConfigurer) { // Add corresponding flag band String flagBandName = String.format("%s_flags", biophysicalVariable.getBandName()); - final Band biophysicalVariableFlagBand = tp.addBand(flagBandName, ProductData.TYPE_UINT8); + final Band biophysicalVariableFlagBand = targetProduct.addBand(flagBandName, ProductData.TYPE_UINT8); final FlagCoding biophysicalVariableFlagCoding = new FlagCoding(flagBandName); for (BiophysicalFlag flagDef : BiophysicalFlag.values()) { biophysicalVariableFlagCoding.addFlag(flagDef.getName(), flagDef.getFlagValue(), flagDef.getDescription()); } - tp.getFlagCodingGroup().add(biophysicalVariableFlagCoding); + targetProduct.getFlagCodingGroup().add(biophysicalVariableFlagCoding); biophysicalVariableFlagBand.setSampleCoding(biophysicalVariableFlagCoding); // Add a mask for each flag for (BiophysicalFlag flagDef : BiophysicalFlag.values()) { String maskName = String.format("%s_%s", biophysicalVariable.getBandName(), flagDef.getName().toLowerCase()); - tp.addMask(maskName, + targetProduct.addMask(maskName, String.format("%s.%s", flagBandName, flagDef.getName()), flagDef.getDescription(), flagDef.getColor(), flagDef.getTransparency());