Release of Solar3Dcity, a utility to estimate the yearly solar irradiation of buildings stored in CityGML

In the last a few months I had been busy with examining the theory of solar radiation and the estimation of the solar irradiation of roofs with 3D city models. Estimating the solar irradiation of buildings with 3D city models is one of the prominent use-cases of 3D GIS, and it is used to assess the feasibility of installing a photovoltaic panel on a roof (i.e. how much sun energy would a panel get over a year if installed).

I have been doing this in order to build my own software. Now I am happy to announce the release of Solar3Dcity, an open-source tool for estimating the yearly solar irradiation of roofs from 3D city models stored in CityGML.

Screenshot of the results of the Solar3Dcity estimations on 36 buildings in CityGML

Screenshot of the results of the Solar3Dcity estimations on 36 buildings in CityGML

I have decided to create my own software since software packages that are used nowadays are not free, and usually do not support CityGML, which is one of the primary formats of 3D city models.

Long story short, the software extracts the roof surfaces from CityGML buildings. It computes the tilt, orientation, and area of each surface. The tilt and orientation (azimuth) of a surface have a big influence on the radiation, as it’s obvious from the following plot (which was also generated with the Solar3Dcity package):

The tilt-orientation factors computed by Solar3Dcity for Delft in the Netherlands. This plot shows how drastic the influence of the tilt and orientation of the roof can have onto the received solar energy.

The tilt-orientation factors computed by Solar3Dcity for Delft in the Netherlands. This plot shows how drastic the influence of the tilt and orientation of the roof can have onto the received solar energy. This plot can be computed for any location on Earth since Solar3Dcity utilises a global weather database.

The above location-dependent plot is a key to do the estimations (the software just samples the value from it), but it takes some time and effort to obtain it. In short, the solar radiation is a three-component function over time (due to the different position of the sun every day; and reflections and refractions of the sun rays), and its values have to be integrated over the whole year. Further, the cloud cover has to be taken into account to adjust the estimations. The next plot shows the solar radiation for Delft during two days (1 Mar and 21 Jun) for three differently oriented and tilted surfaces (A, B, and H). Big difference…


This experimental research software is in the development phase, but I had a chance to compare its results with a commercial software and it seems accurate. So far I have used it for investigating the propagation of acquisition errors, about which I am currently submitting a paper.

Please head to the Github page for more information about this tool.

Edit: In the meantime I have created an animation:


Edit2: a paper has been published:

Biljecki, F., Heuvelink, G. B. M., Ledoux, H., & Stoter, J. (2015). Propagation of positional error in 3D GIS: estimation of the solar irradiation of building roofs. International Journal of Geographical Information Science. doi:10.1080/13658816.2015.1073292

j j j

Timelapse of writing a GIS research paper

I’ve written a few scripts to generate the timelapse of the writing of my recent 3D Geoinfo 2014 paper. This timelapse has been been inspired by similar work.

The timelapse comprises 520 versions of the paper in 10 fps, from the first day of work until the camera-ready copy, including one round of reviews.

Each time LaTeX/BibTeX was run the scripts generated a timestamped copy of the manuscript. Later each page was converted to PNG, the PNGs were stitched into a grid (one PNG per version), and a video was assembled (one version = one frame). More information about the workflow can be found on Vimeo.

j j j

Random3Dcity – the first CityGML procedural modelling engine and multi-LOD building generator


I am happy to announce the release of Random3Dcity, an open-source experimental CityGML procedural modelling engine that I have developed within my PhD research at the 3D geoinformation group at the Delft University of Technology. It is an experimental software prototype that was created for research purposes, but potential applications are not limited to it.

I have built Random3Dcity entirely from scratch with a custom grammar, and implemented it in Python. The source is available on Github. A prepared collection of sample datasets is available on the datasets page, with extensive technical details, so I invite you to visit it if you are interested in further details and/or interested in the data without the need to run the software.

This is the first procedural modelling engine that generates buildings and other features in CityGML, and one that is designed to do so in multiple levels of detail. The engine generates buildings according to a novel series of 16 refined levels of detail (“Delft LODs”) that I have developed during my research on this topic:

This specification will be detailed soon in a research paper that is currently under submission. The program supports five types of roofs:


The number of unique buildings is virtually unlimited, and the datasets are suited for a number of application domains, from error propagation analysis to the testing of validation and repair software.

Random3Dcity supports interior (see the image in the header), and also vegetation and roads:


Further, the engine generates different geometric references within each LOD (e.g. LOD2.0 with the walls at their actual position and another [photogrammetric] LOD2.0 with the walls as projections from the roof edges), and different geometry (solid vs. b-rep). This results in almost 400 representations of a building. I believe that this is the most thorough CityGML dataset available to date. Solids are assembled by using the surfaces that define the usable volume of the building:


The composite rendering below shows an example dataset of 100 buildings in four LODs.


A research paper is under submission to the journal Computers, Environment, and Urban Systems, describing the engine and the refined LOD specification. I will update this post when the paper becomes available. If you are interested in using the engine, please contact me to give you the reference to cite.

For more information about this project please head to my personal page. Please let me know if you encounter a bug and/or have a suggestion. Note that this is an experimental software under continuous development.

As a bonus, check a video of a sample dataset of 10000 buildings:

Happy CityGML-ing!

j j j

CityGML2OBJs – a robust semantic-aware tool for converting CityGML to OBJ


I have released the code of CityGML2OBJs, a tool for converting CityGML files to OBJ. The source and manual of the code can be found on Github. The methodology is published in a research paper:

Biljecki, F., & Arroyo Ohori, K. (2015). Automatic Semantic-preserving Conversion Between OBJ and CityGML. Eurographics Workshop on Urban Data Modelling and Visualisation 2015, Delft, Netherlands, pp. 25-30. [PDF] [DOI]

OBJ is probably the most supported 3D format, and converting your CityGML files to OBJ opens a door to a large number of software packages and use(r)s.

Besides the conversion, the tool features some additional options reflected through the suffix “s” in its name:

  • semantics–decoupling of thematically structured surfaces in CityGML and converting them into separate OBJs (that’s where the “OBJs” in the name come from). For instance, below you can see the rendering of an OBJ that contains only WallSurface polygons.sem-tri
  • structured objects–separation and storage of buildings into multiple objects in OBJ by structuring faces that belong to a building into the same group.
  • “see” the attributes from a CityGML file–the utility converts quantitative attributes into colours to support their visualisation. OBJ does not really support the concept of attributes, hence if the CityGML file contains an attribute, this is generally lost in the conversion. However, this converter is capable of converting a quantitative attribute to OBJ as a texture (colour) of the feature. For instance, if the attribute about the yearly solar irradiation is available for each polygon in the CityGML file, it is converted to a graphical information and attached to each polygon as a surface, so now you can easily visualise your attributes in CityGML.
  • sturdy–it checks polygons for validity, considers different forms of geometry storage in GML (e.g. gml:pos and gml:posList), detects for lack of boundary surfaces, etc.

Other features:

  • Supports polygon holes by triangulating all surfaces. Besides the holes, this is done by default because some software handles OBJs only if the faces are triangulated, especially when it comes to the texture, so not only holey polygons are triangulated.
  • It re-uses repeating vertices, resulting in a reduced file size and redundancy
  • Batch processing of multiple files

Visit the Github page, and please let me know if you encounter a bug and/or have a suggestion.

j j j

Our new 3D GeoInfo research group at TU Delft

My supervisors, a number of colleagues and me have moved to a new section within TU Delft: the 3D geoinformation research group. The website of the group is


I am relaying the announcement from the group’s website:

Since 1st of November 2014, our 3D geoinformation research group has started.

Our vision is that the reality is complex and constantly changing and therefore 3D geoinformation (outdoor and indoor) is extremely important to manage, predict and maintain the complex reality. We study and develop techniques to model, maintain, analyse and disseminate 3D geoinformation. Serving the nowadays users’ needs is thereby extremely important and therefore we develop solutions in close collaboration with users such as experts of noise, air and evacuation simulations. We are happy that our group is located within the Department of Urbanism, since 3D is a key aspect in the design and planning of interventions in the urban environment. We are therefore very close to the main users of 3D geoinformation who can advance in their own domain by using ours and vice versa.

Our group consists of three permanent staff members with different but completing expertise in the domain of 3D modeling: Jantien Stoter (3D geoinformation infrastructure), Sisi Zlatanova (indoor modeling and disaster management), Hugo Ledoux (data structures and algorithms for 3D modelling). Besides ourselves, PhD students and research visitors permanently work on highly relevant topics as you can see on our staff and projects pages.

We are looking forward to study and provide solutions for a solid and sustainable 3D basis to support existing and new applications!

j j j

3D GeoInfo 2014

The conference 3D GeoInfo 2014 was held on 12 and 13 Nov in Dubai, UAE. It was organised by the Karlsruhe Institute of Technology and the American University in Dubai.

Me talking about my paper. Thanks Yan Zhou for the photo.

Me talking about my paper. Thanks Yan Zhou for the photo.

3D GeoInfo is an event that once a year brings together 3D GIS researchers, and this year it was particularly interesting because it was organised in conjunction with the 3D Cadastre workshop, which contributed to the diversity of the participants.

The presentations fit two full days, in a single session (yay!). The program was diverse, and it’s hard to tell if there was a central topic. An optional Oracle Workshop was organised a day before.

Proceedings are published in two collections:

  • A Lecture Notes in Geoinformation and Cartography book that will be available later in December.
  • Online proceedings hosted at the German National Library (freely available).

I have presented two papers, and I have used the opportunity to announce my procedural modelling engine Random3Dcity, which generated interest among CityGMLers.

3D GeoInfo 2015 will be held in Kuala Lumpur, Malaysia (hosted by UTM), with the call for papers already published. The deadline for full papers is 10 May 2015, and if you haven’t attended a 3D GeoInfo yet, I warmly recommend it.

Rumour has is that the 3D GeoInfo 2016 will be organised in Athens, Greece.

j j j

My PhD project is featured in GIM International

My PhD research has been featured in a three-page article in the November 2014 issue of the magazine GIM International. If you have the received the magazine, you can find the paper at pages 21-23. Hopefully the online version will be available soon, and I will update this post (update: the paper is available on GIM’s website).

GIM International paper

GIM International is the leading global magazine for geomatics. It reports the latest geo news and developments, and it is an important venue for the geo-practitioners.

I am impressed by the quality of the editorial process. If you didn’t do so yet, subscribe to their newsletter.

j j j

ISO 19157:2013 and 3D data show that quality control standards might need their own quality control

A part of my research involves analysing and describing the propagation of errors in 3D GIS. This is a new field that has first been tackled by my paper presented at the ISPRS conference in Toronto (Oct 2014). The work done so far is limited to 2/2.5D, and the increased production of 3D city models involves some new aspects that are not available in 2/2.5D. For instance, the level of detail, which is one of the principal aspects of a 3D geo-dataset.

The quality of geo-data has been an important topic for a long time, and it has been formalised by the geo-information technical committee ISO/TC 211 in their standards. The ISO 19157:2013 Geographic information — Data quality is the principal standard for describing the quality of geo-data, and has superseded the ISO 19113:2002. Among other things, the standard deals with the evaluation and description of the positional and thematic errors, and the completeness of the data.

However, it seems that the standard falls short when dealing with 3D data and opens many questions:

  • It does not provide a way how to describe the quantity of invalid solids in the datasets, e.g. that 5% of solids in the 3D dataset are not valid. The Logical Consistency / Topological consistency element does not foresee that, and I see no other (or a generic) element that would fit this quality aspect.
  • It is not clear how to specify that the dataset contains data in the wrong level of detail. E.g. that the metadata says LOD2, but the dataset is actually LOD1. Is it something that can be stored in the usability element, the mysterious sixth quality element (see more about it below)?
  • The same question applies to the geometric reference of the model. E.g. the metadata states that the walls of buildings are reconstructed as projection from roof edges (the photogrammetric way), but the walls in the dataset are reconstructed as extrusion from the building footprint (cadastre data)? How would it be possible to note that such metadata is wrong?
  • The positional error in the height in the way that is described in the standard seems to be focused towards 2.5D data, i.e. digital terrain models, and it is not suited for 3D city models.
  • What is exactly the sixth quality element—the usability element? Are there any examples from practice, especially about 3D data? The standard seems to be indistinct about it.

I am really curious how do national mapping agencies deal with describing the quality of their 3D data since they usually rely on this standard which is, as shown above, not compatible with 3D.

I have contacted a few people about the these ambiguities, and the questions are still unanswered. If you have any insight about this topic, please let me know. The title of this post might be too bold, but I find it hard to believe that a geo-information standard released in 2013 does not regard 3D geo-information. This should be a priority in the next revision of the standard.

This might be an interesting MSc topic, so feel free to contact me if you are interested in investigating and solving these issues.

j j j

Two papers at the 3D GeoInfo 2014 in Dubai

The 9th International 3DGeoInfo 2014 conference will be held in Dubai, UAE, in November. This is perhaps the central event of the 3D city modelling research community, especially for the part focused on CityGML.

I will be presenting two papers:

  1. Improving the consistency of multi-LOD CityGML datasets by removing redundancy (doi:10.1007/978-3-319-12181-9_1)
    This paper deals with the detection and linking of the geometries (linear rings and polygons) that reoccur within the same LOD and across multiple LODs. The paper describes the possible topological cases (see the figure below), show how to detect these relationships, and how to store them explicitly. A software prototype has been implemented to detect matching features within and across LODs, and to automatically link them by establishing explicit topological relationships (with XLink).

    Cases of topological relationships of rings and polygons.

    Cases of topological relationships of rings and polygons.

  2. Height references of CityGML LOD1 buildings and their influence on applications (doi:10.4233/uuid:09d030b5-67d3-467b-babb-5e5ec10f1b38)
    The topic of this paper are the variants of models within the same LOD. For instance, a building in LOD1 may be represented as a block model with the top at the roof edges, or as another block model which top is at the top of the roof. The paper presents an inventory of such geometric references, and proves with experiments that it is very important to regard them, and to store them in the metadata.
    (Edit: this work was extended and published in the ISPRS Journal of Photogrammetry and Remote Sensing).

    Seven height references of an LOD1 block model.

    Seven height references of an LOD1 block model.

j j j

New conference paper: Error propagation in the computation of volumes in 3D city models with the Monte Carlo method (ISPRS TCII, Toronto)

My first paper dealing with the topic of error propagation in GIS has been accepted, and it will be presented on the ISPRS Technical Commission II Midterm Symposium in Toronto in October 2014.

To the extent of my knowledge, this is the first paper that deals with error propagation in 3D GIS/3D city modelling. The dataset that has been used is produced by my random engine Random3Dcity, which generates random CityGML buildings in multiple representations (LODs), and simulates acquisition errors. The datasets will be released for public use soon. The data is released on the website of the engine.

Two versions of LOD2: one as a ground truth reference, the other one is erroneous (disturbed with 0.4m errors).

Two versions of LOD2: one as a ground truth reference, and the erroneous one (with simulated acquisition positional errors, sampled from a normal distribution; sigma=0.4m). The histogram shows the distribution of volumetric errors between two variants of the erroneous datasets.

Read More

j j j