Apply Orbit File: continue even if no orbit file found


I would like to suggest an improvement to the S1 Toolbox.

I typically apply the same few preprocessing steps to every single S1 image. Since these steps are always the same, I do so in batch processing mode with a graph file defining the steps. The first step in that preprocessing graph is always “Apply Orbit File”, as any further radiometric and geometric corrections benefit from it.

Including this step in batch processing mode is somewhat problematic, though. Recent S1 images tend to not yet have Precise orbit info available yet and even older images occasionally don’t have them. This results in an OperatorException and any further processing from continuing, even though I would be content with using either Restituted or the orbits already included in the product metadata just as well.

To solve this, could the Apply Orbit File operator be extended in such way that it (optionally) does not throw any exceptions and passes through the input data when no requested orbit file is found? Or better yet, automatically attempt to apply the best orbit available (Precise, then Restituted) and do nothing otherwise.

Alternatively, since ignoring an exception that occurred in a previous step in a graph might be something that is useful elsewhere as well, I suppose it might be worth considering adding such functionality to the graph processing framework in a more general manner.

Best wishes,

Hi all, I bring back to the discussion this old post. I think the idea would be really useful. Also considering the good precision guarantee by resitituted orbit which are available right after the acquisition. Moreover I point out the fact that sometimes the orbit file (precise or restituted) is available in the ESA server but not in the ARRAY server (where actually SNAP is looking for). I wondering if in the future the two servers will be better synchronize or some other action will be taken to solve this issue.

Thank you for your work,


The apply orbit operator will automatically choose precise orbits particular for the mission.
I’ll add an optional check box to not fail if the orbit file is not found. A warning message will be logged but no popup message will be shown. If this is parameter is used, it will be up to you to see which orbit was used in the resulting product by looking at the abstracted metadata orbit state vector file.


This would be perfect! I appreciate you’re storing all the orbit files in your servers. This is super useful for the users! Anyway I would like to signal you that some files (few in my experience) which are available in the esa server are missing in yours. Eventually a resync would be a nice operation to do! :wink:


I’m also trying to use the “Apply Orbit File” function, with result operator exception:
org.esa.snap.framework.gpf.OperatorException: Apply-Orbit-File: no protocol: /
Using the “Restituted Orbit” auto download option gives me the same exception.
Is this a bug?

I already downloaded the Precise Orbit Ephemerides from
and copied into /home/user/.snap/auxdata/Orbits/Sentinel-1/POEORB , with no results. I also tried to copy into /home/user/.snap/auxdata/…

I’m using the SNAP beta version (2.0.0-20150902) and I want to do some interferometric analysis, including phase to height conversion.

From what I read above, I understood the Restituted Orbits are automatically downloaded when data use, is that correct?

Is there any way so I can use the Precise Orbit Ephemerids?

Thank You very much.

After update Java to JDK 8, downloaded and installed, I can use the function “Apply Orbit File”.

Before, I was using a version installed and updated from

1 Like

Ok so if the selected orbit is not found it does NOT apply any orbit, is it right? I tried and indeed in the abstracted metadata no values are reported. But it would not be better if the selection is hierarchic by default? No precise go for resituted / no resituted go for nothing?

Thanks again


I have been trying to apply the orbit files using the python snappy framework and am a bit confused by the results I am seeing when trying to validate whether the orbit files have been applied to products or not. The orbitFileOperator has a property / field productUpdated which is supposed to be true if the orbit file was successfully applied. Querying this value, the result is False or None (python) but yet when checking the metadata processing graph , it appears that the operator has been applied. So has the operator indeed been applied? and why is the productUpdated = false, if no errors or exceptions are reported. What is the best way to validate this process?

After the orbits have been successfully applied, the field
orbit_state_vector_file in the Abstracted Metadata gets updated with the
file name of the new orbit file.

Thanks for replying so quickly and for the help, that’s great!