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

Reply via email to