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