EO Training

ACTIVE FIRE DETECTION WITH SENTINEL-3

Categories: Fire, Hazards,

ACTIVE FIRE DETECTION WITH SENTINEL-3

Introduction Print

A series of four initial deadly wildfires erupted across central Portugal in the afternoon of 17 June 2017 within minutes of each other. An intense heat wave preceded the fires, with many areas of Portugal, seeing temperatures in excess of 40 °C (104 °F). During the night of 17–18 June, 156 fires erupted across the country, particularly in mountainous areas 200 km (120 mi) north northeast of Lisbon. Portugal’s fires have burnt 5,200 km2 of forest in 2017, 52 times the size of Lisbon and representing nearly 60 % of the total area burnt in the entire European Union in 2017. The amount of land burnt is the highest ever in Portugal’s history.

Note: This exercise was developed by the Serco EO Training Team within the framework of the RUS contract. The final outcome of this tutorial has not been validated and the information contained in this tutorial does not purport to constitute professional advice.

Data used

Two cloud-free Sentinel-3A Level 1B RBT products acquired on June 18, 2017 (after the main event). [downloadable @ https://scihub.copernicus.eu/] – may need to be requested from the Long Term Archive.

  • S3A_SL_1_RBT____20170618T104548_20170618T104848_20170618T125104_0179_019_051_2340_SVL_O_NR_002
  • S3A_SL_1_RBT____20170618T220242_20170618T220542_20170619T003422_0179_019_058_0539_SVL_O_NR_002
Software used

Internet browser, SNAP, QGIS

NOTE: This tutorial was prepared on a Linux Ubuntu 16.04 OS, steps may differ for other OS.

Reference folder structure

Folder structure referenced in the exercise is as follows:

  • /HAZA04_ActiveFireDetection_Portugal
    • /Auxdata – includes auxiliary data needed for the processing – you can re-create them yourself or download them below
    • /Original – should contain your downloaded input products
    • /Processing – Contains all intermediate and final results of the processing

SNAP – open and explore data

Launch SNAP. When the SNAP window opens click Open Product , navigate to: …/HAZA04_ActiveFire_Portugal_TutorialKit/Original and open the S3 products by opening each folder and selecting the xfdumanifest.xml file.

Now, we will look at the products. Right-click the first loaded product acquired at 10:45 and click Open RGB image window, a new window will open. Set:

Profile: SLSTR L1 Nadir 

Now open the RGB view for the night product (acquired at 22:02) as well. When you have both Views opened go to Navigation tab in the lower left and make sure the cursor   and the views  are linked. Then, go to Window  Tile Evenly. Go back to Navigation tab and click  Zoom All to center the Views.  

NOTE: If “World View” tab is not available, go to View  Tool Windows and open the World Map”. 

Since we are creating the RGB View with radiance bands (reflected solar radiation), we cannot see anything in the night RGB composite, as expected. Go to the World View tab. We can see that the products do not cover exactly the same area – they correspond to different passes of the satellite.  

Take a little time to explore the structure of the S3 products (expand them). During this exercise, we process two images – one acquired during the day (10:45) and one acquired during the night (22:02). You will notice that the RBT product contains many bands and even more masks, we do not need to worry about all of them though.  

As mentioned before, we will only use the nadir bands with suffix _in (corresponding to 1 km brightness temperature bands S6 – S9 and fire bands F1 and F2) or _an (corresponding to radiance bands S1 – S5 in stripe A) in their name. Read about Sentinel-3 SLSTR RBT product and its organization and contents in section 6 Sentinel-3 SLSTR.   

The processing of day and night acquisitions differ slightly, and we will go through the steps separately.  

Pre-processing DAY 

Cloud masking is essential to the detection of active fire pixels because optically thick clouds make it impossible to identify active fires through passive remote sensing. Moreover, solar reflected MIR radiation from certain clouds can appear similar to fire signals and some cloud-contaminated pixels will likely be falsely classified as fires if they are not masked out prior to fire detection. (Wooster et al., 2012). 

The Level-1B product contains cloud mask, however some cloud mask algorithms also identify optically thick smoke as cloud, even though fire detections can typically be made through smoke. Smoke is generally relatively transparent at MIR wavelengths unlike meteorological cloud. This makes the cloud masks available in the product unsuitable for active fire detection and we need to derive our own mask.  

We will use simple cloud test developed for daytime fire detection by Giglio et al. (2003). 

{(ρ0.65 + ρ0.86 > 0.9) OR (T12 < 265 K)}  OR  {(ρ0.65 + ρ0.86 > 0.7) AND (T12 < 285 K)}    

Where, ρλ and Tλ correspond to reflectance and thermal bands at certain wavelength (λ [μm]).  

Radiance to reflectance 

As the Level-1B product contains TOA radiance, our first step will be to convert the solar radiance bands to reflectance (See  NOTE 1).  

NOTE 1: The conversion from TOA radiance (LTOA) to TOA reflectance (RTOA) is defined by the following equation:
𝑅𝑇𝑂𝐴(𝜆)= 𝜋𝐿𝑇𝑂𝐴(𝜆)𝐸0(𝜆)cos (𝜃)
Where, E0 and θ are the solar spectral irradiance and the sun zenith angle at the time of acquisition, respectively. The solar spectral irradiance values are taken from the L1 product metadata of the SLSTR product.
Radiance is the variable directly measured by remote sensing instruments. It is the amount of light seen by instrument from a surface of an object. In the SLSTR products is given as radiance of a surface per unit wavelength [mWm-2sr-1*nm-1 = watt per square meter per nanometre].
Reflectance is the ratio (percentage) of the amount of light leaving a target to the amount of light arriving to the target. It has no units. It is the property of the observed object/material.

Go to Optical  Preprocessing  Radiance-to-Reflectance Processor

In the I/O Parameters tab, make sure that the DAYTIME product is selected as input. Set the Name of the target product to S3A_SL_1_RBT_20170618T104548_radrefl and the target folder under Directory to: …/HAZA04_ActiveFire_Portugal_TutorialKit/Processing 

In the Processing Parameters tab set: 

Sensor: SLSTR_500m 

Conversion mode: RAD_TO_REFL 

Check all fields to “Copy tie point gridsflag bands and masks and non-spectral bands”. 

Click Run. A new product [3] has been created. Click OK to the pop-up window and close the Radiance-to-Reflectance Processor window. If we expand the Bands folder in the product, we can see that the brightness temperature folders (*BT) have not changed but the radiance folders were replaced by reflectance folders. Close all view windows.

Resample

As mentioned previously, the brightness temperature (BT) bands of S3 RBT product have resolution of 1000 m while the radiance (now reflectance) bands have resolution of 500 m. For further processing, it is necessary to have all bands in the same resolution. As for the active fire detection we will use the BT bands and we will resample all the reflectance bands to 1000 m.

Go to Raster → Geometric Operations → Resampling

In the I/O Parameters tab, make sure that the daytime reflectance product [3] is selected as input.

In the Processing Parameters tab set: By reference band from source product: F1_BT_in

Click Run. A new product [4] has been created (but it has not been saved to the disk). Click OK to the pop-up window and close the Resampling window.

Reproject 

The Sentinel-3 Level-1B products are geocoded but not projected, therefore in this step we will reproject the data.  

Go to Raster à Geometric Operations à Reprojection.  

In the I/O Parameters tab, make sure that the daytime resampled product [4] is selected as input. Set the name of the target product to: 

S3A_SL_1_RBT_20170618T104548_radrefl_resampled_reprojected and the target folder under Directory to: /shared/Training/HAZA04_ActiveFire_Portugal_TutorialKit/Processing 

In the Reprojection Parameters tab set:
Under Coordinate Reference System (CRS) choose: Custom CRS and at Projection: UTM Zone
Click on Projection Parameters and set as Zone: 29 and as Hemisphere: North

Click OK and then click Run. A new product [5] has been created. Click OK at the pop-up dialog and close the Reprojection window.

Subset

In the last pre-processing step, we will create a subset of our area of interest. Click on the new product [5] in the Product Explorer window to highlight it.
Go to Raster → Subset.
In the Spatial Subset tab, at the Geo Coordinates tab, set the following coordinate:

North latitude bound: 41.00
West longitude bound: -10.00
South latitude bound: 38.00
East longitude bound: -7.0

The subset area is indicated by the blue rectangle on the left of the dialog window. Click OK.
The subset product [6] will appear in the Product Explorer window but is not physically saved. We will save it after the creation of the cloud mask.

Right-click the product again and select Open RGB Image Window and set:

Red: $6.S3_reflectance_an
Green: $6.S2_reflectance_an
Blue: $6.S1_reflectance_an
Click OK.

Create a cloud mask band

As discussed before, we will create our own cloud mask. Right-click on the subset product [6] and click Band Maths. A new window will open.

TIP: All expressions you will be using during this tutorial are available to copy-paste them from the Expressions_AF.txt file in …/HAZA04_ActiveFire_Portugal_TutorialKit/Auxdata/ folder.

Set as Name: “cloud_mask”
Deselect “Virtual (safe expression only, don’t store data)”
Then click on “Edit Expression…” and enter the following statement:

(S2_reflectance_an + S3_reflectance_an) > 0.9 or S9_BT_in < 265 or ((S2_reflectance_an + S3_reflectance_an) > 0.7 and S9_BT_in < 285)

Click OK in both windows.

The new band will automatically open in a new “View” window.

TIP: You can also build the expression yourself using the Expression Editor.

Right-click the subset product [6] and go to Save Product. In the next dialog click Yes and save the product as Subset_S3A_SL_1_RBT_20170618T104548_radrefl_resampled_reprojected to …/HAZA04_ActiveFire_Portugal_TutorialKit/Processing

Pre-processing NIGHT

The preprocessing steps are the same for the night product with the exception of the radiance to reflectance conversion. To derive the night cloud mask we do not need the reflectances, only the brightness temperature bands therefore only the Resampling, Pre-projection and Subset steps will be applied. Similarly as for the day-time product, Night-time pixels are flagged as cloud if the single condition is satisfied. (Giglio et al. (2003)).

𝑇12<265 𝐾

Where, T12 correspond to thermal band S9, at central wavelength of 12 μm.  

Resample 

Follow the steps described in section 7.2.2 Resample.  

Go to Raster  Geometric Operations  Resampling.  

In the I/O Parameters tab, make sure that the NIGHT-time product [2] is selected as input. Select Save asC:\Users\tsmejkalova\AppData\Local\Microsoft\Windows\INetCache\IE\NHW5SP4T\Check_mark_23x20_02.svg[1].png.  

Set the Name of the target product to S3A_SL_1_RBT_20170618T220242_resampled and the target folder under Directory to: …/HAZA04_ActiveFire_Portugal_TutorialKit/Processing 

In the Processing Parameters tab set: By reference band from source product: F1_BT_in 

Click Run. A new product [7] has been created. Click OK to the pop-up window and close the Resampling window.  

Reproject

Go to Raster  Geometric Operations  Reprojection.  

In the I/O Parameters tab, make sure that the night-time resampled product [7] is selected as input. Set the name of the target product to: S3A_SL_1_RBT_20170618T220242_resampled_reprojected and the target folder under Directory to:  /shared/Training/HAZA04_ActiveFire_Portugal_TutorialKit/Processing 

In the Reprojection Parameters tab set: 

Under Coordinate Reference System (CRS) choose: Custom CRS and at Projection: UTM Zone  

Click on Projection Parameters and set as Zone: 29 and as Hemisphere: North 

Click OK and then click Run. A new product [8] has been created. Click OK at the pop-up dialog and close the Reprojection window.  

Subset

Follow the steps described in section 7.2.4. Subset. Click on the new product [8] in the Product Explorer window to highlight it.  

Go to Raster  Subset.  

In the Spatial Subset tab, at the Geo Coordinates tab, set the following coordinates:
North latitude bound: 41.00 West longitude bound: -10.00
South latitude bound: 38.00 East longitude bound: -7.0

Click OK. The subset product [9] will appear in the Product Explorer window but is not physically saved. We will save it after the creation of the cloud mask.  

Create a cloud mask band

As discussed before, we will create our own cloud mask. Right-click on the subset product [9] and click Band Maths. A new window will open.  

Set as Name“cloud_mask” 

Deselect “Virtual (safe expression only, don’t store data)” 

Then click on “Edit Expression…” and enter the following statement:  S9_BT_in < 265

The new band will automatically open in a new “View” window.

Right-click the subset product [9] and go to Save Product. In the next dialog click Yes and save the product as Subset_S3A_SL_1_RBT_20170618T220242_resampled_reprojected to …/HAZA04_ActiveFire_Portugal_TutorialKit/Processing
Now both of our products are ready for Active Fire Pixel Detection. Let’s close SNAP window completely and open a new one.

Active fire detection

In this step, we will apply a simple algorithm to identify pixels containing one or more active fires at the time of the satellite overpass. This approach exploits the different responses of middle-infrared (MIR) and thermal-infrared (TIR) bands to hot subpixel targets. In particular, the algorithm looks for a significant increase in radiance (brightness temperature) at 3.74μm in comparison to observed radiance (BT) at 10.85μm as well as in absolute value (See  NOTE 2).  

NOTE 2: This characteristic active fire signature is the result of the large difference in blackbody radiation at 4μm and 11μm, emitted at vegetation combustion temperatures, as described by the Planck function. The image below shows the spectral radiance emitted from blackbodies at Earth ambient temperature (300 K) and a range of possible vegetation fire temperatures (650 – 1400 K). The approximate central wavelengths of the Sentinel-3 SLSTR MIR (3.74μm) and TIR (10.85μm) channel are also indicated.

Credits: Sentinel-3 Active Fire: Fire Detection and Fire Radiative Power Assessment (ESA)

As described in section 7.1 SNAP – Open Project and Explore Data there are two bands (F1 and F2, “fire channels”) dedicated to fire detection (greatly increased saturation temperature threshold).  In the new SNAP window, click Open Product , navigate to: …/HAZA04_ActiveFire_Portugal_TutorialKit/Processing and open both subset products we have created during the pre-processing phase.

Right-click the daytime product and select Add Land Cover Band, in the dialog that appears, scroll down and select “CCILandCover-2015”, and then click OK.  This will add a new band containing the land cover layer. Repeat the same for the night-time product. 

Daytime fire detection 

ow, let’s visualize all the bands we will use to define the fire detection algorithm for the daytime product. Expand the daytime product folder go to Bands  “F*BT_in” folder, double-click both bands [“F1_BT_in (3742 nm)”, “F2_BT_in (10854 nm)”] to open them both in the View Window. Next, scroll down to the bottom of the Bands folder and double-click “cloud_mask” and “land_cover_CCILandCover-2015” band.  

Go to Window  Tile Horizontally and in Navigation tab select Zoom all. In the Product Explorer window, collapse all the expanded folders. 

Click on the “land_cover_CCILandCover-2015” view, go to Colour Manipulation tab and inspect the classes in the land cover layer. Which classes will be correlated with forest fires?

Now zoom to the bright spot in the center of “F1_BT_in band (3742nm)”. All other views will zoom to the same area. Inspect other opened bands by going to the Pixel Info window; there you can see the values of the pixel over which you move your cursor in all opened bands.

Now go back to Product Explorer window and let’s design our test to detect active fire pixels. Pixel is classified as fire-pixel if the following conditions are true:

Initial testF1_BT_in > 325 K
Eliminate warm background(F1_BT_in – F2_BT_in) > 18 K
Eliminate cloudscloud_mask == 0
Eliminate non-forest pixels‘land_cover_CCILandCover-2015’ >= 50 and
‘land_cover_CCILandCover-2015’ <= 130

Right-click the daytime product and go to Band Maths…. A new window will open.
Set as Name: fire_detection_LC
Deselect the “Virtual (safe expression only, don’t store data)” option.
Then click “Edit Expression…” and enter the following conditions under Expression:

F1_BT_in > 325 and (F1_BT_in - F2_BT_in) > 18 and cloud_mask == 0 and 'land_cover_CCILandCover-2015' >= 50 and 'land_cover_CCILandCover-2015' <= 130

Click OK in both windows. The new band “fire_detection_LC” will be created and added in the Bands folder at the daytime product.

Go to Window → Tile Single. In Navigation tab select Zoom all. Now, we can see the active fire pixels for 18 June 2017 at 10:45:48. To save our results, right-click the daytime product and select Save Product. Finally, close all our opened views.

Night-time fire detection

Now let’s adapt our thresholds for the night-time image. First, let’s open all our input bands to inspect them as we did for the daytime detection. Open and view the bands as at Daytime fire detection chapter.

We can see that the distinction between the BT of land and ocean is not clearly visible during the night as it was during the day. We can also see some clouds covering over the area where we have detected the active fire pixels during the day. Use the Pixel Info tool again to explore the pixel values in our input bands. Think how you would change the thresholds we had used for the daytime detection.

Initial testF1_BT_in > 315 K
Eliminate warm background(F1_BT_in – F2_BT_in) > 15 K
Eliminate cloudscloud_mask == 0
Eliminate non-forest pixels‘land_cover_CCILandCover-2015’ >= 50 and
‘land_cover_CCILandCover-2015’ <= 130

The conditions for cloud mask and land cover will remain the same but due to the cooler background response during night, we need to slightly lower our thresholds. Let’s set the initial test to 315 K and the warm background check to 15 K. Right-click the daytime product and go to Band Maths…. A new window will open.

Set as Name: “fire_detection_LC”
Deselect the “Virtual (safe expression only, don’t store data)” option.
Then click Edit Expression… and enter the following conditions under “Expression”:

F1_BT_in > 315 and (F1_BT_in - F2_BT_in) > 15 and cloud_mask == 0 and 'land_cover_CCILandCover-2015' >= 50 and 'land_cover_CCILandCover-2015' <= 130

Go to Window → Tile Single. In Navigation tab select Zoom all. Now, we can see the active fire pixels for 18 June 2017 at 22:02:42. To save our results, right-click the night-time product and select Save Product. However, in this case we need to be aware that some active cloud pixels could have been obscured by clouds. Close all view windows.

Export as GeoTIFFs

Open only the “fire_detection_LC” band of the day-time product. In Product Explorer tab, select (highlight) the daytime product.

Then go to File → Export → GeoTiff (NOT! Geotiff/Big Tiff). In the dialog, that opens click Subset → Band Subset (second tab) and select only band “fire_detection_LC” (last in the list, use the Select none button to deselect all), then go to the Metadata Subset tab and click Select none. Click OK. In the dialog that appears, click No and save the file with the File Name: fire_detection_DAY.tif to the Processing folder by clicking on Export Product. Repeat the same for the night-time product (save as fire_detection_NIGHT.tif).

Now, we can import the image to another GIS/Remote sensing software for further processing or map creation (section Convert to vector). In the extra steps of this tutorial, we will use QGIS. 

Convert to Vector 

Go to Application  Processing à QGIS Desktop(or use the desktop icon).  

Go to Application → Processing → QGIS Desktop (or use the desktop icon).
Click on the Add Raster Layer , navigate to: …/HAZA04_ActiveFire_Portugal_TutorialKit/Processing select the fire_detection_DAY.tif and click Open.

It will appear completely black (Image a), except for some No Data values which will appear in white. This happens because the No Data values are transparent, and our background is white. This means that if you set the background colour to a different one than white, e.g. red, the No Data values will appear red as well.

Right-click on the opened raster-layer in the Layers Panel (lower left) and go to Properties.

In the Style tab set:
Render type: Singleband gray
Band: Band 1 (Gray)
Max: 1

Click OK to see the fire pixel values at the band (they will appear in white, Image b).

Right-click again on the opened raster-layer in the Layers Panel (lower left) and go to Properties.

In the Style tab set:

Render type: Singleband pseudocolor
Band: Band 1 (Gray)
Max: 1

Then click Load colour map from file to import predefined colour map. Navigate to theAuxdata folder and open Active_fire_no_background.txt. Or design your own (fire pixels have value 1, background pixels have value 0). Click OK.  

We can also add a base map layer. Go to Web à OpenLayers plugin  Google Maps à Google Satellite. Drag the Google Satellite layer below the fire_detection layer in the Layers Panel (See  NOTE 3). 

NOTE 3: In case the OpenLayers plugin is not installed, click on Plugins →Manage and Install Plugins. Select the “All” tab on the left side panel and write “OpenLayers plugin” on the search box. Select the plugin on the list and click “Install Plugin”. Restart QGIS to finalize the installation.

Then go to Processing à Toolbox, expand GDAL/OGR, then expand [GDAL] Conversion and double click the  Polygonize (raster to vector) tool.  

In the Parameters tab, check your input layer to be “fire_detection_DAY [EPSG:32629]”, keep the “Output field name” as default and at “Vectorized” select “Save to file… and save it at the Processing folder with “File name”: fire_detection_DAY”) 

Click Run.

You can see that the 0 values and No Data have been polygonised as well. We can remove them by right-clicking the Vectorized layer in the Layers Panel and going to Open Attribute Table. Then click  “Select features using an Expression” and enter “DN” < 1 (including quotation marks). Click at the lower right “ Select” and then click Close.  

All polygons except the ones with value 1 (fire) have been selected. Click Edit and then click Remove. This will remove all selected polygons.  

Now, click on Edit again to finish editing. Then click Save to save your edits. Close the Attribute Table. 

Now we have a shapefile layer containing only our fire pixels.  

You can repeat the steps above for the night band as well. 

Further reading and resources  

Global Forest Watch – Fires (http://fires.globalforestwatch.org/map/

CCI Land Cover – (http://maps.elie.ucl.ac.be/CCI/viewer/index.php)

Giglio, L., Descloitres, J., Justice, C.O., and Kaufman, Y.J. (2003). An Enhanced Contextual Fire Detection Algorithm for MODIS. Remote Sens. Environ. 87, 273–282. 

Wooster, M.J., Xu, W., and Nightingale, T. (2012). Sentinel-3 SLSTR active fire detection and FRP product: Pre-launch algorithm development and performance evaluation using MODIS and ASTER datasets. Remote Sens. Environ. 120, 236–254. 

Search
Browse by topic
Related Tutorials

OIL SPIL MAPPING WITH SENTINEL-1

Reference folder structure Folder structure referenced in the exercise is as follows: /OCEA03_OilSpill_Kuwait /Original – should contain yo…

Doing business with us

EO expertise at your service

We are used to prepare and release training materials, but also to work in partnership with the Earth Observation industry and we may complement your business case with training or consultancy services. Do not hesitate to get in touch with us to get an offer for a customized training event or EO consultancy services…