I grew up in India and moved to the USA when I was about 14. After moving, we didn’t visit India for almost 6–7 years. Recently, my family decided to go back during the summer, from May to July 2023. When we arrived, one thing stood out to me immediately: it felt much hotter than I remembered. As I looked around, I realized why—much of the greenery I had grown up seeing was gone, replaced by towering buildings and sprawling apartment complexes. It was a stark reminder of how much the landscape had changed and left me thinking about the impact of rapid urbanization on the environment and the climate.
Let’s get started with the details!
During my recent visit to India, I decided to explore the Urban Heat Island (UHI) effect by analyzing the Land Surface Temperatures (LST) of Ahmedabad and Delhi—two cities close to my heart. Below is a snapshot of these cities to set the stage:
The timeline I chose for this analysis was:
2013: My starting point, marking a 10-year study period.
2016: The year I left India for the USA.
2023: My most recent visit, which inspired this project.
For this study, I relied on two main data sources:
- Satellite data from Google Earth Engine to retrieve cloud and temperature data.
- Weather records from airport meteorological databases for cross-validation.
Part 1: Data collection and preparation:
For this project, I used data from different sources to study the Urban Heat Island (UHI) effect in Ahmedabad and Delhi. My main focus was on Land Surface Temperature (LST) and cloud data, which I collected using Google Earth Engine, and weather records from airports.
Using Google Earth Engine
I collected temperature data from WeatherSpark, a platform that provides detailed historical weather records. Using data specific to Ahmedabad and Delhi, I focused on the month of May—from 2013 to 2023—since May is typically the hottest month of the year in both cities. This allowed me to analyze how temperatures have evolved during the peak of summer over the last decade.
Delhi's May Temperature: 2013, 2016, 2023
Ahmedabad's May Temperature: 2013, 2016, 2023
I also used cloud data to make sure my temperature results were accurate. Clouds can block satellite readings and make it harder to get correct land surface temperatures. To fix this, I used Google Earth Engine to filter out areas with heavy clouds. This helped me clean up the data and focus only on clear readings, making my results more reliable.
Here’s an example of the code I used to extract cloud data. If you plan to use this code in Google Earth Engine, make sure to adjust the longitude and latitude, the date range (out of 365 days), and the buffer zone according to your preferences:
//area of study
var ahmedabad = ee.Geometry.Point([72.5713621, 23.022505]).buffer(30000); // buffer zone
var delhi = ee.Geometry.Point([77.1025, 28.7041]).buffer(30000); //buffer zone
//Date
var DATE_RANGE = ee.Filter.dayOfYear(121, 151);
var YEAR_RANGE = ee.Filter.calendarRange(2013, 2023, 'year');
var L8 = ee.ImageCollection('LANDSAT/LC08/C02/T1_L2') //Might want to change statelite according to your needs
.select(['ST_B10', 'QA_PIXEL']) // Temperature and QA bands
.filter(DATE_RANGE)
.filter(YEAR_RANGE);
// Cloud masking function
function cloudMask(image) {
var qa = image.select('QA_PIXEL');
var mask = qa.bitwiseAnd(1 << 3).or(qa.bitwiseAnd(1 << 4)); // Cloud and shadow bits
return image.updateMask(mask.not());
}
// cloud mask and filter by region
var L8_filtered = L8.map(cloudMask);
// Temperature conversion (Kelvin to Fahrenheit)
function kelvinToFahrenheit(image) {
return image.select('ST_B10')
.multiply(0.00341802) // Scale factor
.add(149.0) // Offset
.subtract(273.15) // Convert Kelvin to Celsius
.multiply(9 / 5) // Convert Celsius to Fahrenheit
.add(32) // Add Fahrenheit offset
.rename('LST_Fahrenheit');
}
var ahmedabadLST = L8_filtered.filterBounds(ahmedabad).map(kelvinToCelsius).mean().clip(ahmedabad);
var delhiLST = L8_filtered.filterBounds(delhi).map(kelvinToCelsius).mean().clip(delhi);
// Visualization parameters //change the colors as you like
var visualizationParams = {
min: 20, max: 45,
palette: ['blue', 'yellow', 'red']
};
Map.centerObject(ahmedabad, 8);
Map.addLayer(ahmedabadLST, visualizationParams, 'Ahmedabad LST');
Map.addLayer(delhiLST, visualizationParams, 'Delhi LST');
// Export results to Google Drive
Export.image.toDrive({
image: ahmedabadLST,
description: 'Ahmedabad_LST_2013_2023',
region: ahmedabad,
scale: 30,
maxPixels: 1e13,
fileFormat: 'GeoTIFF'
});
Export.image.toDrive({
image: delhiLST,
description: 'Delhi_LST_2013_2023',
region: delhi,
scale: 30,
maxPixels: 1e13,
fileFormat: 'GeoTIFF'
});
// Calculate and print summary statistics
var ahmedabadStats = ahmedabadLST.reduceRegion({
reducer: ee.Reducer.minMax().combine(ee.Reducer.mean(), null, true),
geometry: ahmedabad,
scale: 30
});
print('Ahmedabad Temperature Stats:', ahmedabadStats);
var delhiStats = delhiLST.reduceRegion({
reducer: ee.Reducer.minMax().combine(ee.Reducer.mean(), null, true),
geometry: delhi,
scale: 30
});
print('Delhi Temperature Stats:', delhiStats);
Below is the picture of Cloud coverage Data
Delhi's May Cloud Data: Overview (2013, 2023, and 10-Year Analysis)
Ahmedabad's May Cloud Data: Overview (2013, 2023, and 10-Year Analysis)
Using Weather Records
To make sure the satellite data was correct, I compared it with weather records from airports in Ahmedabad and Delhi. These records gave me real temperature readings, which helped me confirm that the satellite data was accurate.
Part 2: Visualizing Data with ArcGIS Pro
After processing the cloud and temperature data in Google Earth Engine, the next step was to bring this data into ArcGIS Pro for advanced visualization. This was an essential part of the project because raw data can be difficult to interpret, but creating heat maps makes it easier for everyone to understand.
To create the visualizations, I first imported the cloud-filtered Land Surface Temperature (LST) data from Google Earth Engine into ArcGIS Pro. This data, which included detailed temperature readings, had already been refined to remove interference caused by cloud cover. This preprocessing ensured that the data was clean and reliable for creating accurate visualizations.
Once the data was imported, I used ArcGIS Pro to generate heat maps. These maps were created by applying a color gradient to represent different temperature ranges. For example, cooler areas were marked with colors like orange (≤70°F), light blue (≤80°F), and green (≤90°F). As the temperatures increased, warmer colors were used, such as yellow (≤120°F) and red for temperatures exceeding 140°F. The key, or legend, provided with the maps clearly showed these color-coded temperature ranges, making the visualizations easy to interpret.
Below is the picture of the Legend
I created heat maps for Ahmedabad and Delhi to show how temperatures vary across each city. Built-up areas, like industrial zones or city centers, appeared much hotter and were shown in red, while parks and green spaces were cooler and displayed in green or blue. These heat maps clearly highlighted the impact of urbanization and greenery on surface temperatures.
I then refined the heat maps using ArcGIS Pro by adjusting the temperature colors and adding a north arrow for direction. These changes made it easier to understand the distribution of heat across Ahmedabad and Delhi.
Below is the picture of the Ahmedabad's visualization
Below is the picture of the Delhi's visualization
Conclusion: Ahmedabad and Delhi Heat Trends
The results of this project showed that Ahmedabad has become much hotter over the past 10 years, especially in May, the hottest month of the year. Using heat maps in ArcGIS Pro, I found that areas with lots of buildings and little greenery were the hottest, shown in dark red, while parks and green spaces were cooler, shown in green or blue. The temperatures were analyzed in Fahrenheit.
Ahmedabad is particularly hot because it is a growing city with rapid urbanization and shrinking green spaces. One noticeable feature in the heat map is the Sabarmati River, visible as a cooler blue line cutting through the city. In contrast, Delhi, as the capital, is more developed and shows slightly lower temperatures, though it remains densely populated and heavily built-up. Both cities show dense urbanization and large populations, as seen in the images included in the poster.
The data also highlighted how green spaces and vegetation help cool cities. On clear days without clouds, temperatures were higher, especially in areas without trees or parks. This shows how important greenery is for keeping cities cooler.
In conclusion, Ahmedabad is becoming hotter as it grows, while Delhi remains warm due to its dense population and infrastructure. To make cities more livable, we need to focus on creating more parks, planting trees, and protecting green spaces. These steps can help reduce heat and improve quality of life in urban areas.
Below is the Poster of the results
Top comments (0)