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

Nicolas Ribot nicolas.ribot at gmail.com
Tue Oct 30 03:04:13 PDT 2012


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
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/postgis-users/attachments/20121030/e1324032/attachment.html>


More information about the postgis-users mailing list