A New Dimension To PostGIS : 3D
CC Attribution - ShareAlike 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 and non-commercial purpose as long as the work is attributed to the author in the manner specified by the author or licensor and the work or content is shared also in adapted form only under the conditions of this
Olivier, Courtin (Oslandia)
Hugo, Mercier (Oslandia)
Talking about 3D used to sound cool. Used to. But for real GIS use, we really need more than just playing with a globe. 3D in GIS becomes cool as soon as we have the ability to deal with full 3D spatial analysis. Just as we already have in 2D, we need functions like intersection, buffer, triangulation and more ... The GEOS library provides us 2D topological processing for years. The CGAL library could now also provide us some interesting additional 3D topological functions. As CGAL is not fully designed for GIS data models, we provide a library inbetween called SFCGAL, in charge of providing a Simple Feature API on top of CGAL. PostGIS 2.1 now allows to link PostGIS and (SF)CGAL, and already provides several exciting 3D functions (and more and more to come). This thrilling talk about PostGIS 3D will therefore focus on : - What kind of project / application needs 3D GIS analysis ? - What can we do right now with PostGIS 2.1 and (SF)CGAL ? - What we will be able to do soon with PostGIS 3D ? - Some tools used to view and manipulate 3D data (QGIS / WebGL based)
 Thanks. So this presentation is about post-JIS 3D and also quantum JIS 3D display solution. So the solution for us is based on European funding. The aim is to be able to have a solution for smart city, so displaying building and helping people in the city management to build a future nice city. So it's a three year funding plan related to a repeant funds. Right now we begin to play with 3D in post-JIS. So in the early early stage in 2007 with photo type and proof of concept related to 3D. But we really beginning to play with post-JIS 3D in 2010 with the first implementation of post-JIS 2.0. And at this point we were able to store and to manipulate 3D structure, so something like tin and polyurel surface directly into post-JIS. So at this point we have the ability to store, to load and to manipulate 3D data in post-JIS. And as you could see in the previous presentation, you could begin with this kind of feature in post-JIS 2.0, begin to have things like geological solution for 3D. This year in July there was the 2.1 post-JIS release and with the 2.1 you got a step further because we provide some spatial analysis for 3D. So it's not only storing and manipulation, it's also storing and manipulating the spatial analysis too. So all does it works. Obviously there is still post-JIS. Obviously there is still Geos to play with 2D spatial analysis computation. But there is something in more and there is something in more is the ability to link post-JIS with a Seagull. And what is Seagull is a well-known 3D manipulation library. And we made the link with something in the middle called SF Seagull, SF like a simple feature. And you already know simple feature for SQL. So the aim is to have something like a binding and also something like a model conversion because in post-JIS the model is simple feature and in Seagull the model is really focused on the 3D itself. So it's two kind of different model and we have the need to have something in the middle to perform the conversion. So right now we have the ability to link post-JIS with all the function of Seagull. But of course at the really moment we provide only a few function available from post-JIS to Seagull. So what do we provide right now in 2.1 post-JIS? We provide some function in post-JIS 2.1 and some of them are really really interesting and the black one. So something like 3D intersection, something like T-cellate, extrusion and also straight skeleton. And these ones are really interesting because no one else provides this kind of feature in post-JIS. We also provide for, so that's an example with T-cellate. So if you've got something like a volume as already beginning you could triangulate it even in 3D and have the 3D triangulation from this volume. The straight skeleton, if you have a 2D footprint of a building you could get, I don't know if it's really visible, but there is a skeleton of the building displaying and with the straight skeleton you could compute if you want. For example the roof of a building, at least a really simple roof from it. We also provide with SFC-Gal some functions that already were available with a GOS. So something like 2D intersect, 3D intersect distance or 3D distance, these functions were already provided by GOS but we also provided through SFC-Gal. So at the moment you have a choice. You have a choice to say, okay, I want a post-JIS backend with GOS or I want a post-JIS backend with SFC-Gal. And for the command function you have the ability to choose to say, okay, I want this library to do the job or the other ones. Right now related to SFC-Gal we perform all the tests in 2D that post-JIS GOS already did. So it's supposed to be as accurate and as robust as the GOS do for the 2D. We pass also all the garden tests to check that everything will not crash and we also deal with invalidity geometry in 3D. But it's a fact. It's yet a really new library so we have not yet a wide user community able to say, okay, I've tried it in the exotic configuration or in the exotic use case and at this point it doesn't work as expected. So it's up to you. We are really waiting for people who use it and to say, okay, I open a ticket because something. About the performances right now, if we compare GOS and SFC-Gal, obviously only for the 2D, performances are quite the same, quite similar in fact. But the point is that in SFC-Gal, because in C-Gal, we gain the arbitrary precision that is not available in GOS. So even if we are quite similar in performances, there is a gain because we are more accurate in fact. On the other hand, 3D computation itself, a full take time. So be careful. The 2D part is as fast as GOS but the 3D part takes time. A few words about standardization. There is right now two new standards that are not yet voted in OGC. They will be voted in few weeks or few months related to 3D. So we are now following this standardization process to be sure that all we already done will be compliant with the new coming standardization process in OGC and in ISO. At this point, it was in July. We are really happy because we have something working for GIS but there is something we are missing is the ability to run the ring in 3D and to see what we already did. So at this point, we choose to launch a new project related to our common tool to display GIS and so quantum GIS. And there is a need to a new plugin able to display 3D things. The name in Greek is ORO. So the meaning is to see in Greek. To be able to see something in 3D. So the run ring part is based on openGL, open send graph, obviously QGIS and in the middle there is a scene layer called ORO and the aim of this plugin is to make the link between open send graph for GIS and QGIS. So if you see something that we could do with all this stuff, it's quite the same with the following video that we did in the workshop at the beginning of the week for those who performed the 3D workshop. So that's an example with QGIS in 2D with an elevation model. So it's quite classical. But here there is an ORO plugin with a 3D run ring of the same data. So once you zoom in, you zoom in also in the 3D display and you could see over there that you have the ability to change the angle and to see better the elevation model. At this point, we want to add a new 2D building footprint. So on the same kind of center area, we load the building in 2D and obviously here on the 3D run ring. At this point, it's only 2D data but the 2D data is put on the elevation model. And that's becoming more interesting because we have the ability to extrude the data and to say, okay, we have at the beginning only flat 2D building footprint but we'll choose right now to extrude the data, the 2D data with the height of each building and to create a new geometry column called LOD2 in the database and to display it in 2D but more in 3D. And at this point, it's not really perfect because our LOD2 data are put at this ready moment on the C level. So we are able to see each building but at the 0 level. So we need to compute a better evaluation for each building and all we do that just because we put already the elevation model also in per GIS roster. So we have the ability to compute roster and vector for each building and to say, okay, this building is at this height and to translate each building to right now compute them and be able to render both the elevation model and the building in 2D and in 3D. And if we focus on a place here with an ill on the city, you can see that each building fit quite well on the elevation model. So we also have a synchronization on the symbology color. So each time you choose another color, it will be synchronized both in 2D and 3D. And if we zoom out, you can see there that there is a tile handling system able to load data by tile to avoid to wait too long, in fact. And now we begin to something in more. We begin really to play with the 3D attack to perform some 3D special analysis. So in green, there is a layer 2D layer related to environmental data. So there is a river and parks in the same green. And if we focus here on this place with the two green parks, the question is if we took some flying insects all far could they fly around the park. So we make a request with a buffer and with an extrusion around each park. And we get in 2D and in 3D the flying area available for these insects. And the next question is, oh, is there any chance that these two parks leading to two flying zone could intersect in 3D? So we launch a new query asking, is there a 3D intersection between these two different volume? And we launch it from the manager and we ask SSCGAL and CGAL, is there a 3D intersection? And if yes, create a new table with the result. So the computation, as I said, took several seconds. So it's something like 30 seconds in a basic laptop to perform the 3D intersection. And at the end, we'll have a new table with the result. So it did. We have the new table and we just have to refresh to display it. We display it in 2D with a lot of triangles and here in 3D as a new volume. So you got the 3D intersection as a new volume. Another point, it's just some kind of 3D rendering trick is to say, OK, we've got another dimension, an extra dimension. So we can use it to display some extra information about our data. So in the data, there is some points related to by station available in the city to took a fully bike. So we use here the bar to wonder how much bike are available in the city. So if a bar is high, there is a lot of bike available. So if we look another once again to the rule architecture, we've got so on the server part, port GIS, SSCGAL as a new layer binding to SSCGAL. Obviously, the old GIS will still remain. Quantum GIS, ORO, and obviously all the library beneath ORO, so called opens and graph and opens GL. The blue ones are the ones where there is a need to continue to improve again all these ones. We don't have to deal that much with them because they are quite well known and so on. You can find each of the four I'm just talk about. So pod GIS, SSCGAL, ORO, QGIS. For both POSGIS and SSCGAL, we use the latest table version. And for ORO and QGIS, we use the latest trunk version. So what is the next step we have in mind? Next step we have in mind is to increase and enhance the number of functions available through SSCGAL. So to have something like 3D union, 3D relate, 3D simplify, things like that. The other point is to improve and enhance again the rendering quality. So we have something we know we can do better and to beautify again the 3D rendering quality. And we know also that we are able to play also with WebGL. So right now we have QGIS, 3D, rendering, but we want also to explore solution based on WebGL, so in browser. If you want to play, you have the presentation already available right now on online. And you could find the workshop quite related to the video I've just presented with all the online too. So if you want to do it by yourself, step by step it's possible. And as we provide the first 4G workshop in the beginning of the week, we also have the full environment in the virtual box available. So if something want it, we can provide it. So 6GB virtual box, but it's possible to let you copy it if you want to. And that's it. Thank you Olivier. Any questions? You mentioned two stone out the way you see it working on. This one is a well-known standard related to topological model. So it's something really abstract. And the new version, the new coming version is related to adding the 3D in more because the old one was complete, but only related to 2D. And this one is something clever. It's a one to unify simple feature for SQL, EZO SQLMM, GML in the same kind of standard based on profile. So we will have only one model, but with several profiles, with some kind of unification, with several kind of models, we have to deal with each time we want to play with geometry in special databases, in fact. So SQL in itself is based on C++ language. It's a library developed by several universities and also by one company. So because there are several universities, sometimes there is several ways to do it inside the SQL. So it's not something really unified. It's there is some different model inside SQL. In fact, for us, the main trick to do the binding was more to consider the conversion between the post-GIS SF for SQL model and the SQL 3D model. So it's more related to the conversion and to the test. Test is really time consuming for us to be sure that it will work nicely and with an error in the whole case we have to deal with. In fact, if we look in the workshop, we could deal on a lot of use cases only with 2D index because we have to deal with 3D index only if there is several 3D objects but a problem, for example, the 3D geological use case we just seen before is a typically use case where a 3D index is meaningful. But for a city, for example, a 3D index could be enough. But in post-GIS, too, there is also a 3D dimensional index available. So if you want it, you have it. Any more questions? We have plenty of time. On the video, in fact, the rest of the parts could be quite big. In fact, I think that at least a big city could fit. As it was our use case, we are happy with that. We play with a quite common laptop. It's not dedicated 3D hardware or something like that to play with. We just need a quite decent hardware and a 3D acceleration on it and that's it. On our use case, we are also able to run ring on the whole city building of quite big city. You haven't tested this kind of case that you have a global elevation model and you need only one small portion of that because you cannot render full country, for example. At this moment, it's not our use case. We didn't try it. We didn't know if it worked or not. 3D visualizer for quantum GIS, is it capable to texturize, to put textures on? At this point, we only handle plain color and transparency and color. I have to put a word on it. This layer, OHAO, is a quite new software. You have to figure that OHAO is still something in between an alpha and a beta. It's a brand new software and at this moment, you only handle plain color, transparency and not yet texture. It will surely come but right now, not yet. How does your project actually relate to the implementation of city GML? In fact, if you play the workshop, you will see that we deal with two LOD, so LOD 1 and LOD 2. The model is already able to fit city GML. There is also other projects able to take some city GML file and to import them in post-GIS. If you want to, there is a way to use city GML data and city GML model inside post-GIS and to begin to play with. What is your license? Because you go and see if it's a restrictive or commercial project. We begin to sing holy to SFCGAL. At the moment, the CGL change is a license and allow also to have a GPL license. SFCGAL 2 is also available as a GPL and SFCGAL 2 is as GPL. I think it's a GPL 3 but not to be confirmed. Any more questions? If not, then thank you all of you.
 Thanks. So this presentation is about post-JIS 3D and also quantum JIS 3D display solution.  So the solution for us is based on European funding. The aim is to be able to have a solution  for smart city, so displaying building and helping people in the city management to build  a future nice city. So it's a three year funding plan related to a repeant funds.  Right now we begin to play with 3D in post-JIS. So in the early early stage in 2007 with photo  type and proof of concept related to 3D. But we really beginning to play with post-JIS 3D  in 2010 with the first implementation of post-JIS 2.0. And at this point we were able to store  and to manipulate 3D structure, so something like tin and polyurel surface directly into  post-JIS. So at this point we have the ability to store, to load and to manipulate 3D data  in post-JIS. And as you could see in the previous presentation, you could begin with this kind  of feature in post-JIS 2.0, begin to have things like geological solution for 3D. This  year in July there was the 2.1 post-JIS release and with the 2.1 you got a step further because  we provide some spatial analysis for 3D. So it's not only storing and manipulation, it's  also storing and manipulating the spatial analysis too. So all does it works. Obviously  there is still post-JIS. Obviously there is still Geos to play with 2D spatial analysis  computation. But there is something in more and there is something in more is the ability  to link post-JIS with a Seagull. And what is Seagull is a well-known 3D manipulation  library. And we made the link with something in the middle called SF Seagull, SF like a  simple feature. And you already know simple feature for SQL. So the aim is to have something  like a binding and also something like a model conversion because in post-JIS the model is  simple feature and in Seagull the model is really focused on the 3D itself. So it's two  kind of different model and we have the need to have something in the middle to perform  the conversion. So right now we have the ability to link post-JIS with all the function of  Seagull. But of course at the really moment we provide only a few function available from  post-JIS to Seagull. So what do we provide right now in 2.1 post-JIS? We provide some  function in post-JIS 2.1 and some of them are really really interesting and the black  one. So something like 3D intersection, something like T-cellate, extrusion and also straight  skeleton. And these ones are really interesting because no one else provides this kind of  feature in post-JIS. We also provide for, so that's an example with T-cellate. So if  you've got something like a volume as already beginning you could triangulate it even in  3D and have the 3D triangulation from this volume. The straight skeleton, if you have  a 2D footprint of a building you could get, I don't know if it's really visible, but there  is a skeleton of the building displaying and with the straight skeleton you could compute  if you want. For example the roof of a building, at least a really simple roof from it. We  also provide with SFC-Gal some functions that already were available with a GOS. So something  like 2D intersect, 3D intersect distance or 3D distance, these functions were already  provided by GOS but we also provided through SFC-Gal. So at the moment you have a choice.  You have a choice to say, okay, I want a post-JIS backend with GOS or I want a post-JIS backend  with SFC-Gal. And for the command function you have the ability to choose to say, okay,  I want this library to do the job or the other ones. Right now related to SFC-Gal we perform  all the tests in 2D that post-JIS GOS already did. So it's supposed to be as accurate and  as robust as the GOS do for the 2D. We pass also all the garden tests to check that everything  will not crash and we also deal with invalidity geometry in 3D. But it's a fact. It's yet  a really new library so we have not yet a wide user community able to say, okay, I've  tried it in the exotic configuration or in the exotic use case and at this point it doesn't  work as expected. So it's up to you. We are really waiting for people who use it and to  say, okay, I open a ticket because something. About the performances right now, if we compare  GOS and SFC-Gal, obviously only for the 2D, performances are quite the same, quite similar  in fact. But the point is that in SFC-Gal, because in C-Gal, we gain the arbitrary precision  that is not available in GOS. So even if we are quite similar in performances, there is  a gain because we are more accurate in fact. On the other hand, 3D computation itself, a  full take time. So be careful. The 2D part is as fast as GOS but the 3D part takes time.  A few words about standardization. There is right now two new standards that are not yet  voted in OGC. They will be voted in few weeks or few months related to 3D. So we are now  following this standardization process to be sure that all we already done will be compliant  with the new coming standardization process in OGC and in ISO. At this point, it was in  July. We are really happy because we have something working for GIS but there is something  we are missing is the ability to run the ring in 3D and to see what we already did. So at  this point, we choose to launch a new project related to our common tool to display GIS  and so quantum GIS. And there is a need to a new plugin able to display 3D things. The  name in Greek is ORO. So the meaning is to see in Greek. To be able to see something  in 3D. So the run ring part is based on openGL, open send graph, obviously QGIS and in the  middle there is a scene layer called ORO and the aim of this plugin is to make the link  between open send graph for GIS and QGIS. So if you see something that we could do with  all this stuff, it's quite the same with the following video that we did in the workshop  at the beginning of the week for those who performed the 3D workshop. So that's an example  with QGIS in 2D with an elevation model. So it's quite classical. But here there is an  ORO plugin with a 3D run ring of the same data. So once you zoom in, you zoom in also  in the 3D display and you could see over there that you have the ability to change the angle  and to see better the elevation model. At this point, we want to add a new 2D building  footprint. So on the same kind of center area, we load the building in 2D and obviously  here on the 3D run ring. At this point, it's only 2D data but the 2D data is put on the  elevation model. And that's becoming more interesting because we have the ability to  extrude the data and to say, okay, we have at the beginning only flat 2D building footprint  but we'll choose right now to extrude the data, the 2D data with the height of each  building and to create a new geometry column called LOD2 in the database and to display  it in 2D but more in 3D. And at this point, it's not really perfect because our LOD2 data  are put at this ready moment on the C level. So we are able to see each building but at  the 0 level. So we need to compute a better evaluation for each building and all we do  that just because we put already the elevation model also in per GIS roster. So we have the  ability to compute roster and vector for each building and to say, okay, this building is  at this height and to translate each building to right now compute them and be able to render  both the elevation model and the building in 2D and in 3D. And if we focus on a place  here with an ill on the city, you can see that each building fit quite well on the elevation  model. So we also have a synchronization on the symbology color. So each time you choose  another color, it will be synchronized both in 2D and 3D. And if we zoom out, you can  see there that there is a tile handling system able to load data by tile to avoid to wait  too long, in fact. And now we begin to something in more. We begin really to play with the  3D attack to perform some 3D special analysis. So in green, there is a layer 2D layer related  to environmental data. So there is a river and parks in the same green. And if we focus  here on this place with the two green parks, the question is if we took some flying insects  all far could they fly around the park. So we make a request with a buffer and with an  extrusion around each park. And we get in 2D and in 3D the flying area available for these  insects. And the next question is, oh, is there any chance that these two parks leading  to two flying zone could intersect in 3D? So we launch a new query asking, is there  a 3D intersection between these two different volume? And we launch it from the manager  and we ask SSCGAL and CGAL, is there a 3D intersection? And if yes, create a new table  with the result. So the computation, as I said, took several seconds. So it's something  like 30 seconds in a basic laptop to perform the 3D intersection. And at the end, we'll  have a new table with the result. So it did. We have the new table and we just have to  refresh to display it. We display it in 2D with a lot of triangles and here in 3D as  a new volume. So you got the 3D intersection as a new volume. Another point, it's just  some kind of 3D rendering trick is to say, OK, we've got another dimension, an extra  dimension. So we can use it to display some extra information about our data. So in the  data, there is some points related to by station available in the city to took a fully bike.  So we use here the bar to wonder how much bike are available in the city. So if a bar  is high, there is a lot of bike available. So if we look another once again to the rule  architecture, we've got so on the server part, port GIS, SSCGAL as a new layer binding  to SSCGAL. Obviously, the old GIS will still remain. Quantum GIS, ORO, and obviously all  the library beneath ORO, so called opens and graph and opens GL. The blue ones are the ones  where there is a need to continue to improve again all these ones. We don't have to deal  that much with them because they are quite well known and so on. You can find each of  the four I'm just talk about. So pod GIS, SSCGAL, ORO, QGIS. For both POSGIS and SSCGAL,  we use the latest table version. And for ORO and QGIS, we use the latest trunk version.  So what is the next step we have in mind? Next step we have in mind is to increase and  enhance the number of functions available through SSCGAL. So to have something like 3D union,  3D relate, 3D simplify, things like that. The other point is to improve and enhance again  the rendering quality. So we have something we know we can do better and to beautify again  the 3D rendering quality. And we know also that we are able to play also with WebGL.  So right now we have QGIS, 3D, rendering, but we want also to explore solution based  on WebGL, so in browser. If you want to play, you have the presentation already available  right now on online. And you could find the workshop quite related to the video I've just  presented with all the online too. So if you want to do it by yourself, step by step it's  possible. And as we provide the first 4G workshop in the beginning of the week, we also have  the full environment in the virtual box available. So if something want it, we can provide it.  So 6GB virtual box, but it's possible to let you copy it if you want to. And that's it.  Thank you Olivier. Any questions? You mentioned two stone out the way you see it working on.  This one is a well-known standard related to topological model. So it's something really  abstract. And the new version, the new coming version is related to adding the 3D in more  because the old one was complete, but only related to 2D. And this one is something clever.  It's a one to unify simple feature for SQL, EZO SQLMM, GML in the same kind of standard  based on profile. So we will have only one model, but with several profiles, with some  kind of unification, with several kind of models, we have to deal with each time we want to  play with geometry in special databases, in fact. So SQL in itself is based on C++ language.  It's a library developed by several universities and also by one company. So because there  are several universities, sometimes there is several ways to do it inside the SQL. So  it's not something really unified. It's there is some different model inside SQL. In fact,  for us, the main trick to do the binding was more to consider the conversion between the  post-GIS SF for SQL model and the SQL 3D model. So it's more related to the conversion and  to the test. Test is really time consuming for us to be sure that it will work nicely  and with an error in the whole case we have to deal with.  In fact, if we look in the workshop, we could deal on a lot of use cases only with 2D index  because we have to deal with 3D index only if there is several 3D objects but a problem,  for example, the 3D geological use case we just seen before is a typically use case where  a 3D index is meaningful. But for a city, for example, a 3D index could be enough. But  in post-GIS, too, there is also a 3D dimensional index available. So if you want it, you have  it. Any more questions? We have plenty of time.  On the video, in fact, the rest of the parts could be quite big. In fact, I think that  at least a big city could fit. As it was our use case, we are happy with that. We play  with a quite common laptop. It's not dedicated 3D hardware or something like that to play  with. We just need a quite decent hardware and a 3D acceleration on it and that's it.  On our use case, we are also able to run ring on the whole city building of quite big city.  You haven't tested this kind of case that you have a global elevation model and you  need only one small portion of that because you cannot render full country, for example.  At this moment, it's not our use case. We didn't try it. We didn't know if it worked  or not. 3D visualizer for quantum GIS, is it capable  to texturize, to put textures on? At this point, we only handle plain color  and transparency and color. I have to put a word on it. This layer, OHAO, is a quite  new software. You have to figure that OHAO is still something in between an alpha and  a beta. It's a brand new software and at this moment, you only handle plain color, transparency  and not yet texture. It will surely come but right now, not yet.  How does your project actually relate to the implementation of city GML?  In fact, if you play the workshop, you will see that we deal with two LOD, so LOD 1 and  LOD 2. The model is already able to fit city GML. There is also other projects able to  take some city GML file and to import them in post-GIS. If you want to, there is a way  to use city GML data and city GML model inside post-GIS and to begin to play with.  What is your license? Because you go and see if it's a restrictive or commercial project.  We begin to sing holy to SFCGAL. At the moment, the CGL change is a license and allow also  to have a GPL license. SFCGAL 2 is also available as a GPL and SFCGAL 2 is as GPL. I think it's  a GPL 3 but not to be confirmed. Any more questions? If not, then thank you  all of you.
A_New_Dimension_To_PostGIS___3D__480p__0_3215.png A_New_Dimension_To_PostGIS___3D__480p__3216_3335.png A_New_Dimension_To_PostGIS___3D__480p__3336_8891.png A_New_Dimension_To_PostGIS___3D__480p__8892_10823.png A_New_Dimension_To_PostGIS___3D__480p__10824_12203.png A_New_Dimension_To_PostGIS___3D__480p__12204_12455.png A_New_Dimension_To_PostGIS___3D__480p__12456_13427.png A_New_Dimension_To_PostGIS___3D__480p__13428_13523.png A_New_Dimension_To_PostGIS___3D__480p__13524_13691.png A_New_Dimension_To_PostGIS___3D__480p__13692_17807.png A_New_Dimension_To_PostGIS___3D__480p__17808_19055.png A_New_Dimension_To_PostGIS___3D__480p__19056_19271.png A_New_Dimension_To_PostGIS___3D__480p__19272_24707.png A_New_Dimension_To_PostGIS___3D__480p__24708_27071.png A_New_Dimension_To_PostGIS___3D__480p__27072_30503.png A_New_Dimension_To_PostGIS___3D__480p__30504_30647.png A_New_Dimension_To_PostGIS___3D__480p__30648_31823.png A_New_Dimension_To_PostGIS___3D__480p__31824_36419.png A_New_Dimension_To_PostGIS___3D__480p__36420_42123.png