1 of 67

Joan Sturm, David Oesch

Federal Office of Topography swisstopo

swissEO

Satellite data for Switzerland and application examples

2 of 67

Introduction Sentinel-2

3 of 67

Sentinel-2: the mission

  • Sentinel-2A (2015), S2B (2017) und S2C (2024)
  • Orbit: 786 km altitude
  • Revisit time: 5 days

3

4 of 67

Sentinel-2: the technology

Spatial resolution [m]

Wavelength [nm]

4

5 of 67

Sentinel-2: the processing levels

Level-0/1A/1B

Raw data

Level-1C (usable)

Geometric correction

Level-2A (ready for analysis)

Atmospheric correction

swissEO S2-SR

Optimised for Switzerland

5

6 of 67

swissEO S2-SR: Analysis-ready-data (ARD)

Additional processing steps:

  • Uniform projection CH-LV95
  • Mosaiced image tiles
  • Co-registration
  • Clouds and cloud shadow mask
  • Terrain shadow mask

6

7 of 67

Projection and mosaicing

UTM 31N

UTM 32N

7

8 of 67

Co-registration

  • AROSICS
  • S2 GRI (v100)
  • SWISSIMAGE/SPOT (v200)

→ ‘reg_dx’, ‘reg_dy’

8

9 of 67

Clouds and cloud shadow mask

  • CloudScore+ (v100)
  • OmniCloudMask (v200)
  • Cloud probability [0-100]
  • Cloud mask [0, 1]

→ ‘cloudProbability’, ‘cloudAndCloudShadowMask’

9

10 of 67

Illumination angle and terrain shadow

  • Illumination angle [0-90°]
  • Cast shadow [100]

→ ‘terrainShadowMask’

10

11 of 67

swissEO S2-SR

Bands:

  • 10 m – R, G, B, NIR
  • 20 m – RE, NIR, SWIR I

Temporal coverage:

  • April 2017 – today

Additional information:

  • Masks: clouds and cloud shadow, terrain
  • Displacement vectors
  • Processing journal

11

12 of 67

swissEO products

13 of 67

Portfolio

13

14 of 67

Vegetation indices

15 of 67

Vegetation indices

  •  

Huete (2004)

15

16 of 67

Vegetation Health Index (VHI): concept

16

17 of 67

Illustration VHI (1)

asdfg

SWISSIMAGE

swissEO S2-SR

swissEO VHI

17

18 of 67

Illustration VHI (2)

Sommer 2017

Sommer 2018

Extremely stressed

Stressed

Lightly stressed

Normal

Good

Excellent

No data

Severely stressed

18

19 of 67

swissEO VHI: advantages

Sommer 2019

Sommer 2021

19

20 of 67

swissEO VHI: challenges

20

21 of 67

Plausibility check: VHI vs. in-situ measurements

Dendrometer

TreeNet – Hohtenn-Gampel

21

22 of 67

VHI – in-situ – CDI

Not dry

Slightly dry

Dry

Very dry

Extremely dry

Combined drought index (CDI)

22

23 of 67

swissEO NDVIz

  • Forest vitality

  • Z-Score:

  • Long-term effects in relation to climate reference period (1991-2020)

23

24 of 67

swissEO NDVIdiff

  • Difference:

NDVIthis year – NDVIprevious year

  • Forest changes
    • Positive: growth
    • Negative: loss

  • Short-term effects

24

25 of 67

swissEO: products

swissEO VHI:

  • Daily operational (2017 – today) / monthly historical (1991 – 2017)
  • Only forest / for all vegetation types
  • 10m raster data / aggregated warning regions

swissEO NDVIz:

  • Two-month means (June/July, July/Aug, Aug/Sep) / forest / 10m raster

swissEO NDVIdiff:

  • Two-month means (June/July, July/Aug, Aug/Sep) / forest / 10m raster

25

26 of 67

Data access

27 of 67

Cloud native: data by region of interest and scale

KI-generiert mit Google Gemini

27

28 of 67

STAC – SpatioTemporal Asset Catalog

  • Common language for describing and organizing (geospatial) data
  • Catalog → Collection → Item → Asset

  • https://data.geo.admin.ch
    • S2-SR V100
    • VHI V100

28

29 of 67

Data formats and services

Formats

  • COGTIFF (Cloudnative Raster)
  • PARQUET (Cloudnative Vector)
  • CSV
  • JSON

Services

  • BROWSER / STAC API
  • WMS

29

30 of 67

30

31 of 67

Hands-on exercises

Learn how to discover, access, and analyze SwissEO vegetation data using web tools, QGIS, and Python.

32 of 67

Hands-on Examples

Objectives:

  • Understand forest vegetation dynamics using satellite data
  • Access data via STAC
  • Perform basic analysis (NDVI / NDMI)

Structure:

  1. Visual comparison (Web)
  2. QGIS workflow
  3. Python STAC access
  4. Python NDVI calculation

Presentation: https://tinyurl.com/39f7htnx

32

33 of 67

Learning Objectives

After this session, you will be able to:

  • Interpret NDVI / VHI maps
  • Load COG data into GIS
  • Query STAC catalogs in Python
  • Perform simple forest vegetation analysis in Python

33

34 of 67

Exercise 1 - Vegetation Condition Analysis

Task:

  • Compare forest vegetation condition across time
  • Identify drought signals

Tool:

  • Web viewer

34

35 of 67

Exercise 1 - Data Source

  • SwissEO VHI products
  • Access via:
    • swisstopo drought portal: www.swisstopo.admin.ch/en/drought

35

36 of 67

Exercise 1 - Leuk

  • Region: Leuk (13.08.2003)
  • Questions:
    • Where is forest vegetation stressed?
    • How does it change over time?
    • Select Date: 1 May 2004
    • Select Date: 1 August 2002
      • Coarse resolution
      • Fullscreen windows and compare mode

36

37 of 67

Exercise 1 - Bitsch

  1. Open drought monitoring map
  2. Choose 11. June 2023
  3. Navigate to Bitsch
  4. Compare : activate button
  5. Choose 19. August 2023
  6. Switch between Forest / Vegetation
  7. Full screen View in map.geo.admin.ch
  8. Add your date of interest to the map, eg “ Aerial image of 22/23

37

38 of 67

Exercise 1 - Discussion

  1. What patterns do you see?
  2. Burned vs drought signal?
  3. Limitations of visual interpretation?

38

39 of 67

Exercise 2 - Working with Satellite Data in QGIS

Task:

  • Load satellite data via STAC
  • Visualize and calculate RGB and NDVI indices

Tool:

  • QGIS
    • Tipp: Plugin: “Swiss Geo Downloader “ and “ Swiss Locator”
  • SwissEO data via STAC

39

40 of 67

Exercise 2 - Load Sentinel-2 Data

Dataset: Sentinel-2 Surface Reflectance ( hint: 2023-06-25t dataset ..)

Steps: as defined in

-> https://github.com/swisstopo/topo-satromo/blob/main/codegallery/desktop/qgis/qgis-cog.md

  1. Search via STAC BROWSER or CALENDAR
  2. Load COG into QGIS
  3. Inspect bands create an RGB NDVI

40

41 of 67

Exercise 2 - Band description : PDF “Additional content information”�

41

42 of 67

Exercise 2 - Visualization

Task:

  • Generate True Color (RGB)
  • Generate False Color (NIR, Red, Green)

Interpretation:

Burned vs Healthy vegetation vs dry areas

42

43 of 67

Exercise 2 - NDVI Calculation

  • Formula : NDVI = (NIR - Red) / (NIR + Red)

  • QGIS Raster Calculator

43

44 of 67

44

45 of 67

Exercise 2 - NDVI Results

45

46 of 67

Exercise 2 - add swissEO NDVIz

46

47 of 67

Exercise 2 - NDVI z Description

47

48 of 67

Exercise 2 - NDVIz Results

48

49 of 67

Exercise 2 - Discussion

  • Difference NDVI vs NDVIz?
  • Which index for drought / Burned areas?

49

50 of 67

Exercise 3 - Access swissEO Data with Python

Task:

  • Query STAC
  • Load imagery

Tool:

  • Python Notebook
  • Libraries:
    • pystac-client
    • rasterio

50

51 of 67

Exercise 3 - Access swissEO Data

Work with one of the options below

A) VSCODE or PyCharm:

  • Download stac-introduction.ipynb

B) Google COLAB (google account mandatory)

  • Open Online STAC INTRO

C) Binder (Free, but slow)

  • Open Online STAC INTRO

  • Click on

51

52 of 67

Exercise 4 - Access swissEO Data with Python TIME SERIES and NDVI

Task:

  • Query STAC
  • Load imagery
  • Calculate NDVI
  • Calculate NDVI timeseries

Tool:

  • Python Notebook
  • Libraries:
    • pystac-client
    • rasterio

52

53 of 67

Exercise 4 – Calculate NDVI and TIMESERIES

Work with one of the options below

A) VSCODE:

  • Download stac-image-processing.ipynb

B) Google COLAB (google account mandatory)

  • Open Online STAC IMAGE PROCESSING

C) Binder (Free, but slow)

  • Open Online STAC IMAGE PROCESSING

  • Click on

53

54 of 67

Summary

What we learned:

  • Visual analysis
  • GIS workflow
  • Python access & Index calculation

Key Takeaways

  • STAC enables scalable access
  • COG allows direct usage
  • NDVI/VHI/NDVIz = powerful indicators

54

55 of 67

Outlook

  • swissEO S2-SR v2.00:
    • Improved co-registration and cloud masking
    • All Sentinel-2 bands
    • Quicker availability

https://data.geo.admin.ch/browser/index.html#/collections/ch.swisstopo.swisseo_s2-sr_v200

  • swissEO VHI v2.00
    • Synthetic continuous NDVI
    • Gap-filled temperature data

55

56 of 67

56

57 of 67

57

58 of 67

Links

https://github.com/swisstopo/topo-satromo/tree/main/codegallery

  • Mailing liste →

https://forms.office.com/e/5AcZBNKzQD

Kontakt: joan.sturm@swisstopo.ch

david.oesch@swisstopo.ch

58

59 of 67

59

60 of 67

The «technology": of tools and products

BGDI

API

Web services

API

Webservices

AWS

GOOGLE EARTH ENGINE

GITHUB

G. ACTION

GOOGLE EARTH ENGINE

EUMETSAT

COPERNICUS

swisstopo

METEOSUISSE

Data catalogue

Tools

API

Web services

60

61 of 67

QGIS – Plugin «Swiss Geo Downloader»

https://plugins.qgis.org/plugins/swissgeodownloader/

61

62 of 67

Google Earth Engine Asset

62

63 of 67

Original NDVI Sentinel-2

Gap-filled NDVI Sentinel-2

63

64 of 67

«wolkenfreie & lückengefüllte Zeitreihe auf Pixelebene»: Waldbrand Bitsch VS Juni 2023�« série chronologique sans nuages et sans lacunes au niveau des pixels » Incendie de forêt à Bitsch VS Juni 2023

64

65 of 67

65

66 of 67

In Action: Canton Bern « Storm: Forest damage detection»

66

67 of 67

In Action: City Bern «Which tree needs water»

67