Land Surface Temperature with ArcGIS Pro & Google Earth Engine (JavaScript)
Examination of Land Surface Temperature Changes
Çanakkale / Türkiye (2013 & 2023)
In this study, the surface temperature changes in Çanakkale province for the years 2013 & 2023 were examined using Landsat thermal data through various methods. Formulas such as NDVI, Top of Atmosphere, Brightness Temperature, Proportional Vegetation, & Land Surface Temperature were utilized. The findings indicate that the data derived from thermal images, especially Land Surface Temperature (LST), is a significant resource for land interpretation.
Study Area: Çanakkale — Türkiye (Turkey)
Method/Approach: Satellite image analysis from different seasons using ArcGIS program & Google Earth Engine.
Source: Landsat, 8–9 OLI/TIRS C2 L2 — Satellite Images obtained from the USGS Earth Explorer Website.
Geographical Location & General Information
Çanakkale, located in the southern part of the Marmara Region, holds a strategic geographical position with its proximity to metropolises such as Istanbul, Bursa, and Izmir. It is situated on both sides of the Çanakkale Strait, a key point connecting the continents of Asia & Europe, and possesses transit routes between these two continents, making it strategically important. With coastlines on both the Marmara and Aegean Seas, Çanakkale is among the six provinces in Turkey that have access to two seas.
Downloading USGS Data
Downloading USGS Data
We download USGS Data (Band 4, Band 5 & Band 10) for our selected Area Of Interest. (AOI)
Raster Calculation with ArcGIS Pro’s Geoprocessing Tool
Calculation of Land Surface Temperature Data
1 — Normalized Difference Vegetation Index (NDVI)
2 — Top of Atmosphere & Brightness Temperature (TOA & BT)
3 — Proportional Vegetation (Pv)
4 — Emissivity (e)
5 — Land Surface Temperature (LST / YYS)
Formulas
The formulas were calculated individually using the raster calculation method in ArcGIS Pro’s Geoprocessing tool & then combined.
Maps
Normalized Difference Vegetation Index (NDVI)
Land Surface Temperature (LST)
Calculation with Google Earth Engine Application
The formulas were recalculated using the Google Earth Engine application with the JavaScript programming language. This method requires separate code for each layer & operation, including:
1 — Entering the coordinates of the study area.
2 — Cloud removal.
3 — Filtering Landsat data based on date & area.
4 — Calculating NDVI statistics.
5 — Calculating Vegetation Ratio, Urban Heat Island, & Surface Temperature.
JavaScript Code For The Calculation
Coordinates
// Area Of Interest
var aoi = ee.Geometry.Polygon(
[[[26.380920, 40.159207],
[26.380920, 40.159207],
[26.404817, 40.154990],
[26.404817, 40.154990]]]);
var startDate = '2023-05-01'
var endDate = '2023-12-31'
Scale Factors
// Applies scaling factors
function applyScaleFactors(image) {
var opticalBands = image.select('SR_B.').multiply(0.0000275).add(-0.2);
var thermalBands = image.select('ST_B.*').multiply(0.00341802).add(149.0);
return image.addBands(opticalBands, null, true)
.addBands(thermalBands, null, true);
}
Mask Clouds & Cloud Shadows
// Cloud mask
function maskL8sr(col) {
// Bits 3 and 5 are cloud shadow and cloud, respectively.
var cloudShadowBitMask = (1 << 3);
var cloudsBitMask = (1 << 5);
// Get the pixel QA band.
var qa = col.select('QA_PIXEL');
// Both flags should be set to zero, indicating clear conditions.
var mask = qa.bitwiseAnd(cloudShadowBitMask).eq(0)
.and(qa.bitwiseAnd(cloudsBitMask).eq(0));
return col.updateMask(mask);
}
Filter Landsat Image Collection
// Filter the collection, first by the aoi, and then by date.
var image = ee.ImageCollection('LANDSAT/LC08/C02/T1_L2')
.filterDate(startDate, endDate)
.filterBounds(aoi)
.map(applyScaleFactors)
.map(maskL8sr)
.median();
var visualization = {
bands: ['SR_B4', 'SR_B3', 'SR_B2'],
min: 0.0,
max: 0.3,
};
Map.addLayer(image, visualization, 'True Color (432)', false);
NDVI Layer
// NDVI
var ndvi = image.normalizedDifference(['SR_B5', 'SR_B4']).rename('NDVI')
Map.addLayer(ndvi, {min:-1, max:1, palette: ['blue', 'white', 'green']}, 'ndvi', false)
NDVI Statistics
// ndvi statistics
var ndvi_min = ee.Number(ndvi.reduceRegion({
reducer: ee.Reducer.min(),
geometry: aoi,
scale: 30,
maxPixels: 1e9
}).values().get(0))
var ndvi_max = ee.Number(ndvi.reduceRegion({
reducer: ee.Reducer.max(),
geometry: aoi,
scale: 30,
maxPixels: 1e9
}).values().get(0))
Thermal Bands, Land Surface Temperature & Color Palette
var fv = (ndvi.subtract(ndvi_min).divide(ndvi_max.subtract(ndvi_min))).pow(ee.Number(2))
.rename('FV')
var em = fv.multiply(ee.Number(0.004)).add(ee.Number(0.986)).rename('EM')
var thermal = image.select('ST_B10').rename('thermal')
var lst = thermal.expression(
'(tb / (1 + (0.00115 * (tb/0.48359547432)) * log(em))) - 273.15',
{'tb':thermal.select('thermal'),
'em': em}).rename('LST')
var lst_vis = {
min: 25,
max: 50,
palette: [
'040274', '040281', '0502a3', '0502b8', '0502ce', '0502e6',
'0602ff', '235cb1', '307ef3', '269db1', '30c8e2', '32d3ef',
'3be285', '3ff38f', '86e26f', '3ae237', 'b5e22e', 'd6e21f',
'fff705', 'ffd611', 'ffb613', 'ff8b13', 'ff6e08', 'ff500d',
'ff0000', 'de0101', 'c21301', 'a71001', '911003']
}
Map.addLayer(lst, lst_vis, 'LST AOI')
Map.centerObject(aoi, 10)
UHI — Urban Heat Island
// Urban Heat Island
//1. Normalized UHI
var lst_mean = ee.Number(lst.reduceRegion({
reducer: ee.Reducer.mean(),
geometry: aoi,
scale: 30,
maxPixels: 1e9
}).values().get(0))
var lst_std = ee.Number(lst.reduceRegion({
reducer: ee.Reducer.stdDev(),
geometry: aoi,
scale: 30,
maxPixels: 1e9
}).values().get(0))
print('Mean LST in AOI', lst_mean)
print('STD LST in AOI', lst_std)
var uhi = lst.subtract(lst_mean).divide(lst_std).rename('UHI')
var uhi_vis = {
min: -4,
max: 4,
palette:['313695', '74add1', 'fed976', 'feb24c', 'fd8d3c', 'fc4e2a', 'e31a1c',
'b10026']
}
Map.addLayer(uhi, uhi_vis, 'UHI AOI')
// Urban Thermal Field variance Index (UTFVI)
var utfvi = lst.subtract(lst_mean).divide(lst).rename('UTFVI')
var utfvi_vis = {
min: -1,
max: 0.3,
palette:['313695', '74add1', 'fed976', 'feb24c', 'fd8d3c', 'fc4e2a', 'e31a1c',
'b10026']
}
Map.addLayer(utfvi, utfvi_vis, 'UTFVI AOI')
Maps
Conclusion
Generally, where NDVI index increases, Land Surface Temperature decreases. Areas with increased green vegetation absorb heat, resulting in lower temperatures compared to non-vegetated areas.
Especially, Urban Heat Island formation is dependent on factors beyond temperature alone, making it difficult to reach a conclusive result solely through satellite observations. Combining local station & satellite data leads to better results in research.
High urbanization in certain areas and the intertwining of land cover density negatively impact the overall success of the analyses.
The obtained thermal data & the resulting Land Surface Temperature values are crucial sources for interpreting temporal changes.
The use of Landsat satellite data is possible in land surface temperature studies (such as risk analyses, urban heat island effects, global warming effects, etc.).
References:
ArcGIS Pro 3 Software
Google Earth Engine Software
Google Earth Engine Landsat Data Set
Earth Explorer, Usgs Website Landsat Data
Index Database Website
Landsat 8 (L8) Data Handbook