[postgis-users] Problem with 3D polygon intersection test
Nicolas Ribot
nicolas.ribot at gmail.com
Tue Oct 30 02:44:44 PDT 2012
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
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/postgis-users/attachments/20121030/88052b9c/attachment.html>
More information about the postgis-users
mailing list