A paper in IJGI about the 3D+LOD (4D) integration

I am relaying the news from my group’s blog:

We are happy to announce that the paper Modeling a 3D City Model and Its Levels of Detail as a True 4D Model, authored by Ken Arroyo Ohori, Hugo Ledoux, Filip Biljecki and Jantien Stoter, has been published in the ISPRS International Journal of Geo-Information.

The topic of the paper is investigating and developing a three-step approach to model the level of detail (LOD) as an extra geometric dimension perpendicular to the three spatial ones. The result is a true 4D model in which a single 4D object (a polychoron) represents a 3D polyhedral object (e.g., a building) at all of its LODs and a multiple-LOD 3D city model is modeled as a 4D cell complex.

The paper (open access) can be accessed here.

ijgis-4d-1 ijgis-4d-2

j j j

UDMV 2nd call for papers and a LiDAR contest

The deadline for the UDMV 2015 workshop has been extended to 20 July. Please find the 2nd call for papers on the website of the event, or as a PDF.

Further, the UDMV 2015 point cloud contest has just been announced. It is aimed at researchers in the LiDAR, 3D modelling, and visualisation domains, but we also welcome a wide variety of other topics. Please find more information at the webpage of the contest. Note that the submission of abstracts is due on 16 October, and that the participation does not mandate attending the workshop. It is open to everyone.

The 3rd Eurographics Workshop on Urban Data Modelling and Visualisation is a multi-disciplinary event that bridges 3D GIS and computer graphics, with two successful editions organised in the past (in France and in Spain). It will be hosted on 23 November by the 3D geoinformation group at TU Delft.

We are looking forward to your valuable submissions.


j j j

A new GIS journal: Open Geospatial Data, Software and Standards

I am relaying the news about Open Geospatial Data, Software and Standards, a recently established open-access journal from Springer.

From its website:

Open Geospatial Data, Software and Standards provides an advanced forum for the science and technology of open data, crowdsourced information, and sensor web through the publication of reviews and regular research papers. The journal publishes articles that address issues related, but not limited to, the analysis and processing of open geo-data, standardization and interoperability of open geo-data and services, as well as applications based on open geo-data. The journal is also meant to be a space for theories, methods and applications related to crowdsourcing, volunteered geographic information, as well as Sensor Web and related topics.

For an extensive list of GIS journals, please see our inventory.

j j j

Teaser of Solar3Dcity

I have created a brief animation of the results computed by my recently released software Solar3Dcity:

Feel free to use it around to showcase a 3D use-case. Estimating the solar potential of roofs with 3D city models is one of the prominent 3D use-cases, and it’s always nice to show it as an example. Partly because this application is not possible with 2D data, but also because it is becoming wide- spread.

The software prototype is available at Github.

j j j

An update on Random3Dcity

It has already been two months since I have released Random3Dcity, an experimental basic procedural modelling engine that natively supports CityGML. It is an experimental research prototype that I have built for my PhD project, but nevertheless it has generated quite some interest in the 3D GIS community.

For instance, it has been featured on the ISPRS datasets webpage and in the ISPRS newsletter of December 2014. Nice promotion.

Another thing worth mentioning is that my friend Marko Čubranić found it interesting and he has decided to 3D print a sample dataset. I guess that goes to history books as the first 3D printed CityGML procedurally generated model 🙂

3D printed CityGML dataset with Ultimaker II. Sample of Random3Dcity.

3D printed CityGML dataset with Ultimaker II. Sample of 144 gridded buildings with a street network generated with Random3Dcity.

The most important news is that I have updated the code so now it works with Python 3 (thanks to Mickaël Brasebin for the suggestions). I have also squished a bug where an lod3MultiSurface could have been composed of multiple gml:MultiSurfaces, which is a violation of the CityGML 2.0 standard.

Bug reports and suggestions are always welcome.

j j j

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