Hi All, I was trying to do this intersection between two tables, I have inserted the selects for the two tables and the error. Also the postgis full version information. Is there a way to get around this problem? Is this a bug? The polygons in both tables contain 3D points. Could this be a problem?
Cheers, Ed select a.id, ST_AsText(st_intersection(a.geomtext, b.geomtext)) the_tris from small_tris a, vfaces b where st_intersects (a.geomtext, b.geomtext); ERROR: Error performing intersection: TopologyException: found non-noded intersection between LINESTRING (593907 5.2196e+06, 593915 5.21961e+06) and LINESTRING (593911 5.21961e+06, 593908 5.2196e+06) at 593908.59999999998 5219602 809.89999999999918 ********** Error ********** ERROR: Error performing intersection: TopologyException: found non-noded intersection between LINESTRING (593907 5.2196e+06, 593915 5.21961e+06) and LINESTRING (593911 5.21961e+06, 593908 5.2196e+06) at 593908.59999999998 5219602 809.89999999999918 SQL state: XX000 SELECT PostGIS_full_version(); postgis_full_version -------------------------------------------------------------------------------------------------------------------------------------------- ----------- POSTGIS="2.0.0alpha7SVN" GEOS="3.3.2-CAPI-1.7.2" PROJ="Rel. 4.7.1, 23 September 2009" GDAL="GDAL 1.9.0, released 2011/12/29" LIBXML="2.7.8" USE_STATS (1 row) bounds=# select gen_id, ST_AsText(geomtext) from vfaces; gen_id | st_astext --------+--------------------------------------------------------------------------------------------------------------------------------- 7 | POLYGON Z ((593908 5219600 803,593907 5219600 818,593915 5219610 818,593911 5219610 803,593908 5219600 803)) 7 | POLYGON Z ((593908 5219600 803,593899 5219600 803,593899 5219600 818,593907 5219600 818,593908 5219600 803)) 7 | POLYGON Z ((593908 5219600 803,593911 5219610 803,593903 5219620 803,593899 5219620 803,593899 5219600 803,593908 5219600 803)) 7 | POLYGON Z ((593899 5219620 803,593899 5219620 818,593899 5219600 818,593899 5219600 803,593899 5219620 803)) 7 | POLYGON Z ((593899 5219620 803,593903 5219620 803,593912 5219620 818,593899 5219620 818,593899 5219620 803)) 7 | POLYGON Z ((593912 5219620 818,593903 5219620 803,593911 5219610 803,593915 5219610 818,593912 5219620 818)) 7 | POLYGON Z ((593912 5219620 818,593915 5219610 818,593907 5219600 818,593899 5219600 818,593899 5219620 818,593912 5219620 818)) 16 | POLYGON Z ((593921 5219600 803,593921 5219610 803,593911 5219610 803,593908 5219600 803,593921 5219600 803)) 16 | POLYGON Z ((593921 5219600 803,593921 5219600 818,593921 5219610 818,593921 5219610 803,593921 5219600 803)) 16 | POLYGON Z ((593921 5219600 803,593908 5219600 803,593907 5219600 818,593921 5219600 818,593921 5219600 803)) 16 | POLYGON Z ((593911 5219610 803,593921 5219610 803,593921 5219610 818,593915 5219610 818,593911 5219610 803)) 16 | POLYGON Z ((593911 5219610 803,593915 5219610 818,593907 5219600 818,593908 5219600 803,593911 5219610 803)) 16 | POLYGON Z ((593907 5219600 818,593915 5219610 818,593921 5219610 818,593921 5219600 818,593907 5219600 818)) 18 | POLYGON Z ((593921 5219610 803,593911 5219610 803,593915 5219610 818,593921 5219610 818,593921 5219610 803)) 18 | POLYGON Z ((593921 5219610 803,593921 5219620 803,593903 5219620 803,593911 5219610 803,593921 5219610 803)) 18 | POLYGON Z ((593921 5219610 803,593921 5219610 818,593921 5219620 818,593921 5219620 803,593921 5219610 803)) 18 | POLYGON Z ((593912 5219620 818,593915 5219610 818,593911 5219610 803,593903 5219620 803,593912 5219620 818)) 18 | POLYGON Z ((593912 5219620 818,593921 5219620 818,593921 5219610 818,593915 5219610 818,593912 5219620 818)) 18 | POLYGON Z ((593912 5219620 818,593903 5219620 803,593921 5219620 803,593921 5219620 818,593912 5219620 818)) (19 rows) bounds=# select id, st_astext(geomtext) from small_tris; id | st_astext ----+------------------------------------------------------------------------------------------- 0 | POLYGON Z ((593890 5219590 840,593900 5219590 827,593890 5219600 817,593890 5219590 840)) 1 | POLYGON Z ((593890 5219600 817,593900 5219590 827,593900 5219600 815,593890 5219600 817)) 2 | POLYGON Z ((593900 5219600 815,593910 5219590 824,593910 5219600 815,593900 5219600 815)) 3 | POLYGON Z ((593910 5219590 824,593900 5219600 815,593900 5219590 827,593910 5219590 824)) 4 | POLYGON Z ((593910 5219600 815,593910 5219590 824,593920 5219590 842,593910 5219600 815)) 5 | POLYGON Z ((593900 5219600 815,593910 5219600 815,593900 5219610 815,593900 5219600 815)) 6 | POLYGON Z ((593890 5219600 817,593900 5219600 815,593900 5219610 815,593890 5219600 817)) 7 | POLYGON Z ((593890 5219620 812,593890 5219610 825,593900 5219610 815,593890 5219620 812)) 8 | POLYGON Z ((593890 5219630 827,593890 5219620 812,593900 5219620 841,593890 5219630 827)) 9 | POLYGON Z ((593900 5219610 815,593900 5219620 841,593890 5219620 812,593900 5219610 815)) 10 | POLYGON Z ((593910 5219610 819,593900 5219620 841,593900 5219610 815,593910 5219610 819)) 11 | POLYGON Z ((593910 5219620 848,593900 5219630 838,593900 5219620 841,593910 5219620 848)) 12 | POLYGON Z ((593900 5219620 841,593900 5219630 838,593890 5219630 827,593900 5219620 841)) 13 | POLYGON Z ((593890 5219610 825,593890 5219600 817,593900 5219610 815,593890 5219610 825)) 14 | POLYGON Z ((593910 5219610 819,593900 5219610 815,593910 5219600 815,593910 5219610 819)) 15 | POLYGON Z ((593910 5219600 815,593920 5219600 817,593910 5219610 819,593910 5219600 815)) 16 | POLYGON Z ((593920 5219600 817,593910 5219600 815,593920 5219590 842,593920 5219600 817)) 17 | POLYGON Z ((593920 5219600 817,593920 5219590 842,593930 5219590 803,593920 5219600 817)) 18 | POLYGON Z ((593910 5219610 819,593920 5219600 817,593920 5219610 804,593910 5219610 819)) 19 | POLYGON Z ((593920 5219600 817,593930 5219600 845,593920 5219610 804,593920 5219600 817)) 20 | POLYGON Z ((593930 5219600 845,593920 5219600 817,593930 5219590 803,593930 5219600 845)) 21 | POLYGON Z ((593920 5219610 804,593930 5219600 845,593930 5219610 819,593920 5219610 804)) 22 | POLYGON Z ((593910 5219610 819,593920 5219610 804,593920 5219620 804,593910 5219610 819)) 23 | POLYGON Z ((593910 5219620 848,593920 5219620 804,593910 5219630 801,593910 5219620 848)) 24 | POLYGON Z ((593910 5219620 848,593910 5219610 819,593920 5219620 804,593910 5219620 848)) 25 | POLYGON Z ((593910 5219630 801,593920 5219620 804,593920 5219630 808,593910 5219630 801)) 26 | POLYGON Z ((593910 5219620 848,593910 5219630 801,593900 5219630 838,593910 5219620 848)) 27 | POLYGON Z ((593930 5219620 844,593920 5219630 808,593920 5219620 804,593930 5219620 844)) 28 | POLYGON Z ((593930 5219630 834,593920 5219630 808,593930 5219620 844,593930 5219630 834)) 29 | POLYGON Z ((593930 5219620 844,593920 5219620 804,593930 5219610 819,593930 5219620 844)) 30 | POLYGON Z ((593920 5219610 804,593930 5219610 819,593920 5219620 804,593920 5219610 804)) 31 | POLYGON Z ((593910 5219610 819,593910 5219620 848,593900 5219620 841,593910 5219610 819)) (32 rows) On Mon, Oct 29, 2012 at 3:37 PM, 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.ribot@gmail.**com <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<postgis-users@postgis.refractions.net> >>> >>> <mailto:postgis-users@postgis.**refractions.net<postgis-users@postgis.refractions.net> >>> > >>> >>> >> http://postgis.refractions.**net/mailman/listinfo/postgis-** >>> users <http://postgis.refractions.net/mailman/listinfo/postgis-users> >>> > >>> > >>> > >>> > ______________________________**_________________ >>> > postgis-users mailing list >>> > >>> postgis-users@postgis.**refractions.net<postgis-users@postgis.refractions.net> >>> >>> <mailto:postgis-users@postgis.**refractions.net<postgis-users@postgis.refractions.net> >>> > >>> >>> > >>> http://postgis.refractions.**net/mailman/listinfo/postgis-**users<http://postgis.refractions.net/mailman/listinfo/postgis-users> >>> > >>> ______________________________**_________________ >>> postgis-users mailing list >>> >>> postgis-users@postgis.**refractions.net<postgis-users@postgis.refractions.net> >>> >>> <mailto:postgis-users@postgis.**refractions.net<postgis-users@postgis.refractions.net> >>> > >>> >>> >>> http://postgis.refractions.**net/mailman/listinfo/postgis-**users<http://postgis.refractions.net/mailman/listinfo/postgis-users> >>> >>> >>> >>> >>> ______________________________**_________________ >>> postgis-users mailing list >>> postgis-users@postgis.**refractions.net<postgis-users@postgis.refractions.net> >>> http://postgis.refractions.**net/mailman/listinfo/postgis-**users<http://postgis.refractions.net/mailman/listinfo/postgis-users> >>> >>> >> ______________________________**_________________ >> postgis-users mailing list >> postgis-users@postgis.**refractions.net<postgis-users@postgis.refractions.net> >> http://postgis.refractions.**net/mailman/listinfo/postgis-**users<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