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

Ed Linde edolinde at gmail.com
Tue Oct 30 02:46:47 PDT 2012


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


More information about the postgis-users mailing list