Calculate volume of space defined by multiple overlapping 3D polygonsPostGIS ST_ConvexHull for cube corners...

How exactly does Hawking radiation decrease the mass of black holes?

Rivers without rain

How do I deal with a coworker that keeps asking to make small superficial changes to a report, and it is seriously triggering my anxiety?

What does the integral of a function times a function of a random variable represent, conceptually?

What happens in the secondary winding if there's no spark plug connected?

What is the smallest unit of eos?

Re-entry to Germany after vacation using blue card

Is the claim "Employers won't employ people with no 'social media presence'" realistic?

"Whatever a Russian does, they end up making the Kalashnikov gun"? Are there any similar proverbs in English?

Is it idiomatic to construct against `this`

How can I display numbers like 2 over 2, but not have them as fractions?

Dynamic SOQL query relationship with field visibility for Users

Why does Mind Blank stop the Feeblemind spell?

Coordinate my way to the name of the (video) game

Why didn't the Space Shuttle bounce back into space as many times as possible so as to lose a lot of kinetic energy up there?

"Hidden" theta-term in Hamiltonian formulation of Yang-Mills theory

Why was the Spitfire's elliptical wing almost uncopied by other aircraft of World War 2?

What makes accurate emulation of old systems a difficult task?

Constructions of PRF (Pseudo Random Function)

Extension of 2-adic valuation to the real numbers

Like totally amazing interchangeable sister outfits II: The Revenge

How to not starve gigantic beasts

How to have a sharp product image?

How to denote matrix elements succinctly?



Calculate volume of space defined by multiple overlapping 3D polygons


PostGIS ST_ConvexHull for cube corners not as expectedGRASS v.hull for many point sets






.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ margin-bottom:0;
}







0















I have thousands of 3D polygons scattered in space but they mostly overlap with many of their neighbors in big extent. Is there any way how to compute volume they define effectively? I would love to have precise volume, but some relatively good approximation will do too.



My solutions so far:




  1. v.patch() (GRASS) - so far, I was able to just patch faces and kernels, but it does not form closed 3D polygon after looong computation.


  2. ST_3DUnion() (Postgis) - unfortunately, the function is not an aggregate function (it accepts only two simple arguments). I have wrote function calling ST_3DUnion iteratively, unioning polygons one by one. But obviously, computation is slow and basically stops on polygon 100.


  3. substracting polygons from master volume (Postgis) - creating one big polygon from bbox of all my polygons and then using ST_3DDifference while iteratively substracting every single polygon. What I am left with is big polygon with a hole with volume of my interest. Never tried - probably same issue as 2).



  4. overlap with 3D point grid (Postgis) - I could create 3D points not far away each other in such way they form regular grid which covers bbox of all polygons. Finally, I would create spatial index on this layer and count points falling inside any polygon (operator &&& and ST_3DIntesects() could help a lot). But it is extremely memory demanding and gives "only" estimation of the volume. Kinda rasterization by 3D raster.


Obviously 1), 2) and 3) are suffering from exponential increase of faces/points after processing several polygons. Maybe, there is a way which does not require so expensive operations? Especially when I am interested only in volume.



Just to explain, I am trying to implement relatively simple Local Convex Hull algorithm in 3D. I have solved 3D hulling in GRASS (see my previous question) since ST_ConvexHull() does not work in 3D.



Any brilliant ideas? Thank you









share





























    0















    I have thousands of 3D polygons scattered in space but they mostly overlap with many of their neighbors in big extent. Is there any way how to compute volume they define effectively? I would love to have precise volume, but some relatively good approximation will do too.



    My solutions so far:




    1. v.patch() (GRASS) - so far, I was able to just patch faces and kernels, but it does not form closed 3D polygon after looong computation.


    2. ST_3DUnion() (Postgis) - unfortunately, the function is not an aggregate function (it accepts only two simple arguments). I have wrote function calling ST_3DUnion iteratively, unioning polygons one by one. But obviously, computation is slow and basically stops on polygon 100.


    3. substracting polygons from master volume (Postgis) - creating one big polygon from bbox of all my polygons and then using ST_3DDifference while iteratively substracting every single polygon. What I am left with is big polygon with a hole with volume of my interest. Never tried - probably same issue as 2).



    4. overlap with 3D point grid (Postgis) - I could create 3D points not far away each other in such way they form regular grid which covers bbox of all polygons. Finally, I would create spatial index on this layer and count points falling inside any polygon (operator &&& and ST_3DIntesects() could help a lot). But it is extremely memory demanding and gives "only" estimation of the volume. Kinda rasterization by 3D raster.


    Obviously 1), 2) and 3) are suffering from exponential increase of faces/points after processing several polygons. Maybe, there is a way which does not require so expensive operations? Especially when I am interested only in volume.



    Just to explain, I am trying to implement relatively simple Local Convex Hull algorithm in 3D. I have solved 3D hulling in GRASS (see my previous question) since ST_ConvexHull() does not work in 3D.



    Any brilliant ideas? Thank you









    share

























      0












      0








      0








      I have thousands of 3D polygons scattered in space but they mostly overlap with many of their neighbors in big extent. Is there any way how to compute volume they define effectively? I would love to have precise volume, but some relatively good approximation will do too.



      My solutions so far:




      1. v.patch() (GRASS) - so far, I was able to just patch faces and kernels, but it does not form closed 3D polygon after looong computation.


      2. ST_3DUnion() (Postgis) - unfortunately, the function is not an aggregate function (it accepts only two simple arguments). I have wrote function calling ST_3DUnion iteratively, unioning polygons one by one. But obviously, computation is slow and basically stops on polygon 100.


      3. substracting polygons from master volume (Postgis) - creating one big polygon from bbox of all my polygons and then using ST_3DDifference while iteratively substracting every single polygon. What I am left with is big polygon with a hole with volume of my interest. Never tried - probably same issue as 2).



      4. overlap with 3D point grid (Postgis) - I could create 3D points not far away each other in such way they form regular grid which covers bbox of all polygons. Finally, I would create spatial index on this layer and count points falling inside any polygon (operator &&& and ST_3DIntesects() could help a lot). But it is extremely memory demanding and gives "only" estimation of the volume. Kinda rasterization by 3D raster.


      Obviously 1), 2) and 3) are suffering from exponential increase of faces/points after processing several polygons. Maybe, there is a way which does not require so expensive operations? Especially when I am interested only in volume.



      Just to explain, I am trying to implement relatively simple Local Convex Hull algorithm in 3D. I have solved 3D hulling in GRASS (see my previous question) since ST_ConvexHull() does not work in 3D.



      Any brilliant ideas? Thank you









      share














      I have thousands of 3D polygons scattered in space but they mostly overlap with many of their neighbors in big extent. Is there any way how to compute volume they define effectively? I would love to have precise volume, but some relatively good approximation will do too.



      My solutions so far:




      1. v.patch() (GRASS) - so far, I was able to just patch faces and kernels, but it does not form closed 3D polygon after looong computation.


      2. ST_3DUnion() (Postgis) - unfortunately, the function is not an aggregate function (it accepts only two simple arguments). I have wrote function calling ST_3DUnion iteratively, unioning polygons one by one. But obviously, computation is slow and basically stops on polygon 100.


      3. substracting polygons from master volume (Postgis) - creating one big polygon from bbox of all my polygons and then using ST_3DDifference while iteratively substracting every single polygon. What I am left with is big polygon with a hole with volume of my interest. Never tried - probably same issue as 2).



      4. overlap with 3D point grid (Postgis) - I could create 3D points not far away each other in such way they form regular grid which covers bbox of all polygons. Finally, I would create spatial index on this layer and count points falling inside any polygon (operator &&& and ST_3DIntesects() could help a lot). But it is extremely memory demanding and gives "only" estimation of the volume. Kinda rasterization by 3D raster.


      Obviously 1), 2) and 3) are suffering from exponential increase of faces/points after processing several polygons. Maybe, there is a way which does not require so expensive operations? Especially when I am interested only in volume.



      Just to explain, I am trying to implement relatively simple Local Convex Hull algorithm in 3D. I have solved 3D hulling in GRASS (see my previous question) since ST_ConvexHull() does not work in 3D.



      Any brilliant ideas? Thank you







      postgis grass 3d spatial-index volume





      share












      share










      share



      share










      asked 1 min ago









      Dead VilDead Vil

      32




      32






















          0






          active

          oldest

          votes












          Your Answer








          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "79"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: false,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: null,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });














          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fgis.stackexchange.com%2fquestions%2f321013%2fcalculate-volume-of-space-defined-by-multiple-overlapping-3d-polygons%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          0






          active

          oldest

          votes








          0






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes
















          draft saved

          draft discarded




















































          Thanks for contributing an answer to Geographic Information Systems Stack Exchange!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fgis.stackexchange.com%2fquestions%2f321013%2fcalculate-volume-of-space-defined-by-multiple-overlapping-3d-polygons%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          (145452) 2005 RN43 Классификация | Примечания | Ссылки |...

          Щит и меч (фильм) Содержание Названия серий | Сюжет |...

          Энтрерриос (город) Содержание История | Географическое...