Copernicus DEM elevation model fails at latitudes where resolution of DEM changes

Description

Copernicus DEM changes resolution above 60 deg. This leads to interpolation errors

Environment

None

Activity

Tom Block 
30 August 2024 at 13:00

Martin Böttcher 
23 July 2024 at 10:28

I have added a preliminary fix to the 9.x.calvalus branch: I am not sure it is the final fix because it changes the resampling method from bi-cubic to nearest close to the latitudes where DEM resolution changes.

Martin Böttcher 
23 July 2024 at 10:14

interpolation errors, or rather failures. This can be re-produced using a resampled S2 granule 32VLM and adding elevation based on the Copernicus 90m Global DEM to it, as done e.g. in Idepix. The trace below shows that four DEM tiles are requested. Two of them are north of 60 degrees north and have 600 columns only (0..599). Access to column 600 fails for them.

 

S2B_MSIL1C_20220518T105619_N0400_R094_T32VLM_20220518T114320-resampled.nc

Idepix cloud screening ...
Executing processing graph
Initializing Elevation Model
100% done.

100% done.

100% done.

100% done.

100% done.
Copernicus_DSM_COG_30_N60_00_E005_00_DEM.tif
Copernicus_DSM_COG_30_N60_00_E006_00_DEM.tif
Copernicus_DSM_COG_30_N60_00_E007_00_DEM.tif
Copernicus_DSM_COG_30_N59_00_E005_00_DEM.tif
600
done.
org.esa.snap.core.gpf.graph.GraphException: [NodeId: idepix] 600
       at org.esa.snap.core.gpf.graph.NodeContext.initTargetProduct(NodeContext.java:79)
       at org.esa.snap.core.gpf.graph.GraphContext.initNodeContext(GraphContext.java:199)
       at org.esa.snap.core.gpf.graph.GraphContext.initNodeContext(GraphContext.java:182)
       at org.esa.snap.core.gpf.graph.GraphContext.initNodeContext(GraphContext.java:182)
       at org.esa.snap.core.gpf.graph.GraphContext.initOutput(GraphContext.java:166)
       at org.esa.snap.core.gpf.graph.GraphContext.<init>(GraphContext.java:85)
       at org.esa.snap.core.gpf.graph.GraphContext.<init>(GraphContext.java:58)
       at org.esa.snap.core.gpf.graph.GraphProcessor.executeGraph(GraphProcessor.java:127)
       at org.esa.snap.core.gpf.main.DefaultCommandLineContext.executeGraph(DefaultCommandLineContext.java:86)
       at org.esa.snap.core.gpf.main.CommandLineTool.executeGraph(CommandLineTool.java:547)
       at org.esa.snap.core.gpf.main.CommandLineTool.runGraph(CommandLineTool.java:391)
       at org.esa.snap.core.gpf.main.CommandLineTool.runGraphOrOperator(CommandLineTool.java:287)
       at org.esa.snap.core.gpf.main.CommandLineTool.run(CommandLineTool.java:188)
       at org.esa.snap.core.gpf.main.CommandLineTool.run(CommandLineTool.java:121)
       at org.esa.snap.core.gpf.main.GPT.run(GPT.java:59)
       at org.esa.snap.core.gpf.main.GPT.main(GPT.java:37)
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
       at java.lang.reflect.Method.invoke(Method.java:498)
       at org.esa.snap.runtime.Launcher.lambda$run$0(Launcher.java:55)
       at org.esa.snap.runtime.Engine.runClientCode(Engine.java:189)
       at org.esa.snap.runtime.Launcher.run(Launcher.java:51)
       at org.esa.snap.runtime.Launcher.main(Launcher.java:31)
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
       at java.lang.reflect.Method.invoke(Method.java:498)
       at com.exe4j.runtime.LauncherEngine.launch(LauncherEngine.java:84)
       at com.install4j.runtime.launcher.UnixLauncher.start(UnixLauncher.java:66)
       at install4j.org.esa.snap.runtime.Launcher_gpt.main(Unknown Source)
Caused by: org.esa.snap.core.gpf.OperatorException: 600
       at org.esa.snap.core.gpf.internal.OperatorExecutor$GPFImagingListener.errorOccurred(OperatorExecutor.java:381)
       at com.sun.media.jai.util.SunTileScheduler.sendExceptionToListener(Unknown Source)
       at com.sun.media.jai.util.SunTileScheduler.scheduleTile(Unknown Source)
       at javax.media.jai.OpImage.getTile(Unknown Source)
       at javax.media.jai.PlanarImage.getData(Unknown Source)
       at com.bc.ceres.glevel.MultiLevelImage.getData(MultiLevelImage.java:64)
       at org.esa.snap.core.gpf.internal.OperatorContext.getSourceTile(OperatorContext.java:449)
       at org.esa.snap.core.gpf.internal.OperatorContext.getSourceTile(OperatorContext.java:435)
       at org.esa.snap.core.gpf.Operator.getSourceTile(Operator.java:459)
       at org.esa.snap.idepix.s2msi.S2IdepixClassificationOp.computeTileStack(S2IdepixClassificationOp.java:184)
       at org.esa.snap.core.gpf.internal.OperatorImageTileStack.computeRect(OperatorImageTileStack.java:122)
       at org.esa.snap.core.gpf.internal.OperatorImageTileStack.computeTile(OperatorImageTileStack.java:86)
       at com.sun.media.jai.util.SunTileScheduler.scheduleTile(Unknown Source)
       at javax.media.jai.OpImage.getTile(Unknown Source)
       at javax.media.jai.PlanarImage.cobbleInt(Unknown Source)
       at javax.media.jai.PlanarImage.getData(Unknown Source)
       at com.bc.ceres.glevel.MultiLevelImage.getData(MultiLevelImage.java:64)
       at org.esa.snap.core.gpf.internal.OperatorContext.getSourceTile(OperatorContext.java:449)
       at org.esa.snap.core.gpf.internal.OperatorContext.getSourceTile(OperatorContext.java:435)
       at org.esa.snap.core.gpf.Operator.getSourceTile(Operator.java:459)
       at org.esa.snap.idepix.s2msi.operators.S2IdepixCloudPostProcessOp.computeTile(S2IdepixCloudPostProcessOp.java:182)
       at org.esa.snap.core.gpf.internal.OperatorImage.computeRect(OperatorImage.java:82)
       at javax.media.jai.SourcelessOpImage.computeTile(Unknown Source)
       at com.sun.media.jai.util.SunTileScheduler.scheduleTile(Unknown Source)
       at javax.media.jai.OpImage.getTile(Unknown Source)
       at javax.media.jai.PlanarImage.cobbleInt(Unknown Source)
       at javax.media.jai.PlanarImage.getData(Unknown Source)
       at com.bc.ceres.glevel.MultiLevelImage.getData(MultiLevelImage.java:64)
       at javax.media.jai.PlanarImage.getExtendedData(Unknown Source)
       at org.esa.snap.core.gpf.internal.OperatorContext.getSourceTile(OperatorContext.java:447)
       at org.esa.snap.core.gpf.Operator.getSourceTile(Operator.java:479)
       at org.esa.snap.idepix.s2msi.operators.cloudshadow.S2IdepixPreCloudShadowOp.computeTileStack(S2IdepixPreCloudShadowOp.java:171)
       at org.esa.snap.core.gpf.internal.OperatorImageTileStack.computeRect(OperatorImageTileStack.java:122)
       at org.esa.snap.core.gpf.internal.OperatorImageTileStack.computeTile(OperatorImageTileStack.java:86)
       at com.sun.media.jai.util.SunTileScheduler.scheduleTile(Unknown Source)
       at javax.media.jai.OpImage.getTile(Unknown Source)
       at com.sun.media.jai.util.RequestJob.compute(Unknown Source)
       at com.sun.media.jai.util.WorkerThread.run(Unknown Source)
Caused by: org.esa.snap.core.gpf.OperatorException: 600
       at org.esa.snap.engine_utilities.gpf.OperatorUtils.catchOperatorException(OperatorUtils.java:434)
       at org.esa.snap.dem.gpf.AddElevationOp.computeTile(AddElevationOp.java:209)
       at org.esa.snap.core.gpf.internal.OperatorImage.computeRect(OperatorImage.java:82)
       at javax.media.jai.SourcelessOpImage.computeTile(Unknown Source)
       ... 36 more
Caused by: java.lang.ArrayIndexOutOfBoundsException: 600
       at org.esa.snap.core.dataop.dem.BaseElevationTile.getSample(BaseElevationTile.java:70)
       at org.esa.snap.core.dataop.dem.BaseElevationModel.getSamples(BaseElevationModel.java:177)
       at org.esa.snap.core.dataop.resamp.BiCubicInterpolationResampling.resample(BiCubicInterpolationResampling.java:105)
       at org.esa.snap.dem.dataio.copernicus.CopernicusElevationModel.getElevation(CopernicusElevationModel.java:73)
       at org.esa.snap.dem.dataio.DEMFactory.getLocalDEM(DEMFactory.java:182)
       at org.esa.snap.dem.gpf.AddElevationOp.computeTile(AddElevationOp.java:182)
       ... 38 more

Error: [NodeId: idepix] 600


Fixed

Details

Assignee

Reporter

Relevance

Fix versions

Priority

Created 23 July 2024 at 09:50
Updated 30 August 2024 at 13:00
Resolved 30 August 2024 at 13:00