[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