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

Francois Hugues hugues.francois at irstea.fr
Tue Oct 30 03:19:11 PDT 2012


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
		
		



-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/postgis-users/attachments/20121030/0cf99e07/attachment.html>


More information about the postgis-users mailing list