The Calculator lets you do raster math on Sentinel-1 imagery: pick scenes, give them short aliases (A, B, Cβ¦), then write expressions that combine them β ratios, differences, indices, speckle-filtered composites β and run them over your area of interest.
A, B, Cβ¦A/B, (A-B)/(A+B)).Anything you can express as per-pixel arithmetic on backscatter: change ratios between two dates, polarisation ratios (VH/VV), normalised indices, or multi-date RGB composites β without writing a script or opening a notebook.
Tip: Start with two scenes aliased
AandBand the expressionA/Bto see a simple change ratio, then build up from there.
Define where and when the calculation applies.
| Tool | What it does |
|---|---|
| DRAW AOI | Draw a rectangular area of interest. |
| RESIZE AOI | Adjust the existing AOI. |
| MARK POINT | Drop a single point. |
| DELETE | Remove the current AOI / point. |
Enter the from and to dates. The date range limits which acquisitions appear in Available scenes.
Note: The AOI also bounds the output raster, so keep it tight β the result size is limited and a large area over a long range can exceed those limits.
The AOI is capped at 10 000 kmΒ², with a further limit of 2Β° per side. Drawing or resizing past either one clamps the rectangle around its centre and says so, rather than letting the API refuse the run later.
Above roughly 62Β°N the degree limit is the one that bites first, because a degree of longitude is short there β 100 km of longitude is 1.96Β° at 62Β°N but 2.37Β° at 65Β°N. The message names whichever limit applied.
A large AOI is legitimate; it is simply coarse. The result is always rasterised at 1500 px across the AOI, so see the m/px chip on the map after RUN, and use recompute this view to trade area for detail in either direction.
After you set an area and date range, click SEARCH to list the Sentinel-1 acquisitions that cover it. CLEAN clears the list.
Click a scene to select it as a calculation input. Each selected scene is assigned an alias in the Selected inputs panel β A for the first, B for the second, and so on β which you then reference in your expressions.
Tip: The order you select scenes sets their alias letters. Pick your "before" scene first (
A) and "after" second (B) soA/BandB-Aread naturally.
This panel lists the scenes you've chosen, each with the alias you use in expressions. The first selected scene is A, the second B, and so on.
A, B, A/B, (A-B)/(A+B), etc.If a scene has both VV and VH, the alias resolves to the polarisation band you selected. For polarisation math (e.g. VH/VV on the same date), select the same acquisition's two bands as separate inputs.
Tip: Keep the input list short and meaningful β two to four aliases covers most change-detection and index expressions.
Click Ζ MATH LIBRARY to open the expression workbench. It has three tabs.
The main tab β assemble your expression here.
A, B, Cβ¦) from the Selected inputs panel.Examples:
| Expression | Meaning |
|---|---|
A/B | Backscatter change ratio between two dates. |
(A-B)/(A+B) | Normalised difference between two dates. |
VH/VV | Polarisation ratio (select both bands as inputs). |
Shows the equivalent Python script for your expression, ready to copy into a notebook or pipeline β handy for reproducing the calculation outside the app.
The function documentation β the operators and functions you can use (arithmetic, ratios, common indices, speckle filters) with short descriptions.
Once your expression is ready, use the footer actions β Test, Run & Save.
The footer of the Math Library holds the actions that validate and execute your work.
| Action | What it does |
|---|---|
| TEST | Validates the expression syntax and checks the inputs resolve β fast, computes nothing. Fix any reported error first. |
| RUN | Computes the expression over your AOI and draws the result as a map layer. |
| NEW | Starts a fresh, empty expression. |
| SAVE | Downloads the computed result (packaged as a ZIP). |
Note: Outputs are size-limited by the AOI and date range. If RUN reports the result is too large, shrink the AOI or narrow the dates.
The API renders each raster over mean Β± 2Ο of the computed float values. On real SAR algebra output that leaves the image dark and bunched: the histogram is strongly right-skewed, with a median around DN 35 of 255 and a long bright tail. Measured on a live run, the middle 50% of pixels occupied only 13β19% of the available tonal range.
A linear percentile clip does not help much, because the 2nd and 98th percentiles are already near the ends of the range β there is nothing to clip. What works is a non-linear map:
| Setting | What it does | Middle 50% of pixels then occupy |
|---|---|---|
| Raw | as rendered by the API β mean Β± 2Ο | 13β19% |
| Equalise | maps the histogram's CDF β equal pixel counts get equal tonal range | ~49% |
| 2β98% | linear clip of both tails | 20β27% |
| Ξ³ 0.5 | square-root map, lifts the dark end | 17β23% |
| Minβmax | full range, linear | same as Raw in practice |
Equalise is the default for that reason. The stretch runs in the browser, so switching is instant and costs no recompute.
Hover a layer button to see the value interval on screen. For the linear settings this is a true interval; under Equalise the full range is shown with a note, since the mapping is non-linear and no single interval describes it. The pixel reader is never stretched β it always reports true computed values.
A run is rasterised at AOI_side / 1500 pixels, never finer than the 10 m native pixel. So a small AOI comes back at full detail, while a wide one is coarser:
| AOI across | Pixel size |
|---|---|
| 0.15Β° (~17 km) | 10 m β native |
| 0.25Β° (~28 km) | ~18 m |
| 0.5Β° (~55 km) | ~37 m |
| 1.0Β° (~110 km) | ~74 m |
Pressing RUN again after zooming the map changes nothing: RUN uses the AOI, not the view. Only a smaller AOI rasterises finer.
Zooming the map only magnifies those pixels β the detail is not in the image to be found. A chip in the bottom-left corner of the map shows the current pixel size β green when you are at native resolution, amber when the raster is coarser than the data. The same figure appears under RUN, but that panel is hidden when the function window is closed, so the chip on the map is the one to watch while you zoom.
When you are not, zoom or pan to the area you care about and use recompute this view: it re-runs the same formulas over the visible extent, which the same 1500 px cap then rasterises across that extent.
Whatever layers you have switched on stay on across a recompute β inputs and results alike β so a zoom-and-recompute keeps the comparison you were looking at. A recompute never switches a layer off. If a formula has gained a result since the last run, that result is switched on as well. On a first run, when nothing is displayed yet, the last formula's result is shown.
It works in both directions. Zoom in and the pixels get finer; zoom out and you cover more ground at a coarser pixel β the button states the pixel size you would get and labels it finer or wider area, so the trade is explicit. It appears whenever the view differs from the current result, and reports the limit if the visible extent is larger than the 10 000 kmΒ² cap.
The Layer Toggles panel controls the result rasters drawn on the map and the speckle filter applied to displayed scenes.
Each formula you RUN adds a layer. Toggle layers on and off here to compare outputs against each other or against the input scenes.
SAR imagery has inherent "speckle" β a grainy, salt-and-pepper texture. The filter buttons smooth it for display:
| Filter | Character |
|---|---|
| None | Show the backend-stretched data as-is. |
| Median | Simple, robust smoothing; good default. |
| Lee | Edge-preserving adaptive filter. |
| Frost | Adaptive filter tuned for stronger speckle. |
Tip: Filters are a display aid. For quantitative work, read values with None selected, then switch on a filter only to make patterns easier to see.