[postgis-users] Recursive intersect
Nicolas Ribot
nicolas.ribot at gmail.com
Wed Jan 25 00:20:11 PST 2012
Hi
WITH RECURSIVE needs an UNION ALL to link the "non recursive" term
with the "recursive" one.
Nicolas
On 25 January 2012 05:50, Leslie Viljoen <leslieviljoen at gmail.com> wrote:
> Hi everyone!
>
> I am having a hard time finding polygons intersecting other polygons
> recursively. My "projects" relation has an id and a geom. I'd like to start
> with a project, select all the conflicting (intersecting) projects, then
> select the projects that conflict with that, etc.
> As near as I can figure, I need a recursive query, so after many attempts I
> have this:
>
> WITH RECURSIVE tp(project_id, conflict_id, conflict_geom) AS
> (
> SELECT projects.id, conflicts.id, conflicts.the_geom
> FROM projects, projects as conflicts
> WHERE projects.id = 1740 and (ST_Intersects(projects.the_geom,
> conflicts.the_geom))
> UNION
> SELECT conflicts.id, tp.conflict_id, tp.conflict_geom
> FROM tp, projects as conflicts where (ST_Intersects(tp.conflict_geom,
> conflicts.the_geom))
> )
> SELECT * from tp;
>
>
> This gives me:
> ERROR: could not implement recursive UNION
> DETAIL: All column datatypes must be hashable.
>
>
> I assume that's because of the geometry - can UNION not work with a geom?
>
>
> My ultimate goal is for my program to get a list of all the conflicts and
> conflicts of conflicts (and conflicts of conflicts of conflicts...) for
> every project, like so:
>
> id conflicts
> 1 7, 6, 3, 4
> 3 1, 19, 32
>
>
> I already do this programmatically , but its too slow.
>
>
> I'd appreciate any tips!
>
> Leslie
>
>
> _______________________________________________
> postgis-users mailing list
> postgis-users at postgis.refractions.net
> http://postgis.refractions.net/mailman/listinfo/postgis-users
>
More information about the postgis-users
mailing list