[postgis-users] Problem with 3D polygon intersection test

Ed Linde edolinde at gmail.com
Tue Oct 30 03:28:54 PDT 2012


Got it working

SELECT  gen_id,
        ST_X((dp).geom),
        ST_Y((dp).geom),
        ST_Z((dp).geom)
FROM (
    SELECT gen_id, ST_dumpPoints(geomtext) as dp
    from vfaces
   ) As foo;


On Tue, Oct 30, 2012 at 11:19 AM, Francois Hugues <hugues.francois at irstea.fr
> wrote:

> **
> Maybe ST_X, ST_Y and ST_Z ?
>
> Hugues.
>
>
>  ------------------------------
> *De :* postgis-users-bounces at postgis.refractions.net [mailto:
> postgis-users-bounces at 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 <edolinde at gmail.com> wrote:
>
>> Ok thanks!
>>
>>
>> On Tue, Oct 30, 2012 at 11:04 AM, Nicolas Ribot <nicolas.ribot at 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 <edolinde at 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 <edolinde at 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.ribot at 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 <edolinde at 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 <edolinde at 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 at postgis.refractions.net
>>>>>>> http://postgis.refractions.net/mailman/listinfo/postgis-users
>>>>>>>
>>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> postgis-users mailing list
>>>>>> postgis-users at postgis.refractions.net
>>>>>> http://postgis.refractions.net/mailman/listinfo/postgis-users
>>>>>>
>>>>>>
>>>>>
>>>>
>>>> _______________________________________________
>>>> postgis-users mailing list
>>>> postgis-users at postgis.refractions.net
>>>> http://postgis.refractions.net/mailman/listinfo/postgis-users
>>>>
>>>>
>>>
>>> _______________________________________________
>>> postgis-users mailing list
>>> postgis-users at postgis.refractions.net
>>> http://postgis.refractions.net/mailman/listinfo/postgis-users
>>>
>>>
>>
>
> _______________________________________________
> postgis-users mailing list
> postgis-users at postgis.refractions.net
> http://postgis.refractions.net/mailman/listinfo/postgis-users
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/postgis-users/attachments/20121030/0c5e5749/attachment.html>


More information about the postgis-users mailing list