Extracting building height from Lidar
Lidar is similar to radar...but with lasers. Lidar produces incredibly accurate and specific spatial information, making it great for measuring building heights and modeling the impact of floods and raising sea levels. Advances in lidar technology are making lidar data more available. Humanitarian drones may make it possible to collect up-to-date lidar data in the midst of a humanitarian crisis.
Lidar data is still complicated to work with due to its size, but can be managed entirely through open source tools. We extracted building heights for a neighborhood in San Francisco to demonstrate how this can be done using open lidar data and open source tools.
Extracted building height rendered in 3d using Tilemill.
Understanding vertical growth of a city is as important as understanding its horizontal growth. Building heights are crucial data for everything from disaster response to measuring economic growth. Here we demonstrate how to create a building-height footprint using open data and open source tools.
Open Source Tools and Open Data
We used libLAS, PostGIS, and QGIS to extract building heights in the Richmond District of San Francisco.
You can download open lidar data from USGS Earth Explorer. In this example we combine that with building footprints from OpenStreetMap.
Processing Lidar
We used libLAS, an open source lidar library, to process a lidar point cloud that we downloaded from USGS and converted the lidar data into a .txt file for import into a PostGIS database. PostGIS is great for handling processing-intensive data, like lidar.
We then pulled building footprints of San Francisco from OpenStreetMap and loaded this data into our PostGIS database. By joining the lidar data with OSM building footprints we can determine accurate elevations of the top of each building.
Lidar data is extremely dense. There are thousands of data points in the space representing a city road between buildings and thousands more in each building footprint.
But we want building height. As it is, our data won't distinguish between a short building on a hill, and a tall building in a valley. For each building we construct a two-metre buffer around every building footprint and determine the lowest area in that buffer. By subtracting the elevation of the building from the lowest elevation of the buffer we can determine the building height and append this data to each building footprint. This is how we convert raw data into useable information.
Once we have the building heights we can render the buildings in 3d using Tilemill and Mapbox. We use Tilemill's building symbolizer to visualize building height and produce a 3d render of each building. This Mapbox tutorial provides an excellent overview of getting started with visualizing buildings in 3d.
Measuring Building Height
As rapid global urbanization continues in cities around the world, the need for intelligent city design will be crucial in accomodating growing populations. Vertical sprawl can help us understand the needs and surplus of vertical growth across a city. The Burj Khalifa stands at 830 metres and is regarded as the 'Building of the Century'. How could this vertical space have been better distributed to better suit the needs of residents? Lidar can help us understand the urban landscape, and begin to question vertical sprawl as we do horizontal sprawl.