Earth observation data processing with ESA SNAP and the esa_snappy Python interface.
snap-python-project/
├── README.md
├── scripts/ # Python processing scripts
│ └── test_snappy.py
├── data/
│ ├── input/ # Source EO products (e.g. Sentinel .SAFE, .zip)
│ └── output/ # Processed results
└── notebooks/ # Jupyter notebooks for analysis
- macOS (Apple Silicon or Intel)
- ESA SNAP 13 — installed at
/Applications/esa-snap - Miniconda — installed at
~/miniconda3
curl -L -o /tmp/Miniconda3-latest-MacOSX-arm64.sh \
https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-arm64.sh
bash /tmp/Miniconda3-latest-MacOSX-arm64.sh -b -p ~/miniconda3Download the macOS ARM installer from step.esa.int and run it. Default install location: /Applications/esa-snap.
~/miniconda3/bin/conda create -n snappy python=3.12 -y~/miniconda3/envs/snappy/bin/pip install esa-snappy numpy/Applications/esa-snap/bin/snappy-conf ~/miniconda3/envs/snappy/bin/pythonNote: The command may hang after completing successfully. Press
Ctrl+Cand answernwhen asked to abort.
~/miniconda3/envs/snappy/bin/python scripts/test_snappy.pyYou should see output confirming esa_snappy and snapista are working, along with available GPT operators. JAI registry and SLF4J warnings are normal and can be ignored.
Activate the environment before working:
source ~/miniconda3/bin/activate snappyimport esa_snappy
from esa_snappy import ProductIO
product = ProductIO.readProduct("data/input/my_product.dim")
print(product.getName(), product.getSceneRasterWidth(), product.getSceneRasterHeight())from snapista import Graph, Operator
g = Graph()
g.add_node(Operator("Read", file="data/input/my_product.zip"))
g.add_node(Operator("Calibration"), "Read")
g.add_node(Operator("Write", file="data/output/calibrated.dim", formatName="BEAM-DIMAP"), "Calibration")
g.run()| Component | Location |
|---|---|
| SNAP installation | /Applications/esa-snap |
| Conda environment | ~/miniconda3/envs/snappy |
| Python executable | ~/miniconda3/envs/snappy/bin/python |
| SNAP config | ~/.snap |
| esa_snappy logs | ~/.snap/system/var/log/messages.log |