DISCLAIMER: THE TEXT ON THIS PAGE IS LIKELY LARGELY INCORRECT AND IS JUST A PLACEHOLDER GENERATED BY CLAUDE. THIS STATEMENT WILL BE REMOVED WHEN THIS PAGE HAS BEEN EDITED FOR ACCURACY.

Overview

Vertical land motion (VLM) — the sinking or rising of land — dramatically modulates the relative sea level experienced by coastal communities. Cities like Jakarta, Ho Chi Minh City, and Houston are sinking at rates of 2–10 cm/yr due to groundwater extraction, hydrocarbon withdrawal, and sediment compaction, making local sea level rise effectively much faster than the global mean.

This project uses Sentinel-1 Interferometric SAR (InSAR) time series combined with continuous GPS to measure VLM across coastal megacities and low-lying deltas.

Interactive VLM Map

GPS station velocities (arrows) and InSAR-derived subsidence rates (color ramp, cm/yr). Negative values = subsidence. Click stations for time series.

Methodology

Sentinel-1 SBAS Processing

We process 3–5 years of Sentinel-1 A/B acquisitions using the Small Baseline Subset (SBAS) approach:

  1. Coregistration — all SLCs co-registered to a single master scene
  2. Interferogram formation — pairs selected with Bperp < 150 m, Btemp < 60 days
  3. Phase unwrapping — SNAPHU with statistical cost function
  4. Atmospheric correction — ERA5 tropospheric delay model
  5. Time series inversion — SBAS least-squares for LOS velocity field
  6. GPS calibration — reference field to GPS CORS velocities

Decomposing LOS into Vertical

With ascending and descending geometries:

import numpy as np

def decompose_los_to_vertical(asc_los, desc_los, 
                               asc_inc=39, desc_inc=41,
                               asc_az=350, desc_az=190):
    """
    Decompose ascending + descending LOS velocities to vertical.
    Assumes negligible E-W motion (valid for subsidence-dominated areas).
    
    All angles in degrees.
    """
    inc_a = np.radians(asc_inc)
    inc_d = np.radians(desc_inc)
    az_a  = np.radians(asc_az)
    az_d  = np.radians(desc_az)
    
    # Unit vectors: [E, N, Up]
    u_a = [-np.sin(inc_a)*np.sin(az_a),
           -np.sin(inc_a)*np.cos(az_a),
            np.cos(inc_a)]
    u_d = [-np.sin(inc_d)*np.sin(az_d),
           -np.sin(inc_d)*np.cos(az_d),
            np.cos(inc_d)]
    
    # Solve for vertical assuming horizontal negligible
    # v_los = cos(inc) * v_up  =>  v_up = v_los / cos(inc)
    v_up_from_asc  = asc_los  / np.cos(inc_a)
    v_up_from_desc = desc_los / np.cos(inc_d)
    
    # Weighted average
    v_vertical = 0.5 * (v_up_from_asc + v_up_from_desc)
    return v_vertical

Results: Jakarta Case Study

Jakarta is one of the fastest-sinking cities on Earth. Our InSAR analysis (2016–2023) reveals:

District VLM (cm/yr) Rel. SLR by 2050 (cm)
North Jakarta −8.1 135
West Jakarta −4.3 76
Central Jakarta −2.1 47
South Jakarta −0.8 29

Code & Data

Processing scripts and InSAR velocity fields available on GitHub. Raw Sentinel-1 data available via ESA’s Copernicus Open Access Hub.