[postgis-users] Problem with 3D polygon intersection test
Ed Linde
edolinde at gmail.com
Tue Oct 30 02:22:51 PDT 2012
Hi,
Just to add more information, in case someone has time later on to check it
out.
I tried intersecting just ONE triangle with the faces in my vfaces table,
and what I
get back from the st_intersection is the triangle back itself repeated 4
times! I don't
get it. Is there a way to get around this behaviour. The triangle and the
faces are
shown in the image pasted below. Its clear that the triangle is not
touching any of
the faces. Any ideas?
Cheers, Ed
bounds=# select st_astext(st_intersection(a.geomtext, *'POLYGON((10 10
805,20 10 809,10 20 814,10 10 805)*)'::geometry ))
from vfaces a
where
st_intersects( a.geomtext,
ST_GeomFromText('POLYGON((10 10 805,20 10 809,10 20 814,10 10 805))')
);
st_astext
-------------------------------------------------------
*POLYGON Z ((10 10 805,10 20 814,20 10 809,10 10 805))*
POLYGON Z ((10 10 805,10 20 814,20 10 809,10 10 805))
POLYGON Z ((10 10 805,10 20 814,20 10 809,10 10 805))
POLYGON Z ((10 10 805,10 20 814,20 10 809,10 10 805))
(4 rows)
On Tue, Oct 30, 2012 at 9:44 AM, 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)
>>
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/postgis-users/attachments/20121030/6db50be8/attachment.html>
More information about the postgis-users
mailing list