This repository contains a forensic, methodological audit of the rural station classifications used by Wickham et al. (2013). Their study employed outdated MODIS 500m land cover data to select 15,000 “very rural” temperature stations, claiming negligible influence from urban heat islands (UHI) on global temperature trends. With advances in geospatial analysis and AI-driven satellite technology—specifically the GHSL P2023A 10-meter multispectral dataset derived from Sentinel-2 imagery—we critically reassess these classifications.
Wickham, C., et al. (2013). Wickham C, Rohde R, Muller RA, Wurtele J, Curry J, et al. (2013) Influence of Urban Heating on the Global Temperature Land Average using Rural Sites Identified from MODIS Classifications. Geoinfor Geostat: An Overview 1:2. doi:10.4172/2327-4581.1000104
The Wickham et al. (2013) paper has become a frequently cited reference to downplay the effect of urbanization on temperature records. Yet upon inspection, the foundation of its argument collapses under modern scrutiny. Several critical methodological and ethical flaws render its conclusions untestable and irreproducible:
In summary: the 2013 study is methodologically hollow by today’s standards. It was built in an era when 500m pixels were a constraint. Today, with GHSL P2023A’s 10m AI-analyzed, parametric urbanization layers and sub-meter imagery available in Google Earth, the truth is visible—down to the last road, house, or warehouse. No paper can hide behind resolution anymore.
Recent critics have resurrected this outdated study to dispute current high-resolution urban analyses, such as GHSL. This is akin to relying on an obsolete 1-megapixel black-and-white photograph to challenge the validity of today’s AI-analyzed, multispectral, 2500-megapixel imagery.
Today, any independent researcher with basic technical literacy and an internet connection can perform a high-resolution, parametric urban classification audit using free tools. Google Earth Engine (GEE) provides direct access to over 70 petabytes of satellite data, including the full GHSL catalog and Sentinel-2 imagery, available globally at 10-meter resolution.
The code to initiate your own classification is available here. Simply paste it into the Google Earth Engine code editor, modify the coordinates and cell size, and run the script.
To download images, click “Run” in the Console’s Tasks section and follow the prompt to save outputs to your Google Drive.
See the GEE GHSL Project Overview for instructions and example scripts.
This democratization of access—once restricted to national meteorological agencies—makes it impossible to justify reliance on outdated 500m MODIS classifications. With GEE, visual inspection, parametric built-up surface metrics, and temporal trend analysis are instantly available to the public. A concise demonstration is provided in this tweet, showing real-time classification at sub-10m resolution using GHSL and Earth Engine.
While we worked with BU (built-up surface) using the GHSL, we can also leverage BU_V (built-up volume) to see where urban centers like New York City are growing vertically. These datasets complement one another:
https://github.com/orwell2024/gearth/blob/main/pick_loc_size.js
https://x.com/orwell2022/status/1810402372511994323
https://x.com/orwell2022/status/1830981277144826185
https://developers.google.com/earth-engine/datasets/catalog/COPERNICUS_S2_SR_HARMONIZED
Overall view GHSL: try any location you like. Use your google account. It’s free.
https://developers.google.com/earth-engine/datasets/catalog/JRC_GHSL_P2023A_GHS_BUILT_C
We anticipate that most stations originally labeled “very rural” by Wickham et al. (2013) will exhibit measurable urban characteristics under GHSL analysis, significantly compromising their original claims. The expectation is that few, if any, stations will match the rigorous quality standards exemplified by modern NOAA USCRN sites.
BE_site_detail_Connolly2014_McIntyre2011.txt
: Verified source list for forensic audit.very_rural_unique_ids.txt
BE_site_detail_Connolly2014_McIntyre2011.txt
GHCNv4_stations_with_BI_BU_orwell2022.csv
ghcnd-stations.txt
ghcnd-inventory.txt
v4.temperature.inv.txt
MODIS/061/MCD12Q1
— MODIS Land Cover (500m, yearly)JRC/GHSL/P2023A/GHS_BUILT_S/2020
— GHSL P2023A Built-up Surface (10m)ESA/WorldCover/v100/2020
— ESA WorldCover 2020 (10m)ESA/WorldCover/v200/2021
— ESA WorldCover 2021 (10m, improved version)COPERNICUS/Landcover/100m/Proba-V/Global
— Copernicus Global Land Cover (100m)This forensic audit adheres strictly to scientific reproducibility standards, employing publicly available datasets under appropriate academic licensing. The focus is methodological rigor and transparency rather than attribution of intent.
Just as modern LLMs easily expose plagiarism in decades-old doctoral theses, modern satellite imagery and AI-driven urban metrics will expose historical inadequacies in station classification. Wickham et al. (2013), conducted with primitive resolution, cannot credibly serve as evidence against contemporary, high-quality urban classification datasets. This audit is critical to restoring methodological rigor and scientific accuracy to climate data assessment.
The integrity of scientific conclusions depends entirely on the integrity of the data classification. Outdated tools obscure realities; modern technologies reveal them.
The absence of evidence is not evidence of absence—especially when your resolution is a black & white 500m pixel.
This script loads and visualizes three key land-use indicators in Google Earth Engine:
// ---- GHSL Built-up Surface (2020) ----
var ghsl = ee.Image('JRC/GHSL/P2023A/GHS_BUILT_S/2020')
.select('built_surface')
.gt(0); // Built-up presence
// Expand GHSL to 3x3 pixels
var kernel = ee.Kernel.square(1);
var ghslExpanded = ghsl.focal_max({kernel: kernel, iterations: 1});
// ---- MODIS Land Cover (2020) ----
var modis = ee.ImageCollection("MODIS/061/MCD12Q1")
.filter(ee.Filter.calendarRange(2020, 2020, 'year'))
.first()
.select('LC_Type1');
// MODIS cropland: classes 12 and 14
var modisCrop = modis.eq(12).or(modis.eq(14));
// MODIS urban: class 13
var modisUrban = modis.eq(13);
// ---- Layer 1: GHSL built-up (purple) ----
Map.addLayer(ghslExpanded.updateMask(ghslExpanded),
{palette: ['purple']},
'GHSL Built-up (Expanded 3x3)');
// ---- Layer 2: MODIS cropland (yellow) ----
Map.addLayer(modisCrop.updateMask(modisCrop),
{palette: ['yellow']},
'MODIS Cropland (12 + 14)');
// ---- Layer 3: MODIS urban (red) ----
Map.addLayer(modisUrban.updateMask(modisUrban),
{palette: ['red']},
'MODIS Urban (13)');
// ---- Center the map to example region ----
Map.setCenter(5, 52, 8);