Hi Nicolas, It seems like sometimes the points are one and the same and I get linestrings and not actual polygons. I pass these points in from a perl script, so is there a way I can just give the raw x,y,z coordinates of these points and do a st_convexhull function on them? Could you please give me a small example?
I tried something like: The two coordinates marked in red and marked in orange are the same. bounds=# insert into vfaces values (1, bounds(# ST_GeomFromText('POLYGON((593901 5219610 814,593901 5219610 814,593899 5219610 814,593899 5219610 814,593901 5219610 814))') ); INSERT 0 1 bounds=# select st_isvalid(geomtext) from vfaces; NOTICE: Too few points in geometry component at or near point 593901 5219610 814 st_isvalid ------------ f (1 row) Thanks, Ed On Mon, Oct 29, 2012 at 4:26 PM, Ed Linde <edoli...@gmail.com> wrote: > Ok thanks, will look into that function. Because I wonder if the s/w I am > using is > actually outputting the vertices of each face in a cyclical fashion or > just > arbitrarily. > > Cheers, > Ed > > > On Mon, Oct 29, 2012 at 4:23 PM, Nicolas Ribot <nicolas.ri...@gmail.com>wrote: > >> Yes, it looks like some points were not put in the right order before >> building a polygon, thus these "butterfly" polygons you generated. >> If the formed polygon are expected to be convex, you could use >> st_convexhull on the point cloud to generate the polygons. >> >> On 29 October 2012 16:09, Ed Linde <edoli...@gmail.com> wrote: >> > Thanks Nicolas! Will look at the script that generated the polygon >> text.. >> > must have goofed something up there. >> > >> > >> > On Mon, Oct 29, 2012 at 4:05 PM, Nicolas Ribot <nicolas.ri...@gmail.com >> > >> > wrote: >> >> >> >> Hi, >> >> >> >> No. this is because some of your polygons are not valid: >> >> for instance: >> >> select st_isvalid('POLYGON ((593921 5219610 803,593921 5219610 >> >> 818,593921 5219620 818,593921 5219620 803,593921 5219610 >> >> 803))'::geometry); >> >> NOTICE: Too few points in geometry component at or near point 593921 >> >> 5219610 803 >> >> st_isvalid >> >> ------------ >> >> f >> >> (1 row) >> >> >> >> you can control this with st_isvalid, st_isvalidReason and correct >> >> them with st_makeValid. >> >> >> >> Use only valid objects before processing them with Postgis functions. >> >> >> >> Nicolas >> >> >> >> On 29 October 2012 16:03, Ed Linde <edoli...@gmail.com> wrote: >> >> > Thanks Nicolas. Just about the error, is this because the line >> segments >> >> > are >> >> > too close >> >> > and postgis 2.0 could not handle this? If so is there a workaround, >> even >> >> > if >> >> > it means >> >> > slightly having to "perturb" each point's position to not run into >> this >> >> > bug. >> >> > I was really hoping that the intersection of two polygonal shapes in >> 3D >> >> > would be fairly >> >> > simple in postgis 2.0 :( >> >> > >> >> > Ed >> >> > >> >> > >> >> > On Mon, Oct 29, 2012 at 4:00 PM, Nicolas Ribot < >> nicolas.ri...@gmail.com> >> >> > wrote: >> >> >> >> >> >> If the points are computed in the right order, you can store them >> and >> >> >> pass them to st_makeLine and st_makePolygon. >> >> >> If not, you can form a segment between 2 closest points and connect >> it >> >> >> to the closest points. >> >> >> >> >> >> On 29 October 2012 15:37, Ed Linde <edoli...@gmail.com> wrote: >> >> >> > Hi All, >> >> >> > Thanks for the tips! Just another thing, when I compute the >> >> >> > "transition >> >> >> > points" on each edge (shown as red points in my pdf). >> >> >> > I need to join them to make a polygon. Wondering how I can connect >> >> >> > them >> >> >> > together so that I start with a point and end on it >> >> >> > to form a closed polygon? >> >> >> > >> >> >> > Cheers, >> >> >> > Ed >> >> >> > >> >> >> > >> >> >> > On Mon, Oct 29, 2012 at 3:03 PM, Stephen Woodbridge >> >> >> > <wood...@swoodbridge.com> wrote: >> >> >> >> >> >> >> >> Hi Ed, >> >> >> >> >> >> >> >> Well if clarifies one thing at least, you can ignore Mike's >> >> >> >> st_Relate >> >> >> >> because 5 is not adjacent to a linear edge, it is only adjacent >> to a >> >> >> >> vertex, >> >> >> >> so st_touches should work fine. >> >> >> >> >> >> >> >> so you are looking for: >> >> >> >> >> >> >> >> 1. a specific triangle by id >> >> >> >> 2. that intersects triangle VC >> >> >> >> 3. and the triangles adjacent to triangle by id >> >> >> >> 4. and those that are contained in VC >> >> >> >> 5. sorted by distance to P1 limit 1 >> >> >> >> >> >> >> >> so something like: >> >> >> >> >> >> >> >> select id, the_geom >> >> >> >> from (select id, the_geom as adjacent >> >> >> >> from triangles >> >> >> >> where st_touches(the_geom, >> >> >> >> (select the_geom >> >> >> >> from triangles a, >> >> >> >> (select the_geom as vc >> >> >> >> from vc_table >> >> >> >> where id='p1') b >> >> >> >> where a.id=4)) c >> >> >> >> order by st_distance(c.the_geom, (select the_geom >> >> >> >> from points >> >> >> >> where id='p1')) asc limit 1; >> >> >> >> >> >> >> >> Untested, but should give you a model to work with. >> >> >> >> >> >> >> >> -Steve W >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> On 10/29/2012 6:57 AM, Ed Linde wrote: >> >> >> >>> >> >> >> >>> Attached is a figure. Where the dotted line is the boundary of >> the >> >> >> >>> voronoi cell whose >> >> >> >>> generator is point P1. So triangle "4" intersects with the >> voronoi >> >> >> >>> boundary, but we are >> >> >> >>> interested in the adjacent triangles of triangle 4, which are >> >> >> >>> closer >> >> >> >>> to >> >> >> >>> point P1. >> >> >> >>> For example, triangle 5. >> >> >> >>> >> >> >> >>> Hope this helps. >> >> >> >>> Cheers, >> >> >> >>> Ed >> >> >> >>> >> >> >> >>> On Mon, Oct 29, 2012 at 11:50 AM, Nicolas Ribot >> >> >> >>> <nicolas.ri...@gmail.com >> >> >> >>> <mailto:nicolas.ri...@gmail.com>> wrote: >> >> >> >>> >> >> >> >>> Could you draw a figure ? >> >> >> >>> >> >> >> >>> Nicolas >> >> >> >>> >> >> >> >>> On 29 October 2012 11:03, Ed Linde <edoli...@gmail.com >> >> >> >>> <mailto:edoli...@gmail.com>> wrote: >> >> >> >>> > Hi All, >> >> >> >>> > Thanks for the suggestions. >> >> >> >>> > For 1) I will look into how ST_touches works and see if >> it >> >> >> >>> can >> >> >> >>> pick up all >> >> >> >>> > the adjacent polygons to >> >> >> >>> > the one I have. And also look into Mike's suggestion on >> >> >> >>> ST_relate...though I >> >> >> >>> > must admit it looks >> >> >> >>> > more complex. >> >> >> >>> > For 2) I will try to clarify it a bit more... its harder >> to >> >> >> >>> do >> >> >> >>> without a >> >> >> >>> > figure :) but here goes. >> >> >> >>> > >> >> >> >>> > Lets say we have a point Q which is the generator of a >> >> >> >>> voronoi >> >> >> >>> cell. Now I >> >> >> >>> > compute the >> >> >> >>> > intersection between the voronoi cell boundaries and my >> >> >> >>> triangulation (Set >> >> >> >>> > of polygons) >> >> >> >>> > using ST_intersect. Once I have these triangles.. I say >> pick >> >> >> >>> one >> >> >> >>> triangle T >> >> >> >>> > that is >> >> >> >>> > intersecting the voronoi cell boundary of Q. >> >> >> >>> > For all the triangles adjacent to T, I need to know which >> >> >> >>> triangles are >> >> >> >>> > INSIDE the voronoi >> >> >> >>> > boundary (closer to Q) and which adjacent triangles are >> just >> >> >> >>> OUTSIDE the >> >> >> >>> > voronoi >> >> >> >>> > boundary (farther from Q). I am basically testing for a >> >> >> >>> certain >> >> >> >>> property by >> >> >> >>> > "shrinking" the >> >> >> >>> > voronoi cell (closer to Q) and another property when >> >> >> >>> "expanding" >> >> >> >>> the voronoi >> >> >> >>> > cell (away from Q). >> >> >> >>> > Just need to make this division of triangles. Haven't >> >> >> >>> thought >> >> >> >>> of >> >> >> >>> a nice way >> >> >> >>> > to do this in postgis 2.0 >> >> >> >>> > So any suggestions would greatly help. >> >> >> >>> > >> >> >> >>> > Thanks, >> >> >> >>> > Ed >> >> >> >>> > >> >> >> >>> > On Mon, Oct 29, 2012 at 10:15 AM, Mike Toews >> >> >> >>> <mwto...@gmail.com >> >> >> >>> <mailto:mwto...@gmail.com>> wrote: >> >> >> >>> >> >> >> >> >>> >> On 29 October 2012 21:33, Ed Linde <edoli...@gmail.com >> >> >> >>> <mailto:edoli...@gmail.com>> wrote: >> >> >> >>> >> > Hi All, >> >> >> >>> >> > I need help with 2 hard problems. I store triangles >> in a >> >> >> >>> table >> >> >> >>> as >> >> >> >>> >> > POLYGON. >> >> >> >>> >> > >> >> >> >>> >> > 1. I want to know for a given triangle, which >> triangles >> >> >> >>> share >> >> >> >>> an edge >> >> >> >>> >> > (adjacent) with this triangle. >> >> >> >>> >> >> >> >> >>> >> Sounds like you have a finite element mesh with nodes >> and >> >> >> >>> elements. >> >> >> >>> >> You can use ST_Relate with pattern 'FF2F11212' to pick >> out >> >> >> >>> elements >> >> >> >>> >> that share the same edge. This DE-9-IM is sort-of a >> custom >> >> >> >>> ST_Touches, >> >> >> >>> >> but only takes linear boundary overlaps. So if you have >> a >> >> >> >>> table >> >> >> >>> >> "elements", and you want to find ones that touch ID 567: >> >> >> >>> >> >> >> >> >>> >> SELECT elements.* >> >> >> >>> >> FROM elements, elements as e >> >> >> >>> >> WHERE e.id <http://e.id> = 567 AND >> >> >> >>> >> >> >> >>> >> ST_Relate(elements.geom, e.geom, 'FF2F11212'); >> >> >> >>> >> >> >> >> >>> >> I'm not certain about your second question. >> >> >> >>> >> >> >> >> >>> >> -Mike >> >> >> >>> >> _______________________________________________ >> >> >> >>> >> postgis-users mailing list >> >> >> >>> >> postgis-users@postgis.refractions.net >> >> >> >>> <mailto:postgis-users@postgis.refractions.net> >> >> >> >>> >> >> >> >>> >> >> >> >> >>> http://postgis.refractions.net/mailman/listinfo/postgis-users >> >> >> >>> > >> >> >> >>> > >> >> >> >>> > >> >> >> >>> > _______________________________________________ >> >> >> >>> > postgis-users mailing list >> >> >> >>> > postgis-users@postgis.refractions.net >> >> >> >>> <mailto:postgis-users@postgis.refractions.net> >> >> >> >>> >> >> >> >>> > >> >> >> >>> http://postgis.refractions.net/mailman/listinfo/postgis-users >> >> >> >>> > >> >> >> >>> _______________________________________________ >> >> >> >>> postgis-users mailing list >> >> >> >>> postgis-users@postgis.refractions.net >> >> >> >>> <mailto:postgis-users@postgis.refractions.net> >> >> >> >>> >> >> >> >>> >> http://postgis.refractions.net/mailman/listinfo/postgis-users >> >> >> >>> >> >> >> >>> >> >> >> >>> >> >> >> >>> >> >> >> >>> _______________________________________________ >> >> >> >>> postgis-users mailing list >> >> >> >>> postgis-users@postgis.refractions.net >> >> >> >>> http://postgis.refractions.net/mailman/listinfo/postgis-users >> >> >> >>> >> >> >> >> >> >> >> >> _______________________________________________ >> >> >> >> postgis-users mailing list >> >> >> >> postgis-users@postgis.refractions.net >> >> >> >> http://postgis.refractions.net/mailman/listinfo/postgis-users >> >> >> > >> >> >> > >> >> >> > >> >> >> > _______________________________________________ >> >> >> > postgis-users mailing list >> >> >> > postgis-users@postgis.refractions.net >> >> >> > http://postgis.refractions.net/mailman/listinfo/postgis-users >> >> >> > >> >> >> _______________________________________________ >> >> >> postgis-users mailing list >> >> >> postgis-users@postgis.refractions.net >> >> >> http://postgis.refractions.net/mailman/listinfo/postgis-users >> >> > >> >> > >> >> > >> >> > _______________________________________________ >> >> > postgis-users mailing list >> >> > postgis-users@postgis.refractions.net >> >> > http://postgis.refractions.net/mailman/listinfo/postgis-users >> >> > >> >> _______________________________________________ >> >> postgis-users mailing list >> >> postgis-users@postgis.refractions.net >> >> http://postgis.refractions.net/mailman/listinfo/postgis-users >> > >> > >> > >> > _______________________________________________ >> > postgis-users mailing list >> > postgis-users@postgis.refractions.net >> > http://postgis.refractions.net/mailman/listinfo/postgis-users >> > >> _______________________________________________ >> postgis-users mailing list >> postgis-users@postgis.refractions.net >> http://postgis.refractions.net/mailman/listinfo/postgis-users >> > >
_______________________________________________ postgis-users mailing list postgis-users@postgis.refractions.net http://postgis.refractions.net/mailman/listinfo/postgis-users