Maybe ST_X, ST_Y and ST_Z ?
 
Hugues.
 

________________________________

De : postgis-users-boun...@postgis.refractions.net 
[mailto:postgis-users-boun...@postgis.refractions.net] De la part de Ed Linde
Envoyé : mardi 30 octobre 2012 11:14
À : PostGIS Users Discussion
Objet : Re: [postgis-users] Problem with 3D polygon intersection test


Hi Nicolas,
Not quite sure what to make of the output from ST_DumpPoints, how do I 
transform it to just raw x,y,z coordinates?

 select st_astext(geomtext) from small_tris where id=0;
                       st_astext                       
-------------------------------------------------------
 POLYGON Z ((10 10 805,20 10 809,10 20 814,10 10 805))
(1 row)

bounds=#  select id, st_dumpPoints( geomtext ) from small_tris where id=0;
 id |                            st_dumppoints                             
----+----------------------------------------------------------------------
  0 | ("{1,1}",0101000080000000000000244000000000000024400000000000288940)
  0 | ("{1,2}",0101000080000000000000344000000000000024400000000000488940)
  0 | ("{1,3}",0101000080000000000000244000000000000034400000000000708940)
  0 | ("{1,4}",0101000080000000000000244000000000000024400000000000288940)
(4 rows)


Thanks,Ed



On Tue, Oct 30, 2012 at 11:05 AM, Ed Linde <edoli...@gmail.com> wrote:


        Ok thanks! 


        On Tue, Oct 30, 2012 at 11:04 AM, Nicolas Ribot 
<nicolas.ri...@gmail.com> wrote:
        

                st_dumpRings will return the rings (closed linestrings) 
composing the polygon (exterior first, then interiors) 
                and st_dumpPoints will return all the points forming the rings, 
in the right order.
                

                Nicolas 


                On 30 October 2012 10:56, Ed Linde <edoli...@gmail.com> wrote:
                

                        Ok, for a polygon, is there a good postgis function 
that can return the edges to me in the 
                        right sequence? Or at least the points that constitute 
the polygon in the right order, so I can
                        generate the edges in a script?
                        
                        Thanks,
                        Ed 


                        On Tue, Oct 30, 2012 at 10:46 AM, Ed Linde 
<edoli...@gmail.com> wrote:
                        

                                Ah drat! Ok then I have to basically do edge 
intersection tests by myself.  
                                Ah well. bad news! :( 


                                On Tue, Oct 30, 2012 at 10:44 AM, Nicolas Ribot 
<nicolas.ri...@gmail.com> wrote:
                                

                                        Hi, 

                                        st_intersection is only suitable for 2D 
operations. Third dimension is not taken into account.

                                        Nicolas 

                                        On 30 October 2012 09:44, Ed Linde 
<edoli...@gmail.com> wrote:
                                        

                                        Hi All,
                                        Is there a simpler test I can do? I am 
quite sure that I am probably not using the right 
                                        function in my SQL, or not doing the 
intersection test correctly. Is there any simpler 
                                        way to test this 3D intersection? Am 
waiting on the postgis gurus to come along and
                                        give me some ideas, coz I am at my wits 
ends on this one! :) The polygons look good
                                        to me when I visualize them, but don't 
get how all triangles are found as intersecting?
                                        Anyway will wait.
                                        
                                        Cheers,
                                        Ed
                                        
                                        
                                        On Tue, Oct 30, 2012 at 9:00 AM, Ed 
Linde <edoli...@gmail.com> wrote:
                                        

                                        Hi All,
                                        I am having some troubles getting the 
ST_Intersect function to work with 3D polygons. 
                                        I have a table to hold triangles as 
polygons in "small_tris"
                                        Another table for holding the polygonal 
faces of a 3D voronoi diagram in "vfaces"
                                        So now I am trying to do an 
intersection between the triangles and the voronoi faces
                                        to get the triangles that intersect 
with the faces. And it seems that *ALL* triangles 
                                        are intersecting. I have attached a PDF 
where I have plotted the triangles and the 
                                        voronoi cells. so the box around in red 
and blue with a major face going through is 
                                        the voronoi diagram. The Voronoi 
partition in 3D is shown at the bottom too for clarity
                                        Can someone please help and let me know 
what am I doing wrong here?
                                        Is the select assuming something? So 
the polygons are flat and the intersections 
                                        should just be lines or points. I am 
under some pressure to get this to work, so if
                                        anyone needs more information to help, 
the please let me know! :)  
                                        
                                        Cheers,
                                        Ed
                                        
                                        -- TABLE SCHEMAS
                                        bounds=# \d vfaces;
                                              Table "public.vfaces"
                                          Column  |   Type   | Modifiers 
                                        ----------+----------+-----------
                                         gen_id   | integer  | 
                                         geomtext | geometry | 
                                        
                                        bounds=# \d small_tris;
                                            Table "public.small_tris"
                                          Column  |   Type   | Modifiers 
                                        ----------+----------+-----------
                                         id       | integer  | not null
                                         v0       | integer  | 
                                         v1       | integer  | 
                                         v2       | integer  | 
                                         geomtext | geometry | 
                                        Indexes:
                                            "small_tris_pkey" PRIMARY KEY, 
btree (id)
                                            "small_idx" gist (geomtext)
                                        
                                        
                                        
                                        -- TABLE CONTENT
                                        bounds=# select id, st_astext( geomtext 
) from small_tris;
                                         id |                       st_astext   
                    
                                        
----+-------------------------------------------------------
                                          0 | POLYGON Z ((10 10 805,20 10 
809,10 20 814,10 10 805))
                                          1 | POLYGON Z ((10 20 814,20 10 
809,20 20 819,10 20 814))
                                          2 | POLYGON Z ((20 20 819,30 10 
809,30 20 812,20 20 819))
                                          3 | POLYGON Z ((30 10 809,20 20 
819,20 10 809,30 10 809))
                                          4 | POLYGON Z ((30 20 812,30 10 
809,40 10 826,30 20 812))
                                          5 | POLYGON Z ((20 20 819,30 20 
812,20 30 827,20 20 819))
                                          6 | POLYGON Z ((10 20 814,20 20 
819,20 30 827,10 20 814))
                                          7 | POLYGON Z ((10 40 805,10 30 
814,20 30 827,10 40 805))
                                          8 | POLYGON Z ((10 50 804,10 40 
805,20 40 807,10 50 804))
                                          9 | POLYGON Z ((20 30 827,20 40 
807,10 40 805,20 30 827))
                                         10 | POLYGON Z ((30 30 817,20 40 
807,20 30 827,30 30 817))
                                         11 | POLYGON Z ((30 40 816,20 50 
809,20 40 807,30 40 816))
                                         12 | POLYGON Z ((20 40 807,20 50 
809,10 50 804,20 40 807))
                                         13 | POLYGON Z ((10 30 814,10 20 
814,20 30 827,10 30 814))
                                         14 | POLYGON Z ((30 30 817,20 30 
827,30 20 812,30 30 817))
                                         15 | POLYGON Z ((30 20 812,40 20 
823,30 30 817,30 20 812))
                                         16 | POLYGON Z ((40 20 823,30 20 
812,40 10 826,40 20 823))
                                         17 | POLYGON Z ((40 20 823,40 10 
826,50 10 803,40 20 823))
                                         18 | POLYGON Z ((30 30 817,40 20 
823,40 30 814,30 30 817))
                                         19 | POLYGON Z ((40 20 823,50 20 
808,40 30 814,40 20 823))
                                         20 | POLYGON Z ((50 20 808,40 20 
823,50 10 803,50 20 808))
                                         21 | POLYGON Z ((40 30 814,50 20 
808,50 30 816,40 30 814))
                                         22 | POLYGON Z ((30 30 817,40 30 
814,40 40 800,30 30 817))
                                         23 | POLYGON Z ((30 40 816,40 40 
800,30 50 813,30 40 816))
                                         24 | POLYGON Z ((30 40 816,30 30 
817,40 40 800,30 40 816))
                                         25 | POLYGON Z ((30 50 813,40 40 
800,40 50 817,30 50 813))
                                         26 | POLYGON Z ((30 40 816,30 50 
813,20 50 809,30 40 816))
                                         27 | POLYGON Z ((50 40 821,40 50 
817,40 40 800,50 40 821))
                                         28 | POLYGON Z ((50 50 809,40 50 
817,50 40 821,50 50 809))
                                         29 | POLYGON Z ((50 40 821,40 40 
800,50 30 816,50 40 821))
                                         30 | POLYGON Z ((40 30 814,50 30 
816,40 40 800,40 30 814))
                                         31 | POLYGON Z ((30 30 817,30 40 
816,20 40 807,30 30 817))
                                        (32 rows)
                                        
                                         select st_astext(geomtext) from vfaces;
                                                                                
   st_astext                                           
                                        
-----------------------------------------------------------------------------------------------
                                         POLYGON Z ((51 17.8 799,9 38.8 799,9 
51 819.33333333333,19.4 51 828,51 35.2 828,51 17.8 799))
                                         POLYGON Z ((51 17.8 799,9 38.8 799,9 
51 799,51 51 799,51 17.8 799))
                                         POLYGON Z ((51 35.2 828,19.4 51 828,51 
51 828,51 35.2 828))
                                         POLYGON Z ((9 9 799,9 38.8 799,51 17.8 
799,51 9 799,9 9 799))
                                         POLYGON Z ((51 17.8 799,9 38.8 799,9 
51 819.33333333333,19.4 51 828,51 35.2 828,51 17.8 799))
                                         POLYGON Z ((9 9 828,9 51 828,19.4 51 
828,51 35.2 828,51 9 828,9 9 828))
                                        (6 rows)
                                        
                                        select distinct a.id
                                        from small_tris a, vfaces b
                                        where st_intersects (a.geomtext, 
b.geomtext)
                                        order by a.id;
                                         id 
                                        ----
                                          0
                                          1
                                          2
                                          3
                                          4
                                          5
                                          6
                                          7
                                          8
                                          9
                                         10
                                         11
                                         12
                                         13
                                         14
                                         15
                                         16
                                         17
                                         18
                                         19
                                         20
                                         21
                                         22
                                         23
                                         24
                                         25
                                         26
                                         27
                                         28
                                         29
                                         30
                                         31
                                        (32 rows)
                                        
                                        
                                        



                                        
_______________________________________________
                                        postgis-users mailing list
                                        postgis-users@postgis.refractions.net
                                        
http://postgis.refractions.net/mailman/listinfo/postgis-users
                                        
                                        



                                        
_______________________________________________
                                        postgis-users mailing list
                                        postgis-users@postgis.refractions.net
                                        
http://postgis.refractions.net/mailman/listinfo/postgis-users
                                        
                                        




                        _______________________________________________
                        postgis-users mailing list
                        postgis-users@postgis.refractions.net
                        
http://postgis.refractions.net/mailman/listinfo/postgis-users
                        
                        



                _______________________________________________
                postgis-users mailing list
                postgis-users@postgis.refractions.net
                http://postgis.refractions.net/mailman/listinfo/postgis-users
                
                



_______________________________________________
postgis-users mailing list
postgis-users@postgis.refractions.net
http://postgis.refractions.net/mailman/listinfo/postgis-users

Reply via email to