Semantic data cubes utilising free and open-access EO-data to generate spatially-explicit evidence for environmental monitoring:

applied use-case in Syria based on Sentinel-2 data


Master thesis
by H. Augustin, BA&Sc
Supervised by Dr. D. Tiede & M. Sudmanns, MSc

University of Salzburg
Department of Geoinformatics - Z_GIS

Masters Exam | 30.07.2018

18 January 2017

24 November 2017

13 April 2018

22 July 2018

How can these images be transformed into information?

Semantic Enrichment

assigning meaning to (calibrated) pixel values

Semantic Enrichment

Preliminary Classification with SIAM™

a priori knowledge-based

decision-tree

fully automatic

based on per-pixel

spectral values

semi-concepts

Example: 61 Semi-concepts

18 January 2017

24 November 2017

13 April 2018

22 July 2018

Challenges to Tackle

  • increasing number of free and open EO data sources
  • images alone have no inherent meaningful information
  • few automated methods for processing and analysis
  • lack of standardised global information to support global priority agendas (e.g. UN-SDGs)

Objectives

  • explore ways free and open EO can contribute to global initiative indicators
  • develop a highly automated, transferable, scalable workflow
  • utilise all Sentinel-2 data available for the study area
  • improve knowledge and experience with Linux, Python, ODC, and Jupyter notebooks
  • investigate repeatable, reliable, semi-automated information extraction using semi-concepts

Automated Workflow

Open-Source Tools

Download

Copernicus Open Access Hub
Sentinel-2

Re-format

6 band stack
resample to 10m
8-bit

Semantic Enrichment

Preliminary Classification with SIAM™

create batch file to launch SIAM™

Generate ODC Metadata


						creation_dt: '2018-01-09T13:20:56Z'
						extent:
						  center_dt: '2017-05-28T08:10:43.651Z'
						  coord:
						    ll: {lat: 36.051578712481756, lon: 37.88931628784717}
						    lr: {lat: 36.056674985123045, lon: 39.10836845745278}
						    ul: {lat: 37.04124978409559, lon: 37.87506473735679}
						    ur: {lat: 37.04653228058925, lon: 39.10975932077835}
						  from_dt: '2017-05-28T08:10:43.651Z'
						  to_dt: '2017-05-28T08:10:43.651Z'
						format: {name: ENVI}
						grid_spatial:
						  projection:
						    geo_ref_points:
						      ll: {x: 399960, y: 3990240}
						      lr: {x: 509760, y: 3990240}
						      ul: {x: 399960, y: 4100040}
						      ur: {x: 509760, y: 4100040}
						    spatial_reference: PROJCS["WGS 84 / UTM zone 37N",GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS
						      84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",39],PARAMETER["scale_factor",0.9996],PARAMETER["false_easting",500000],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["Easting",EAST],AXIS["Northing",NORTH],AUTHORITY["EPSG","32637"]]
						id: 3419725c-7f5c-42f8-82ce-df6f07c1b1fd
						image:
						  bands:
						    18SpCt: {layer: 1, path: siamoutput/T37SDA_20170528T080611_calrefbyt_lndstlk_SIAMCr_18SpCt_r88v7.dat}
						    33SharedSpCt: {layer: 1, path: siamoutput/T37SDA_20170528T080611_calrefbyt_lndstlk_SIAMCr_33SharedSpCt_r88v7.dat}
						    48SpCt: {layer: 1, path: siamoutput/T37SDA_20170528T080611_calrefbyt_lndstlk_SIAMCr_48SpCt_r88v7.dat}
						    96SpCt: {layer: 1, path: siamoutput/T37SDA_20170528T080611_calrefbyt_lndstlk_SIAMCr_96SpCt_r88v7.dat}
						    HazePentarnaryMask: {layer: 1, path: siamoutput/T37SDA_20170528T080611_calrefbyt_lndstlk_SIAMCr_CAV_HazePentarnaryMask.dat}
						    VegBinaryMask: {layer: 1, path: siamoutput/T37SDA_20170528T080611_calrefbyt_lndstlk_SIAMCr_CAV_VegBinaryMask.dat}
						    cBrightness: {layer: 1, path: siamoutput/T37SDA_20170528T080611_calrefbyt_lndstlk_SIAMCr_SF_cBrightness.dat}
						    fRatioGreennessIndex: {layer: 1, path: siamoutput/T37SDA_20170528T080611_calrefbyt_lndstlk_SIAMCr_CNV_fRatioGreennessIndex.dat}
						    nodata: {layer: 1, path: T37SDA_20170528T080611_nodata.dat}
						instrument: {name: SIAM}
						lineage:
						  source_datasets:
						    level1:
						      acquisition:
						        groundstation: {code: SGS_}
						      creation_dt: '2017-05-28T08:10:43.000000Z'
						      extent:
						        center_dt: '2017-05-28T08:10:43.651Z'
						        coord:
						          ll: {lat: 36.051578712481756, lon: 37.88931628784717}
						          lr: {lat: 36.056674985123045, lon: 39.10836845745278}
						          ul: {lat: 37.04124978409559, lon: 37.87506473735679}
						          ur: {lat: 37.04653228058925, lon: 39.10975932077835}
						        from_dt: '2017-05-28T08:10:43.651Z'
						        to_dt: '2017-05-28T08:10:43.651Z'
						      format: {name: JPEG2000}
						      grid_spatial:
						        projection:
						          geo_ref_points:
						            ll: {x: 399960, y: 3990240}
						            lr: {x: 509760, y: 3990240}
						            ul: {x: 399960, y: 4100040}
						            ur: {x: 509760, y: 4100040}
						          spatial_reference: PROJCS["WGS 84 / UTM zone 37N",GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS
						            84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",39],PARAMETER["scale_factor",0.9996],PARAMETER["false_easting",500000],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["Easting",EAST],AXIS["Northing",NORTH],AUTHORITY["EPSG","32637"]]
						          valid_data:
						            coordinates:
						            - - [509760.0, 4100040.0]
						              - [399960.0, 4100040.0]
						              - [399960.0, 3990240.0]
						              - [509760.0, 3990240.0]
						              - [509760.0, 4100040.0]
						            type: Polygon
						      id: 88d2429c-1204-4b08-9d42-7f889b0749c0
						      image:
						        bands:
						          B01: {layer: 1, path: GRANULE/L1C_T37SDA_A010085_20170528T081043/IMG_DATA/T37SDA_20170528T080611_B01.jp2}
						          B02: {layer: 1, path: GRANULE/L1C_T37SDA_A010085_20170528T081043/IMG_DATA/T37SDA_20170528T080611_B02.jp2}
						          B03: {layer: 1, path: GRANULE/L1C_T37SDA_A010085_20170528T081043/IMG_DATA/T37SDA_20170528T080611_B03.jp2}
						          B04: {layer: 1, path: GRANULE/L1C_T37SDA_A010085_20170528T081043/IMG_DATA/T37SDA_20170528T080611_B04.jp2}
						          B05: {layer: 1, path: GRANULE/L1C_T37SDA_A010085_20170528T081043/IMG_DATA/T37SDA_20170528T080611_B05.jp2}
						          B06: {layer: 1, path: GRANULE/L1C_T37SDA_A010085_20170528T081043/IMG_DATA/T37SDA_20170528T080611_B06.jp2}
						          B07: {layer: 1, path: GRANULE/L1C_T37SDA_A010085_20170528T081043/IMG_DATA/T37SDA_20170528T080611_B07.jp2}
						          B08: {layer: 1, path: GRANULE/L1C_T37SDA_A010085_20170528T081043/IMG_DATA/T37SDA_20170528T080611_B08.jp2}
						          B09: {layer: 1, path: GRANULE/L1C_T37SDA_A010085_20170528T081043/IMG_DATA/T37SDA_20170528T080611_B09.jp2}
						          B10: {layer: 1, path: GRANULE/L1C_T37SDA_A010085_20170528T081043/IMG_DATA/T37SDA_20170528T080611_B10.jp2}
						          B11: {layer: 1, path: GRANULE/L1C_T37SDA_A010085_20170528T081043/IMG_DATA/T37SDA_20170528T080611_B11.jp2}
						          B12: {layer: 1, path: GRANULE/L1C_T37SDA_A010085_20170528T081043/IMG_DATA/T37SDA_20170528T080611_B12.jp2}
						          B8A: {layer: 1, path: GRANULE/L1C_T37SDA_A010085_20170528T081043/IMG_DATA/T37SDA_20170528T080611_B8A.jp2}
						      instrument: {name: MSI}
						      lineage:
						        source_datasets: {}
						      platform: {code: Sentinel-2A}
						      processing_level: Level-1C
						      product_format: {name: SAFE_COMPACT}
						      product_type: S2MSI1C
						platform: {code: SIAM_IL}
						product_type: INFORMATIONLAYERS
	          

Index

linking external data (GDAL formats): indexing

Ingest

create NetCDF tiling scheme and index: ingestion
10km x 10km x 1 time

Analyse

Python API and Jupyter Notebooks

Proof-of-Concept
&
Exploratory Output

  • 3 Sentinel-2 granules
  • 619 scenes
  • 28 June 2015 - 29 July 2018
  • ~1.9TB of underlying data
Figure 1: study area with overlapping relative orbits
Figure 2: overvew of number of valid pixels
Figure 3: overvew of number of clean pixels
Figure 4: overvew of number of clean pixels
Figure 5: vegetation occurrance calculation (aggregated over time)
Figure 6: overvew of number of clean pixels
Figure 7: overvew of number of clean pixels
Figure 8: overvew of number of clean pixels
Figure 9: overvew of number of clean pixels
Figure 10: overvew of number of clean pixels
Figure 11: overvew of number of clean pixels

Outlook

  • expand meaningful semantic queries
  • explore better ways to meaningfully interpret results
  • develop or discover methods to characterise spatio-temporal variability
  • explore methods for checking agreement of output
  • move towards reliable, transferable indicators to support humanitarian initiatives and global priority agendas (e.g. UN-SDGs)

Thank you!

Hannah Augustin
M.Sc Candidate
University of Salzburg
Department of Geoinformatics (Z_GIS)
hannah.augustin@stud.sbg.ac.at
GitHub: @augustinh22