There is Already an Image Reader - Sentinel-1

I am getting this error consistently while processing Sentinal-1 GRD data.
Is there any problem with the installation? Here’s the detailed warning:

java.lang.IllegalStateException: There is already an image reader.
at org.esa.snap.dataio.geotiff.GeoTiffProductReader.readProductNodesImpl(GeoTiffProductReader.java:108)
at org.esa.snap.core.dataio.AbstractProductReader.readProductNodes(AbstractProductReader.java:178)
at org.esa.snap.core.dataop.dem.ElevationFile.getLocalFile(ElevationFile.java:138)
at org.esa.snap.core.dataop.dem.ElevationFile.getFile(ElevationFile.java:106)
at org.esa.snap.core.dataop.dem.ElevationFile.getTile(ElevationFile.java:83)
at org.esa.snap.core.dataop.dem.BaseElevationModel.getSamples(BaseElevationModel.java:161)
at org.esa.snap.core.dataop.resamp.BilinearInterpolationResampling.resample(BilinearInterpolationResampling.java:82)
at org.esa.snap.core.dataop.dem.BaseElevationModel.getElevation(BaseElevationModel.java:99)
at org.esa.snap.dem.dataio.DEMFactory.getLocalDEM(DEMFactory.java:182)
at org.esa.s1tbx.sar.gpf.geometric.RangeDopplerGeocodingOp.computeTileStack(RangeDopplerGeocodingOp.java:861)
Caused: org.esa.snap.core.gpf.OperatorException: There is already an image reader.
at org.esa.snap.engine_utilities.gpf.OperatorUtils.catchOperatorException(OperatorUtils.java:440)
at org.esa.s1tbx.sar.gpf.geometric.RangeDopplerGeocodingOp.computeTileStack(RangeDopplerGeocodingOp.java:1067)
at org.esa.snap.core.gpf.internal.OperatorImageTileStack.computeRect(OperatorImageTileStack.java:122)
[catch] 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.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.raster.gpf.LinearTodBOp.computeTile(LinearTodBOp.java:116)
Caused: org.esa.snap.core.gpf.OperatorException: There is already an image reader.
at org.esa.snap.engine_utilities.gpf.OperatorUtils.catchOperatorException(OperatorUtils.java:440)
at org.esa.snap.raster.gpf.LinearTodBOp.computeTile(LinearTodBOp.java:176)
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.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.internal.OperatorImageTileStack.computeRect(OperatorImageTileStack.java:116)
[catch] 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)

can you please share the XML of the graph?

I had the same problem. After many attempts, I found that I was using the X86 version of SNAP, but my computer was X64. Therefore, it runs successfully after reinstalling the correct type of software. Above is my solution, for your reference.

2 Likes

Hi
Please give me solution for the above question ,“There is already an image reader- Sentinel1”

Running into this error while executing a processing graph for Sentinel-1 vessel detection.

Experiencing same issue and this is my copy of the xml. Can you help please?

<graph id="Graph">
  <version>1.0</version>
  <node id="Read">
    <operator>Read</operator>
    <sources/>
    <parameters class="com.bc.ceres.binding.dom.XppDomElement">
      <useAdvancedOptions>false</useAdvancedOptions>
      <file>${in}</file>
      <copyMetadata>true</copyMetadata>
      <bandNames/>
      <pixelRegion>0,0,25414,16821</pixelRegion>
      <maskNames/>
    </parameters>
  </node>
  <node id="Land-Sea-Mask">
    <operator>Land-Sea-Mask</operator>
    <sources>
      <sourceProduct refid="Read"/>
    </sources>
    <parameters class="com.bc.ceres.binding.dom.XppDomElement">
      <sourceBands/>
      <landMask>true</landMask>
      <useSRTM>true</useSRTM>
      <geometry/>
      <invertGeometry>false</invertGeometry>
      <shorelineExtension>50</shorelineExtension>
    </parameters>
  </node>
  <node id="Calibration">
    <operator>Calibration</operator>
    <sources>
      <sourceProduct refid="Land-Sea-Mask"/>
    </sources>
    <parameters class="com.bc.ceres.binding.dom.XppDomElement">
      <sourceBands/>
      <auxFile>Product Auxiliary File</auxFile>
      <externalAuxFile/>
      <outputImageInComplex>false</outputImageInComplex>
      <outputImageScaleInDb>false</outputImageScaleInDb>
      <createGammaBand>false</createGammaBand>
      <createBetaBand>false</createBetaBand>
      <selectedPolarisations/>
      <outputSigmaBand>true</outputSigmaBand>
      <outputGammaBand>false</outputGammaBand>
      <outputBetaBand>false</outputBetaBand>
    </parameters>
  </node>
  <node id="AdaptiveThresholding">
    <operator>AdaptiveThresholding</operator>
    <sources>
      <sourceProduct refid="Calibration"/>
    </sources>
    <parameters class="com.bc.ceres.binding.dom.XppDomElement">
      <targetWindowSizeInMeter>40</targetWindowSizeInMeter>
      <guardWindowSizeInMeter>250.0</guardWindowSizeInMeter>
      <backgroundWindowSizeInMeter>800.0</backgroundWindowSizeInMeter>
      <pfa>12.5</pfa>
      <estimateBackground>false</estimateBackground>
    </parameters>
  </node>
  <node id="Object-Discrimination">
    <operator>Object-Discrimination</operator>
    <sources>
      <sourceProduct refid="AdaptiveThresholding"/>
    </sources>
    <parameters class="com.bc.ceres.binding.dom.XppDomElement">
      <minTargetSizeInMeter>40.0</minTargetSizeInMeter>
      <maxTargetSizeInMeter>250.0</maxTargetSizeInMeter>
    </parameters>
  </node>
  <node id="Write">
    <operator>Write</operator>
    <sources>
      <sourceProduct refid="Object-Discrimination"/>
    </sources>
    <parameters class="com.bc.ceres.binding.dom.XppDomElement">
      <file>${out}</file>
      <formatName>BEAM-DIMAP</formatName>
    </parameters>
  </node>
  <applicationData id="Presentation">
    <Description/>
    <node id="Read">
      <displayPosition x="30.0" y="93.0"/>
    </node>
    <node id="Land-Sea-Mask">
      <displayPosition x="107.0" y="93.0"/>
    </node>
    <node id="Calibration">
      <displayPosition x="227.0" y="94.0"/>
    </node>
    <node id="AdaptiveThresholding">
      <displayPosition x="192.0" y="145.0"/>
    </node>
    <node id="Object-Discrimination">
      <displayPosition x="196.0" y="187.0"/>
    </node>
    <node id="Write">
      <displayPosition x="382.0" y="187.0"/>
    </node>
  </applicationData>
</graph>```