Gismo is a free and open source Grasshopper plugin for GIS environmental analysis.


Licensed under GPL-3.0+ license

Building heights trick

Hi Djordje,

I thought I would share something I have been testing lately.

Here in the UK the government has scanned with LIDAR technology (laser pointing to measure surface height) many parts of the country and in particular London. Point clouds are available online and perhaps there could be a way that  they inform the building heights. I have been exploring the following process:

1. the mesh produced with the point clouds. Rather accurate but using the delaunay meshing, the shapes are very rough and dented.

2. I populate the mesh on GH.

3. Using Gismo 2D shapes, I test for point inclusion for each shape and find the highest point. Its height (z) extrudes the 2D shape.

4. The result is very convenient in many cases, though it is not easy to control which shape is extruded to the eighest point as larger polygons could contain smaller ones.

I am still looking for a way to filter more the OSM shape component so that the 2D shapes are strictly buildings.
Although the LIDAR files are rather very heavy, perhaps there would be an automated way to query the databases with GISMO.
Food for thoughts.

  • up


    Hi Olivier,

    Thank you for starting this very interesting topic!!
    And for posting your procedure in extracting the height information! Amazing approach!

    I may be wrong this, and this may not be true, but: in the very beginning enabled users to map the outlines of the building, and to set the total height of the buildings. Later on when OSM 3d viewers started being developed, it was convenient to start mapping not only the outlines, but also the inner parts of the building. So not the interior but inner parts of the 3d buildings structures. In this way the buildings could be represented with different shapes, and not only as vertically extruded shapes.
    I am not sureif this may be the issue that you are facing with larger polygons could contain smaller ones.
    Gismo solves this by checking if inner parts cover the whole area of the building outline. It they do, then the building outline will not be extruded. If they do not it will be extruded. Sometimes there are slight errors in mapping done by users, so it may happen that the building outline is extruded. One example can be seen in the photo I posted in your previous topic (bottom left corner, the tall building in front). This problem can be solved by adding the id of the building outline into the onlyRemove_Ids_ input of the "OSM shapes" component.
    I attached below a definition which distinquishes between building outlines, and building inner parts. Still I am puzzled how would your LIDAR gh file know which one is which. Sorry for not being able to give you some advice at the moment, on this issue.

    As for using the extacted building heights data from LIDAR, and adding it to (did I understand correclty that this was also one of your questions?):

    Instead of manual mapping/tagging through internet browser, one of Gismo's potentials is to do it automatically. For example, automatic tagging of building heights from some sort of initial data (your LIDAR data). I haven't dwelled checked how exactly this can be done, but it is definitively possible.
    However, with great power comes great responsibility. Right now we are just downloading the openstreetmap and terrain data. Gismo has imposed some limitations in terms of "radius_", in order to protect the users from them (their IP addresses) being banned.

    But if there would be a way to change the data (openstreetmap for example) through Gismo, this would raise a number of important issues. What if the data that the user is adding to the openstreetmap is not correct? Who will control this? It's one thing when the user tags the height of a couple of buildings, and completely another thing when he would be doing this for the whole city/part of the city. What will happen if a user will use the data from some commercial source? How would legally this affect Gismo?
    All of this results in slight reluctance to start working on adding the possibility to Gismo to automatically add data/tags to Let alone the fact that I still do not know how to do it through their api.

    Please let me know if any of this makes sense.