[postgis-users] Creating a Flow Diagram
Sufficool, Stanley
ssufficool at rov.sbcounty.gov
Mon Jun 2 11:05:31 PDT 2008
C is an alias to the entity table for child entities, P is an alias to
the entity table for parent entities.
You have one table with all the entities both parent and child with a
"loop back" using entity_relation.
The same could be accomplished with a single table using:
===========================
/* Your entity/diagram shapes and relationships */
create table entity (
entity_id serial not null primary key,
the_geom geometry not null,
is_calculated bit not null default 0::bit,
parent_entity_id int null references entity(entity_id) on delete
set null,
ratio_x float4 not null default 0,
ratio_y float4 not null default 0,
ratio_z float4 not null default 0
);
/* WANNABE trigger function */
update c
SET c.the_geom =
select st_translate(
/* Step 1: Center the child on parent geometry */
st_translate(
c.the_geom,
st_x(st_centroid(p.the_geom)) -
st_x(st_centroid(c.the_geom)),
st_y(st_centroid(p.the_geom)) -
st_y(st_centroid(c.the_geom)),
st_z(st_centroid(p.the_geom)) -
st_z(st_centroid(c.the_geom))
},
/*
Step 2: Translate to the left, right, top, bottom,
front, back
of the parent geometry by the ratio (x,y,z)
stored in entity_relation of the parent entity
width/height
*/
( st_xmax(p.the_geom) - st_xmin(p.the_geom) ) * er.ratio_x,
( st_ymax(p.the_geom) - st_ymin(p.the_geom) ) * er.ratio_y,
( st_zmax(p.the_geom) - st_zmin(p.the_geom) ) * er.ratio_z
),
is_calculated = 1
from entity as c
join entity as p
on c.parent_entity_id = p.entity_id
WHERE is_calculated=0
AND p.entity_id = OLD.entity_id; /* Update from the OLD trigger
record */
========================
> -----Original Message-----
> From: postgis-users-bounces at postgis.refractions.net
> [mailto:postgis-users-bounces at postgis.refractions.net] On
> Behalf Of Bob Pawley
> Sent: Monday, June 02, 2008 10:25 AM
> To: PostGIS Users Discussion
> Subject: Re: [postgis-users] Creating a Flow Diagram
>
>
> When you describe the Update function:
>
> - I take it that c is a child table which you haven't
> described. Could this
> be a library of geometries??
>
> - Set c.the_geom = ? (Parent geometry??)
>
> Bob
>
>
>
> ----- Original Message -----
> From: "Sufficool, Stanley" <ssufficool at rov.sbcounty.gov>
> To: "PostGIS Users Discussion" <postgis-users at postgis.refractions.net>
> Sent: Monday, June 02, 2008 10:06 AM
> Subject: RE: [postgis-users] Creating a Flow Diagram
>
>
> Comments below
>
>
> > -----Original Message-----
> > From: postgis-users-bounces at postgis.refractions.net
> > [mailto:postgis-users-bounces at postgis.refractions.net] On Behalf Of
> > Bob Pawley
> > Sent: Monday, June 02, 2008 9:30 AM
> > To: PostGIS Users Discussion
> > Subject: [postgis-users] Creating a Flow Diagram
> >
> >
> > Hi Stanley
> >
> > I'm still in the primary learning stage with Postgis.
> >
> > I would appreciate you critiquing my thoughts.
> >
> > With the two tables - entity and entity_relationship - the
> idea is to
> > establish a parent geometry (perhaps a point known to be within
> > established
> > boundries) and establish the position of child entities (
> in my case,
> > process graphics) in relationship to the parent.
>
> That is correct. The entitity table would contain 2d/3d
> Polygons of your diagram entities. Points in this table would
> not work due to st_centroid in the would-be trigger function.
> A slight modification would fix this.
>
> >
> > Furthermore, you seem to indicate that any entity can be
> both a parent
> > and/or a child to another entity.
> >
>
> Yes, this allows for one to many relations of parent to child
> (1-->2 &&
> 1-->3) and for network diagrams
>
> > You also indicate that the placement of the child entity can be
> > established in relation to the relative geometric sizes of the
> > entities.
> >
>
> Yes, examples:
> For a parent entity (1) with a child (2) placed to the right
> of the parent, you would have entity_relation (1,2,1,0,0) For
> a parent entity (1) with a child (2) placed to the top of the
> parent, you would have entity_relation (1,2,0,1,0) For a
> parent entity (1) with a child (2) placed to the left of the
> parent, you would have entity_relation (1,2,-1,0,0) *If
> anyone actually produces a 3d diagram using the ratio_z, this
> would be a first in my book and would be very interesting to see.
>
> > Have I been somewhat correct so far?
> >
> > Bob
> >
> > _______________________________________________
> > postgis-users mailing list postgis-users at postgis.refractions.net
> > http://postgis.refractions.net/mailman/listinfo/postgis-users
> >
> _______________________________________________
> postgis-users mailing list postgis-users at postgis.refractions.net
> http://postgis.refractions.net/mailman/listinfo/postgis-users
>
> _______________________________________________
> 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