Prospects

1. Fixing tree’s elevation

In order to be able to use the vegetation module in a real-world scenario, we need to fix the elevation of the trees. Currently the programm only works with flat terrains. To work with real map taking into acount terrain elevation we need to find a way to place the trees at the correct elevation. This will require us to use the elevation data from the map and to adjust the position of the trees accordingly. This can be done with the BVH class once fixed.

grenoble fail
Figure 1. Grenoble elevation fail

2. Parallelize the computation of the autorefine method

As hinted earlier in Methodology/parallelization, the autorefine method is currently not parallelized. This is a major bottleneck in the performance of the program. The autorefine method is the most time-consuming part of the vegetation module of the program, and parallelizing it would greatly improve the performance of the program. We need to find a way to parallelize the computation of the autorefine method. This will require us to split the computation into smaller parts and to run them in parallel.

stras cutted
Figure 2. Terrain mesh splitted into smaller parts, the red lines represent the boundaries of the parts and should not be parallelized

3. Improve the handling of missing metadata

Unfortunatly for us, some importand metadata such as the tree’s height can be missing from the OpenSreet Map database. To overcome this issue, we chose to add a field default_height_range in the config.json configuration file. This field will allow the user to specify a default height range for the trees that do not have a height in the metadata. But the this solution is not optimal since tree’s height can vary a lot depending on the location context (e.g. a tree in a park will be taller than a tree in a street). We need to find a better way to handle missing metadata. Maybe this could be done by using machine learning algorithms to predict the missing metadata based on the available metadata.

ovt node missing data
Figure 3. An Overpass Turbo Node with missing metadata

4. Shading calculation

One of the applications of the vegetation module will be to calculate the shading of buildings by trees. This can be achieved by casting rays and calculating the amount of light that is blocked by the trees. Implementing this will require a ray tracing algorithm capable of handling the complex geometry of the trees, as well as accounting for the position of the sun depending on the time of year. Additionally, the Feel++ library, which specializes in solving Partial Differential Equations (PDEs), will be used to calculate the shading.

cathedrale shading
Figure 4. The shadow cast by the Cathedral of Strasbourg

References