[postgis-users] Creating a Flow Diagram

Bob Pawley rjpawley at shaw.ca
Thu Jun 5 15:08:56 PDT 2008


That's neat.

Thank you.

Bob
----- Original Message ----- 
From: "Sufficool, Stanley" <ssufficool at rov.sbcounty.gov>
To: "PostGIS Users Discussion" <postgis-users at postgis.refractions.net>
Sent: Thursday, June 05, 2008 1:37 PM
Subject: RE: [postgis-users] Creating a Flow Diagram


Get around the NULL geometry by removing the z arguments in the
translate functions for the NON 3d geometries.

Attached is the working implementation, enjoy!



> -----Original Message-----
> From: postgis-users-bounces at postgis.refractions.net
> [mailto:postgis-users-bounces at postgis.refractions.net] On
> Behalf Of Sufficool, Stanley
> Sent: Thursday, June 05, 2008 11:16 AM
> To: PostGIS Users Discussion
> Subject: RE: [postgis-users] Creating a Flow Diagram
>
>
> OK, I'm trying to come up with a solid solution to all this
> since it roughly applies to some things I'm doing with
> attached objects and location tracking.
>
> This rule is resulting in infinite recursion when there is no
> reason for the rule to even execute.
>
> Am I understanding the rules system wrong or should this be a
> trigger function?
>
> -------------------
>
> create or replace rule entity_update AS ON update TO entity
> WHERE NOT (st_AsText(OLD.the_geom) ~=
> st_AsText(NEW.the_geom)) -- Only if geometry was modifed (I'm
> sure there is a more appropriate operator
> here)
> DO UPDATE entity
> SET the_geom = st_translate(
> -- Center the child on parent geometry
> st_translate(
> the_geom,
> st_x(st_centroid(NEW.the_geom)) -
> st_x(st_centroid(the_geom)),
> st_y(st_centroid(NEW.the_geom)) -
> st_y(st_centroid(the_geom)),
> st_z(st_centroid(NEW.the_geom)) -
> st_z(st_centroid(the_geom))
> ),
> --Translate to relative position of parent
> ( st_xmax(NEW.the_geom) - st_xmin(NEW.the_geom) ) *
> ratio_x,
> ( st_ymax(NEW.the_geom) - st_ymin(NEW.the_geom) ) *
> ratio_y,
> ( st_zmax(NEW.the_geom) - st_zmin(NEW.the_geom) ) *
> ratio_z
> )
> WHERE parent_entity_id = NEW.entity_id --Update all children of
> the modified parent record
> ;
>
> -- NOW LETS touch the parent
> update entity SET the_geom = st_translate(the_geom, 0, 0)
> where entity_id = (SELECT MIN(entity_id) FROM entity)
>
>
> ERROR:  infinite recursion detected in rules for relation "entity"
>
> ********** Error **********
>
> ERROR: infinite recursion detected in rules for relation
> "entity" SQL state: 42P17
>



--------------------------------------------------------------------------------


> _______________________________________________
> 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