Radar sees at night. Now your COP does too.

Drop a Sentinel-1 SAFE zip on the server the same way you'd register a COG, and it renders as dB-scale amplitude through the same ArcGIS REST ImageServer that drives the rest of the platform — speckle filtering included, all in-process via GDAL and pure C# math. No SNAP install required to view; add the optional SNAP sidecar when you need analysis-ready terrain-corrected backscatter.

Sentinel-1 GRD/SLCdB amplitudeLee / Refined Lee / Gamma-Map TerraSAR-X / PAZNITF SICDSNAP gpt sidecar
Amplitude viewing, zero toolbox

Upload a SAFE zip. Get a rendered scene.

SAR products register through the same upload path as any COG — the accept-list includes .safe, .zip, .dim, and .par. Rendering goes through standard ImageServer exportImage calls with a SAR raster function in the rendering rule.

  • Correct dB display — 10·log10(|z|² + ε) amplitude with PercentClip stretch on a grayscale ramp, the standard −25..−5 dB backscatter view.
  • Complex data handled natively — SLC I+Q bands are read directly (CInt16/CFloat32) and converted to magnitude, intensity, or phase in pure C#.
  • Cyclic phase rendering — phase in radians on an HSV rainbow that wraps correctly at ±π, with no false discontinuities.
  • Inline radiometric calibration — GDAL's SENTINEL1_CALIB subdatasets expose sigma-0, beta-0, and gamma views of Sentinel-1 products.
http://localhost:5059
# register a Sentinel-1 GRD like any COG
curl -F "file=@S1A_IW_GRDH_1SDV_...zip" \
  /api/cog/packages

# dB backscatter via a rendering rule
GET /arcgis/rest/services/{id}/ImageServer/exportImage
    ?renderingRule={"rasterFunction":"SarAmplitudeDb"}

# speckle-filtered view
    ?renderingRule={"rasterFunction":"SpeckleLee",
      "rasterFunctionArguments":{"Window":7,"NLooks":1}}
Sensor coverage

Built-in GDAL drivers, no drop-ins

The bundled GDAL 3.13 runtime opens the major SAR product families out of the box.

🛰️

Sentinel-1 GRD & SLC

Open the .SAFE directory or the zip via the built-in SAFE driver. SLC complex bands come in as I+Q; derived amplitude, phase, and intensity views are computed on read.

📡

TerraSAR-X / PAZ

Complex and detected products through the built-in TSX driver.

🗄️

Legacy CEOS archives

ALOS PALSAR, JERS-1, ERS, and Radarsat-1 via the SAR_CEOS driver — historical radar holdings stay exploitable.

🆕

NewSpace SAR via NITF

ICEYE, Capella, and Umbra products in SICD/SIDD containers open through the built-in NITF driver, including complex data.

🧮

Pure C# SAR math

Speckle filters and dB/magnitude/phase conversions are dependency-free, fully unit-tested C# — no GDAL reference, no I/O in the math path.

🔎

Capability probing

The ImageServer service-info JSON advertises SAR support based on a live driver probe, so clients can discover what the server can render.

Speckle & display

Classical filters, honest conventions

Six SAR rendering templates ship in the catalog, alongside a sentinel-1 sensor profile.

🌫️

Speckle filter suite

  • Lee — general-purpose smoothing (sar-speckle-lee)
  • Gamma-Map — strongest smoothing on homogeneous areas (sar-speckle-gamma)
  • Refined Lee — best classical edge preservation (sar-speckle-refined-lee)
  • Enhanced Lee, Frost, and Lee-Sigma also implemented in the filter engine
🎚️

Display conventions honored

  • Amplitude — dB scale, PercentClip stretch, grayscale ramp
  • Phase — radians (−π..π) on a cyclic HSV rainbow
  • Coherence — 0..1 grayscale, with γ < 0.3 flagged as unreliable
  • Stretch engine supports MinMax, StdDev, PercentClip, and Log-dB

GRD products display in ESA's ground-range geometry, which is approximate; run the SNAP pipeline below for terrain-corrected output. True coherence requires a coregistered image pair — the coherence route currently returns magnitude as an honest stand-in.

Optional SNAP sidecar

One POST to analysis-ready backscatter

Point the server at ESA SNAP's gpt CLI and a single REST call runs the full chain: Apply-Orbit → Thermal-Noise-Removal → Calibration (σ⁰) → Speckle → Range-Doppler Terrain Correction → dB. The result registers as a new COG you add straight to the map.

  • GRD and SLC pipelines — SLC input automatically adds TOPSAR-Split and Deburst.
  • Sigma-0 / beta-0 / gamma-0 calibration with precision-orbit application and GRD border-noise removal.
  • Terrain correction against real DEMs — Copernicus 30 m Global DEM, SRTM 3-arc-second, or GETASSE30, output to EPSG:4326 or 3857.
  • Graceful degrade — with SNAP absent, /sar/process returns 503 with install instructions while all Phase-1 viewing keeps working.
SNAP gpt sidecar
# is SNAP wired up?
GET /arcgis/rest/services/sar/capabilities
{ "available": true, "version": "9.0.x" }

# run the analysis-ready chain
POST /arcgis/rest/services/{id}/ImageServer/sar/process
{ "productType": "GRD",
  "calibration": "sigma0",
  "speckleFilter": "RefinedLee",
  "terrainCorrection": true,
  "demName": "Copernicus 30m Global DEM",
  "convertToDb": true }  → outputCogId

A typical Sentinel-1 IW GRD scene takes 5–20 minutes for the full chain (terrain correction dominates); the default processing timeout is 30 minutes. SNAP is a separate ESA install (~600 MB–1 GB).

All-weather collection, one-map exploitation.

Register a Sentinel-1 scene next to your COGs, radar tracks, and blue force — and exploit it with the same REST surface your GIS clients already speak.