Search

Release of 3D building open data of HDBs in Singapore

Cities around the world are increasingly releasing their 3D city models as open data.
Researchers and practitioners in different disciplines are using 3D geoinformation to carry out a variety of spatial analyses.

At NUS we have been working on generating a 3D city model of all public housing (HDB) buildings in Singapore, by conflating different open datasets.
Public housing accommodates the predominant majority of Singapore’s population, so the dataset covers most of the nation’s residential buildings.

We are happy to announce that we are releasing its first version as open data, hopefully benefiting researchers who previously did not have access to such data.
To the extent of our knowledge, this is the first large-scale open dataset of 3D buildings in Singapore.

Both can be downloaded on our Github repository.
While the dataset covers almost all buildings and it is semantically rich, please note that this is the first version and it is still work in progress with errors (e.g. some locations are wrongly associated due to addressing issues) and with a long todo list, please read more about the known issues at our Github repo.

The dataset can also be viewed through Mapbox:

Method

We have used extrusion, a straightforward and common way to generate 3D models.
It uses information about the height of each object (usually obtained from airborne laser scanning; lidar) and the geometry of the footprint.
This method results in LoD1 (block) models.

While this method is simple and building footprints are nowadays widely available (we have used OpenStreetMap), it is hampered by the lack of open data on the heights of objects.
There is no publicly available lidar dataset covering Singapore.

Therefore, as a proxy for the height, we have used the number of storeys of each block, which is available as open data in Singapore.
Although prone to errors, this method has been very popular around the world and benefited a myriad of researchers.

Data sources

We linked the two using OneMap’s geocoder.
While OpenStreetMap’s completeness in Singapore is high and in most cases it is sufficient to generate a 3D model, height (and/or number storeys) and the address information are not available for all buildings, and thus HDB’s dataset was used along with OneMap’s API to link the two.
Furthermore, HDB’s dataset contains a lot of attributes for each block, not available in OpenStreetMap, greatly increasing the semantic richness of the dataset.
More information about the workflow is available at our Github repo, where we have released the code as open-source as well.

Geometry

There is not much to say about the geometry.
It is in LoD1, and thanks to the hard work of the OpenStreetMap community, the footprints look pretty good.
Have a look yourself:

Attributes

The resulting CityJSON dataset includes several attributes, such as address and number of units in each block (even decomposed by number of rooms thanks to the open data of HDB).
Check the left pane of the screenshot from azul for an example block in Bukit Merah:

Data viewed in azul (free macOS software for CityJSON) showing the attributes for a block in Bukit Merah.

For the list of attributes please scroll down to the metadata section.

Please note that the OBJ file contains only the geometry since it’s a 3D computer graphics format.

Download

If all this sounds good to you, the dataset is available on our Github repo.
The datasets are below 100MB in size thanks to the compactness of the CityJSON and OBJ formats.

Terms of use: if using the data, please mention the following data sources: NUS Urban Analytics Lab, HDB Singapore, OpenStreetMap contributors, and OneMap.
If you are using it for a nice publication, please cite the following paper:

As shown above, the dataset is semantically quite rich thanks to the input datasets.
The attributes from OpenStreetMap are prefixed with osm_, while the ones from the HDB dataset are prefixed with hdb_.
Please note that some information is duplicated in both datasets.
We have included both sets of information just in case.
The list of the usual attributes is as follows (but not limited to):