- Dataset Availability
- 2016-06-30T07:00:00Z–2023-06-30T07:00:00Z
- Dataset Provider
- Google Research - Open Buildings
- Earth Engine Snippet
-
ee.ImageCollection("GOOGLE/Research/open-buildings-temporal/v1")
- Tags
Description
The Open Buildings 2.5D Temporal Dataset contains data about building presence, fractional building counts, and building heights at an effective1 spatial resolution of 4m (rasters are provided at 0.5m resolution) at an annual cadence from 2016-2023. It is produced from open-source, low-resolution imagery from the Sentinel-2 collection.
The dataset is available across Africa, South Asia, South-East Asia, Latin America and the Caribbean. The goal of this data is to support organizations (e.g., governmental, non-profits, commercial) focusing on a range of applications for social good.
Explore the data interactively with the demo Earth Engine app. (In case you encounter performance issues with the Earth Engine app please try this Earth Engine script instead.)
Alternatively, if you are not an Earth Engine user, you can download the data directly from Google Cloud Storage using this notebook.
For more details on the project and FAQs about the data checkout the project website.
Example scripts:
How to compute building count for a given AOI
How to compute built-up area for a given AOI
How to see two years side-by-side and compare
1equivalent to what could be achieved by a high-resolution model using a single frame of 4 m resolution imagery.
Bands
Resolution
4 meters
Bands
Name | Units | Min | Max | Description |
---|---|---|---|---|
building_fractional_count |
0 | 0.0216 | Source data for deriving building counts for a given AOI. Please see accompanying example scripts. |
|
building_height |
m | 0 | 100 | Building height relative to the terrain in range [0m, 100m]. |
building_presence |
0 | 1 | Model confidence values (i.e. how confident a model is that the pixel is part of a building) in range [0.0, 1.0]. Note that model confidence values are uncalibrated, meaning, if model confidence for a certain pixel is 0.8, it doesn't mean the actual likelihood of building presence is 80%. As such, confidence values can only be used for relative ranking (eg. thresholding) of pixels. Also, the model confidence can vary across location and time based on a number of factors such as cloud cover, imagery misalignment, etc. |
Image Properties
Image Properties
Name | Type | Description |
---|---|---|
imagery_start_time_epoch_s | DOUBLE | Oldest possible date for source Sentinel-2 imagery used to produce these rasters. |
imagery_end_time_epoch_s | DOUBLE | Newest possible date for source Sentinel-2 imagery used to produce these rasters. |
inference_time_epoch_s | DOUBLE | Time the rasters are supposed to predict the state of the world for, in seconds since epoch. |
s2cell_token | STRING | Token of the S2 cell this tile belongs to. Due to UTM zone boundaries, a single S2 cell that spans multiple zones may have multiple corresponding tiles in different projection zones. See http://s2geometry.io/. |
Terms of Use
Terms of Use
The data is shared under the Creative Commons Attribution (CC-BY 4.0) license and the Open Data Commons Open Database License (ODbL) v1.0 license. As the user, you can pick which of the two licenses you prefer and use the data under the terms of that license.
Leverages the Copernicus Sentinel-2 data (2015-present). See the Sentinel Data Legal Notice
Citations
Wojciech Sirko, Emmanuel Asiedu Brempong, Juliana T. C. Marcos, Abigail Annkah, Abel Korme, Mohammed Alewi Hassen, Krishna Sapkota, Tomer Shekel, Abdoulaye Diack, Sella Nevo, Jason Hickey, John Quinn. High-Resolution Building and Road Detection from Sentinel-2, 2023.
Explore with Earth Engine
Code Editor (JavaScript)
var geometry = ee.Geometry.Point( [31.549876545106667, 30.011531513347673]); // New Cairo, Egypt var col = ee.ImageCollection('GOOGLE/Research/open-buildings-temporal/v1'); /** * Adds building presence and height layers for a given timestamp. * @param {number} millis Timestamp in milliseconds. */ function addLayers(millis) { // Create a mosaic of tiles with the same timestamp. var mosaic = col.filter(ee.Filter.eq('system:time_start', millis)).mosaic(); var year = new Date(millis).getFullYear(); Map.addLayer( mosaic.select('building_presence'), {max: 1}, 'building_presence_conf_' + year); Map.addLayer( mosaic.select('building_height'), {max: 100}, 'building_height_m_' + year, /*shown=*/ false); }; // Get latest 2 years var ts = col.filterBounds(geometry) .aggregate_array('system:time_start') .distinct() .sort() .getInfo() .slice(-2); ts.forEach(addLayers); Map.centerObject(geometry, 14);