3D Urban data in QGIS
CC Attribution 3.0 Unported:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor.
Mezzo, Benoît De
3D data become more and more common these days. Sensors like drones or "streetview" cars produce large amounts of images used to create 3D models through photogrammetry. 3D editing software also eases the production of 3D models, especially for BIM. AI systems begin to be ready to generate 3D objects of the world. It is now frequent for municipalities to acquire a full 3D dataset of all urban objects. These datasets pose a certain amount of issues : how to visualize them efficiently ? How to integrate these 3D data with other GIS data ? How to make them available on the web ? How to manage this data with my favorite GIS software ? We worked on these issues in order to be able to manage urban data efficiently in QGIS. Based on the emerging 3D capabilities of QGIS, we explored the 3D Tiles format and implemented it in QGIS, so as to be able to visualize large amount of urban data. In this presentation, we will present our work on urban data visualization, the state of the art in QGIS 3D visualization, and future work planned in this area. We will showcase the features with a real-world example.
 Hi, all. Welcome for everyone. Welcome to the Friday session, Salta Rooms. Today we will have a lot of presentations. The presentation is divided in two parts. The speaker will talk about 20, 25 minutes and then we will have time for questions. The first speaker will be Benoí de Meso. He will talk about 3D Euroband data in QGIS. Benoí de Meso works for Auslandia on complex GIS architectures and on the development of additional functionality to QGIS. He's a software architect and has a PLT image analysis. Benoí, go ahead. Feel free to start when you're ready. Great. Hello everybody. We'll talk about current working progress, about 3D Euroband data in QGIS. Next question is what you... Sorry, I got some echo in my ears. So I can't say that. I'll be back. So what about using 3D QGIS system? Can you mute your Benules and put only the string there? Can you repeat? Because I got an echo. Can you mute your Benules and put only your... Close your Benules. Yes, close your Benules. If not, we will have problems. Only a string there. It's currently closed. It's working wait. Back again. I'm so sorry. We'll talk about... Benoí, can you close your Benules? Benules? What's my... Yes, the part... The browser that you have open it there. That... Please close that. That's perfect. Now you are on... Okay. Sorry. I'm going to start again. So excuse me. Make problems. So I went to talk about 3D QGIS. I would like to talk about the need of 3D QGIS system because mainly they are done for 2D maps. But sometimes we have some complex data from 3D datasets and we like to display them to enrich the 2D maps or maybe to have some kind of heaven simulation or whatever we can do to enrich map and visualization. So complex data sense means we have to handle some kind of data from buildings, for example, inside buildings, outside buildings with interiors, maps, textures. And we have also to handle... We can handle CT data on like a dry holes also like we have to do in another project. We have to represent dry holes in QGIS. So these complex dataset may have some specific needs because they are huge, heavy. They cannot be load at once in QGIS. So we have to introduce some smart data loading system. But by the way, they have to be also pickable and still able. You should have to be able to select an object with some attributes and change the stills and the color or whatever you want. In the case we have two big dataset, the dataset may not be usable like that. So you may need to slice it into smaller parts. And we will project that slice to the view to inspect and have a better understanding of the dataset. But there are so many formats in a kind of object we can display in 3D. We can display some point cloud, we can display meshes, we can display objects, previously modelled objects. And we have to be able to handle all these formats. But each format has its own programs, own difficulties to represent in this specific usage. By the way, if you are looking for a cloud point representation, we have some more data but you cannot really use it because you cannot pick an object, you cannot see change of texture and you have no faces, you cannot do many things. Some evolution of the dataset is using some mesh dataset where here we have some wall, only wall mesh, textured one. You can pretty well see all the buildings but you cannot pick buildings, you cannot retrieve attributes on the buildings. The next stage is having some remodelled objects of this dataset. But in this case you have to have textures data. This big work came from cloud point to this kind of dataset. But you have to handle all this kind of dataset. In truth, you would like to handle complex to distance. So to handle all this kind of data, we need some format, some specification. The dataset can be able to manipulate level of detail information. Information for specific data, then you go closer, you have some information, other final information, and then you go closer on again some final information. We are only focused for now on EFC and in the BIM format. But this is a future work, we are still looking how to do it. And now we will talk about 3D tiles, the main format we are focused and try to integrate into QGIS. But what is 3D tiles? 3D tiles is a format specification done by Cesium for them. Which means this is a format done for web application. And as it is a web application, if you want to display a big dataset, you can do it at once, you can't load all the data at once. So you have to use in the 3D tiles dataset specification and things like that. It's a YAR-HECOL dataset. All the dataset is described in GISN and dataset can contain datasets. So all the descriptions of datasets are GISN as I already said. But all the mesh data, the texture data, the 3D data are then defined in binary file in the GLTF format. Also as Cesium is only working in the web application on the EarthGlob, they use a specific dedicated, not dedicated, but specific projection. This projection is a centred in metrics. And to have a point, to describe a point on the Earth, this projection, you need to have explicitly the three coordinates, X, Y and Z. But what about 3D and QGIS? QGIS has introduced 3D since the 2.18th version, in the mid-70s. And QGIS was designed for 2D maps. It's not a well-done viewer for 3D data. By the fact, if you want to see your data and manipulate 3D objects, you have to go through the dedicated 3D view. If you want to see your 3D data in the main view, you have to have QGIS with project Z. In 2D, in the bottom view, up to bottom view. But even the second case, we can some partial addition in the mesh, in 2D and half addition. All the work you can be made in QGIS in 3D is based on QT5. QT5 has a specific 2D engine. And all the work is done by QT parts. But there are some drawbacks in using QT and QGIS. Because as I said previously, QGIS is mainly done to use 2D coordinates, say, longitude plus elevation. In many parts of the code, you can have some drop of the Z coordinates because they only consider longitude and latitude. In the kind of geodesic centroid projection, this does not work. Cannot just remove the third component of the coordinate and be happy with that. You have a non-working point. So yes, there are some changes to be done in the core of QGIS. Although there are many improvements that have been done in QT6, and we have some drawbacks in using QT5. The 2D provided by QT5. But for now, the evolution from QT5 to QT6 in QGIS is not in the roadmap for now. We have to continue to work with existing drawbacks. Over the top of QT, you have all those software related provided by QGIS. But there are many things that will be done in QGIS for the 2D. In the 3D view, you have the ability to do a selection of 3D objects. You can change the style. We have a view of 3D building with conditional styles. And you have the ability also to apply some textures to 3D objects. So there are many, many things that have already been done. And the main point that may interest us in the 3D type supports is that there is already an LOD system defined in QGIS to handle the 3D dataset. So what do we need to do to integrate 3D types in QGIS? To do that, we have to provide some way to load the dataset, the hierarchical dataset, to map it onto the QGIS LOD systems. We have to be able to handle properly the GLTF files, the type of files, because this is where the mesh data, the texture data are stored in the 2D type specification. As in QGIS, we are not working on a globe. We are working on a flat ground. We have to do some work through a project. The data are from 2D types, which are defined in 49-78 projection to another projection, say the 28-57-1. We're still in metric. Also we have to bring some support to be able to use the style in selection of objects that already exist in QGIS to the 3D type support. So what we have done? We have created a QGIS enhancement proposal to use to... I don't know what to say about it... To propose to the community the evolution of 3D tiles in the integration of the 3D tiles into QGIS. We have built a 3D tiles dataset loading with lazy support. We only load the tiles when it's only lit. We can read remote files. We can re-execute in the demonstration. We have worked with GLTF support, but we have some drawbacks. It's a very basic GLTF support. In World Warf, we have worked on the fix, the reprojection from the geocentric system from 3D tiles. I'm giving more precise about what we've done about trading the GLTF files. Currently, the GLTF files are supported by QT 3D. So that's fine. There's a specificity in QT 3D. It is a same loader. It can read a complex 3D files. And it can read GLTF files. It can extract from GLTF files textures, meshes, materials, shaders. So that's great. To do that, you use a specific library, which exists elsewhere. This one, maybe, yes. We can load with this library many, many files for. But this library is not completely mapped in QT 3D send loader. So for example, we cannot load the binary file format, which is used in 3D tiles. The format is not supported. So we have to use another library to load the file format from 3D tiles, the GLTF from 3D tiles, and save them in a format which we will be able to be loaded by the same loader of QT 3D. Also there are some other limitations. Currently, the send loader generates entities from the GLTF 3D entities. But he cannot read all the meshes. So the GLTF file can be defined in the GLTF. Mainly, in the common case, we have only mesh per file, but it's not always the case. And when you have multiple mesh, only one mesh is reused. Although even if it seems the material and texture can be properly extracted, we can use it for now. So in future demonstration, we cannot prove the texture extraction. Now I would like to speak about the difficulties about reprojection from the mesh defined in a 49-78 coordinate system to the flat ground. For example, here is a Dragon from the sample, the cesium sample. If we put it in a QGIS, if we put the mesh directly extracted from the GLTF in a QGIS, we saw that this Dragon is not well oriented. We have to fix the role, the pitch and the yo according to its position on the globe. After some computation, according to the position of the object around the globe, we compute some correction to apply to it. Then we can say it can put it well on the flat ground. Here's the explanation. We take this Dragon and put it in blender. As we can see here, the same Dragon is zero centered. It has no yo, pitch, and roll rotation. It's just flat on the ground and zero centered. This Dragon is fine and we can use it directly in QGIS with the support we have provided. Here's the bad example. It comes from another type set. We saw that it's not zero centered. It has already all rotation and rotation defined. This kind of object cannot be well placed in the QGIS. It can be put flat. We cannot compute the correction to put it flat on the ground. So what we need is centered object on zero and the rotation and translation must be defined in the type set definition. We have a transform matrix and all the error must be defined. So now a quick demonstration of what we have already succeeded to do. The Dragon from Cezion, Japanese house and some data from NSA. So here's the Dragon. As you can see, the color is due to the tiles' depth and not from the texture as we cannot display texture. The more we get closer, we can see more details here, we can see the scale and we go back to the scale and we have unload the fine object to show the cursor object. As a Japanese house, it's a more complex sample, we can see that when we go closer than the angle, we load the finer tiles. When we go to the roof of the house, we can see if we can, on the more closer, we will load the tile. And if we go outside the burning box of the roof, we can do the cursor version. If we go closer to the roof, we got the finer version. And I quick do the last video and we will see that we can be able to load some kind of landscape provided by the NSA. When the closer we get, the finer we get, we saw that the tiles are loaded properly. Okay, so thank you for your attention. First for you, and now it's time question, if you have some. Yes, thank you for your presentation, Benoed. It's been really interesting for all of us. And yes, we have a lot of questions from the audience. And I will put here the first one was, are there ways to visualize in the network using the 3D visualizer filters in QGIS? What do you call in the networks? You can currently visualize 3D data. And so if you have 3D data from a building, and you can go inside the data. From the cooling system, you will not see all the outside the building if you go inside the building. Okay, perfect. Here is another question. Can the brush action be used? Now because it's defined by the 3D tile specification, clearly defined that only the 49-78 projection can be used. In the demonstration for the Japanese house and the NSA demonstration, we use QGIS as native 3D tile projection and the 49-78. We only use the demonstration with the dragon, we use the other projection, we re-project the 49-78 to 38-57. Sorry. Perfect. So we have a lot of questions. I don't know if all of them can be answered. But there is another one. What plugins do you recommend to work with 3D and QGIS? What plugins I have talking about because 3D is already working out of the box with QGIS. So you don't need plugins. And the current work I've presented is not merging the twang. Okay. It's not a table. And there is another one about the tool. It's a very good question. I don't know. We have not reached the steps. But indeed it will be nice to be able to serve 2D tiles. But this is not the purpose of QGIS. There is already a system which is able to provide 2D tiles. It's not the main purpose. But it can be a future feature. Perfect. Benoît, thank you so much for your presentation. You're welcome. So if anyone needs to contact you, you can do it through. I'll be on the chat if you like. Okay. On Benoît's. Perfect. So thank you so much. We are going to the next presentation.
 Hi, all.  Welcome for everyone.  Welcome to the Friday session, Salta Rooms.  Today we will have a lot of presentations.  The presentation is divided in two parts.  The speaker will talk about 20, 25 minutes and then we will have time for questions.  The first speaker will be Benoí de Meso.  He will talk about 3D Euroband data in QGIS.  Benoí de Meso works for Auslandia on complex GIS architectures and on the development of  additional functionality to QGIS.  He's a software architect and has a PLT image analysis.  Benoí, go ahead.  Feel free to start when you're ready.  Great.  Hello everybody.  We'll talk about current working progress, about 3D Euroband data in QGIS.  Next question is what you...  Sorry, I got some echo in my ears.  So I can't say that.  I'll be back.  So what about using 3D QGIS system?  Can you mute your Benules and put only the string there?  Can you repeat?  Because I got an echo.  Can you mute your Benules and put only your...  Close your Benules.  Yes, close your Benules.  If not, we will have problems.  Only a string there.  It's currently closed.  It's working wait.  Back again.  I'm so sorry.  We'll talk about...  Benoí, can you close your Benules?  Benules?  What's my...  Yes, the part...  The browser that you have open it there.  That...  Please close that.  That's perfect.  Now you are on...  Okay.  Sorry.  I'm going to start again.  So excuse me.  Make problems.  So I went to talk about 3D QGIS.  I would like to talk about the need of 3D QGIS system because mainly they are done for 2D  maps.  But sometimes we have some complex data from 3D datasets and we like to display them to  enrich the 2D maps or maybe to have some kind of heaven simulation or whatever we can do  to enrich map and visualization.  So complex data sense means we have to handle some kind of data from buildings, for example,  inside buildings, outside buildings with interiors, maps, textures.  And we have also to handle...  We can handle CT data on like a dry holes also like we have to do in another project.  We have to represent dry holes in QGIS.  So these complex dataset may have some specific needs because they are huge, heavy.  They cannot be load at once in QGIS.  So we have to introduce some smart data loading system.  But by the way, they have to be also pickable and still able.  You should have to be able to select an object with some attributes and change the stills  and the color or whatever you want.  In the case we have two big dataset, the dataset may not be usable like that.  So you may need to slice it into smaller parts.  And we will project that slice to the view to inspect and have a better understanding  of the dataset.  But there are so many formats in a kind of object we can display in 3D.  We can display some point cloud, we can display meshes, we can display objects, previously  modelled objects.  And we have to be able to handle all these formats.  But each format has its own programs, own difficulties to represent in this specific usage.  By the way, if you are looking for a cloud point representation, we have some more data  but you cannot really use it because you cannot pick an object, you cannot see change of texture  and you have no faces, you cannot do many things.  Some evolution of the dataset is using some mesh dataset where here we have some wall,  only wall mesh, textured one.  You can pretty well see all the buildings but you cannot pick buildings, you cannot  retrieve attributes on the buildings.  The next stage is having some remodelled objects of this dataset.  But in this case you have to have textures data.  This big work came from cloud point to this kind of dataset.  But you have to handle all this kind of dataset.  In truth, you would like to handle complex to distance.  So to handle all this kind of data, we need some format, some specification.  The dataset can be able to manipulate level of detail information.  Information for specific data, then you go closer, you have some information, other  final information, and then you go closer on again some final information.  We are only focused for now on EFC and in the BIM format.  But this is a future work, we are still looking how to do it.  And now we will talk about 3D tiles, the main format we are focused and try to integrate  into QGIS.  But what is 3D tiles?  3D tiles is a format specification done by Cesium for them.  Which means this is a format done for web application.  And as it is a web application, if you want to display a big dataset, you can do it at  once, you can't load all the data at once.  So you have to use in the 3D tiles dataset specification and things like that.  It's a YAR-HECOL dataset.  All the dataset is described in GISN and dataset can contain datasets.  So all the descriptions of datasets are GISN as I already said.  But all the mesh data, the texture data, the 3D data are then defined in binary file in  the GLTF format.  Also as Cesium is only working in the web application on the EarthGlob, they use a specific  dedicated, not dedicated, but specific projection.  This projection is a centred in metrics.  And to have a point, to describe a point on the Earth, this projection, you need to have  explicitly the three coordinates, X, Y and Z.  But what about 3D and QGIS?  QGIS has introduced 3D since the 2.18th version, in the mid-70s.  And QGIS was designed for 2D maps.  It's not a well-done viewer for 3D data.  By the fact, if you want to see your data and manipulate 3D objects, you have to go  through the dedicated 3D view.  If you want to see your 3D data in the main view, you have to have QGIS with project Z.  In 2D, in the bottom view, up to bottom view.  But even the second case, we can some partial addition in the mesh, in 2D and half addition.  All the work you can be made in QGIS in 3D is based on QT5.  QT5 has a specific 2D engine.  And all the work is done by QT parts.  But there are some drawbacks in using QT and QGIS.  Because as I said previously, QGIS is mainly done to use 2D coordinates, say, longitude  plus elevation.  In many parts of the code, you can have some drop of the Z coordinates because they only  consider longitude and latitude.  In the kind of geodesic centroid projection, this does not work.  Cannot just remove the third component of the coordinate and be happy with that.  You have a non-working point.  So yes, there are some changes to be done in the core of QGIS.  Although there are many improvements that have been done in QT6, and we have some drawbacks  in using QT5.  The 2D provided by QT5.  But for now, the evolution from QT5 to QT6 in QGIS is not in the roadmap for now.  We have to continue to work with existing drawbacks.  Over the top of QT, you have all those software related provided by QGIS.  But there are many things that will be done in QGIS for the 2D.  In the 3D view, you have the ability to do a selection of 3D objects.  You can change the style.  We have a view of 3D building with conditional styles.  And you have the ability also to apply some textures to 3D objects.  So there are many, many things that have already been done.  And the main point that may interest us in the 3D type supports is that there is already  an LOD system defined in QGIS to handle the 3D dataset.  So what do we need to do to integrate 3D types in QGIS?  To do that, we have to provide some way to load the dataset, the hierarchical dataset,  to map it onto the QGIS LOD systems.  We have to be able to handle properly the GLTF files, the type of files, because this  is where the mesh data, the texture data are stored in the 2D type specification.  As in QGIS, we are not working on a globe.  We are working on a flat ground.  We have to do some work through a project.  The data are from 2D types, which are defined in 49-78 projection to another projection,  say the 28-57-1.  We're still in metric.  Also we have to bring some support to be able to use the style in selection of objects  that already exist in QGIS to the 3D type support.  So what we have done?  We have created a QGIS enhancement proposal to use to...  I don't know what to say about it...  To propose to the community the evolution of 3D tiles in the integration of the 3D tiles  into QGIS.  We have built a 3D tiles dataset loading with lazy support.  We only load the tiles when it's only lit.  We can read remote files.  We can re-execute in the demonstration.  We have worked with GLTF support, but we have some drawbacks.  It's a very basic GLTF support.  In World Warf, we have worked on the fix, the reprojection from the geocentric system  from 3D tiles.  I'm giving more precise about what we've done about trading the GLTF files.  Currently, the GLTF files are supported by QT 3D.  So that's fine.  There's a specificity in QT 3D.  It is a same loader.  It can read a complex 3D files.  And it can read GLTF files.  It can extract from GLTF files textures, meshes, materials, shaders.  So that's great.  To do that, you use a specific library, which exists elsewhere.  This one, maybe, yes.  We can load with this library many, many files for.  But this library is not completely mapped in QT 3D send loader.  So for example, we cannot load the binary file format, which is used in 3D tiles.  The format is not supported.  So we have to use another library to load the file format from 3D tiles, the GLTF from  3D tiles, and save them in a format which we will be able to be loaded by the same loader  of QT 3D.  Also there are some other limitations.  Currently, the send loader generates entities from the GLTF 3D entities.  But he cannot read all the meshes.  So the GLTF file can be defined in the GLTF.  Mainly, in the common case, we have only mesh per file, but it's not always the case.  And when you have multiple mesh, only one mesh is reused.  Although even if it seems the material and texture can be properly extracted, we can  use it for now.  So in future demonstration, we cannot prove the texture extraction.  Now I would like to speak about the difficulties about reprojection from the mesh defined in  a 49-78 coordinate system to the flat ground.  For example, here is a Dragon from the sample, the cesium sample.  If we put it in a QGIS, if we put the mesh directly extracted from the GLTF in a QGIS,  we saw that this Dragon is not well oriented.  We have to fix the role, the pitch and the yo according to its position on the globe.  After some computation, according to the position of the object around the globe, we compute  some correction to apply to it.  Then we can say it can put it well on the flat ground.  Here's the explanation.  We take this Dragon and put it in blender.  As we can see here, the same Dragon is zero centered.  It has no yo, pitch, and roll rotation.  It's just flat on the ground and zero centered.  This Dragon is fine and we can use it directly in QGIS with the support we have provided.  Here's the bad example.  It comes from another type set.  We saw that it's not zero centered.  It has already all rotation and rotation defined.  This kind of object cannot be well placed in the QGIS.  It can be put flat.  We cannot compute the correction to put it flat on the ground.  So what we need is centered object on zero and the rotation and translation must be defined  in the type set definition.  We have a transform matrix and all the error must be defined.  So now a quick demonstration of what we have already succeeded to do.  The Dragon from Cezion, Japanese house and some data from NSA.  So here's the Dragon.  As you can see, the color is due to the tiles' depth and not from the texture as we cannot  display texture.  The more we get closer, we can see more details here, we can see the scale and we go back  to the scale and we have unload the fine object to show the cursor object.  As a Japanese house, it's a more complex sample, we can see that when we go closer than the  angle, we load the finer tiles.  When we go to the roof of the house, we can see if we can, on the more closer, we will  load the tile.  And if we go outside the burning box of the roof, we can do the cursor version.  If we go closer to the roof, we got the finer version.  And I quick do the last video and we will see that we can be able to load some kind  of landscape provided by the NSA.  When the closer we get, the finer we get, we saw that the tiles are loaded properly.  Okay, so thank you for your attention.  First for you, and now it's time question, if you have some.  Yes, thank you for your presentation, Benoed.  It's been really interesting for all of us.  And yes, we have a lot of questions from the audience.  And I will put here the first one was, are there ways to visualize in the network using  the 3D visualizer filters in QGIS?  What do you call in the networks?  You can currently visualize 3D data.  And so if you have 3D data from a building, and you can go inside the data.  From the cooling system, you will not see all the outside the building if you go inside  the building.  Okay, perfect.  Here is another question.  Can the brush action be used?  Now because it's defined by the 3D tile specification, clearly defined that only the 49-78 projection  can be used.  In the demonstration for the Japanese house and the NSA demonstration, we use QGIS as  native 3D tile projection and the 49-78.  We only use the demonstration with the dragon, we use the other projection, we re-project  the 49-78 to 38-57.  Sorry.  Perfect.  So we have a lot of questions.  I don't know if all of them can be answered.  But there is another one.  What plugins do you recommend to work with 3D and QGIS?  What plugins I have talking about because 3D is already working out of the box with QGIS.  So you don't need plugins.  And the current work I've presented is not merging the twang.  Okay.  It's not a table.  And there is another one about the tool.  It's a very good question.  I don't know.  We have not reached the steps.  But indeed it will be nice to be able to serve 2D tiles.  But this is not the purpose of QGIS.  There is already a system which is able to provide 2D tiles.  It's not the main purpose.  But it can be a future feature.  Perfect.  Benoît, thank you so much for your presentation.  You're welcome.  So if anyone needs to contact you, you can do it through.  I'll be on the chat if you like.  Okay.  On Benoît's.  Perfect.  So thank you so much.  We are going to the next presentation.
FOSS4G_2021_-_3D_Urban_data_in_QGIS_8WDrHxAKVuc_0_359.png FOSS4G_2021_-_3D_Urban_data_in_QGIS_8WDrHxAKVuc_360_431.png FOSS4G_2021_-_3D_Urban_data_in_QGIS_8WDrHxAKVuc_432_563.png FOSS4G_2021_-_3D_Urban_data_in_QGIS_8WDrHxAKVuc_564_695.png FOSS4G_2021_-_3D_Urban_data_in_QGIS_8WDrHxAKVuc_696_779.png FOSS4G_2021_-_3D_Urban_data_in_QGIS_8WDrHxAKVuc_780_1031.png FOSS4G_2021_-_3D_Urban_data_in_QGIS_8WDrHxAKVuc_1032_1199.png FOSS4G_2021_-_3D_Urban_data_in_QGIS_8WDrHxAKVuc_1200_1331.png FOSS4G_2021_-_3D_Urban_data_in_QGIS_8WDrHxAKVuc_1332_2447.png FOSS4G_2021_-_3D_Urban_data_in_QGIS_8WDrHxAKVuc_2448_2531.png FOSS4G_2021_-_3D_Urban_data_in_QGIS_8WDrHxAKVuc_2532_2735.png FOSS4G_2021_-_3D_Urban_data_in_QGIS_8WDrHxAKVuc_2736_3275.png FOSS4G_2021_-_3D_Urban_data_in_QGIS_8WDrHxAKVuc_3276_3383.png FOSS4G_2021_-_3D_Urban_data_in_QGIS_8WDrHxAKVuc_3384_5351.png FOSS4G_2021_-_3D_Urban_data_in_QGIS_8WDrHxAKVuc_5352_5723.png FOSS4G_2021_-_3D_Urban_data_in_QGIS_8WDrHxAKVuc_5724_7391.png FOSS4G_2021_-_3D_Urban_data_in_QGIS_8WDrHxAKVuc_7392_9731.png FOSS4G_2021_-_3D_Urban_data_in_QGIS_8WDrHxAKVuc_9732_10643.png FOSS4G_2021_-_3D_Urban_data_in_QGIS_8WDrHxAKVuc_10644_11195.png FOSS4G_2021_-_3D_Urban_data_in_QGIS_8WDrHxAKVuc_11196_12635.png FOSS4G_2021_-_3D_Urban_data_in_QGIS_8WDrHxAKVuc_12636_13991.png FOSS4G_2021_-_3D_Urban_data_in_QGIS_8WDrHxAKVuc_13992_16667.png FOSS4G_2021_-_3D_Urban_data_in_QGIS_8WDrHxAKVuc_16668_22247.png FOSS4G_2021_-_3D_Urban_data_in_QGIS_8WDrHxAKVuc_22248_22463.png FOSS4G_2021_-_3D_Urban_data_in_QGIS_8WDrHxAKVuc_22464_22511.png FOSS4G_2021_-_3D_Urban_data_in_QGIS_8WDrHxAKVuc_22512_22643.png FOSS4G_2021_-_3D_Urban_data_in_QGIS_8WDrHxAKVuc_22644_23267.png FOSS4G_2021_-_3D_Urban_data_in_QGIS_8WDrHxAKVuc_23268_27275.png FOSS4G_2021_-_3D_Urban_data_in_QGIS_8WDrHxAKVuc_27276_28739.png FOSS4G_2021_-_3D_Urban_data_in_QGIS_8WDrHxAKVuc_28740_34079.png FOSS4G_2021_-_3D_Urban_data_in_QGIS_8WDrHxAKVuc_34080_34979.png FOSS4G_2021_-_3D_Urban_data_in_QGIS_8WDrHxAKVuc_34980_35075.png FOSS4G_2021_-_3D_Urban_data_in_QGIS_8WDrHxAKVuc_35076_35135.png FOSS4G_2021_-_3D_Urban_data_in_QGIS_8WDrHxAKVuc_35136_35351.png FOSS4G_2021_-_3D_Urban_data_in_QGIS_8WDrHxAKVuc_35352_35483.png FOSS4G_2021_-_3D_Urban_data_in_QGIS_8WDrHxAKVuc_35484_36323.png FOSS4G_2021_-_3D_Urban_data_in_QGIS_8WDrHxAKVuc_36324_37859.png FOSS4G_2021_-_3D_Urban_data_in_QGIS_8WDrHxAKVuc_37860_37955.png FOSS4G_2021_-_3D_Urban_data_in_QGIS_8WDrHxAKVuc_37956_38363.png FOSS4G_2021_-_3D_Urban_data_in_QGIS_8WDrHxAKVuc_38364_43583.png FOSS4G_2021_-_3D_Urban_data_in_QGIS_8WDrHxAKVuc_43584_43928.png