[postgis-users] Create points with a geoserver WFS-T

Nicolas Ribot nicolas.ribot at gmail.com
Mon Nov 30 02:08:23 PST 2009


Hi,

NEW is a variable made available  by the system when creating a
trigger. It represents the row of values that will be updated or
inserted.
More information here:

http://www.postgresql.org/docs/8.4/static/plpgsql-trigger.html

Nicolas

2009/11/30 Daniel Grum <daniel.grum at unibw.de>:
> Hi,
>
> I want to create points(buildings) with a WFS-T in mapbender and before this
> was done there must be the possibility to control if there is another
> point-(building) or linestring-(water) geometry around the point...if there
> is another geometry the WFT-T should stop and write an ERROR message: "You
> are not able to create a point(building) there!"
> New points were digitized,with digitize tool in mapbender, but it don't
> control if there is a point/line at this area where the new point will be
> digitized!
>
> Do I have to create a PostGIS SQL script to stop the digitizing of an new
> point?
> I found the "mod_digitize_messages.php" whre I can create massages for
> several actions, but I don't know how I can create the "control-action" that
> control if there is a point in a defined area or not?!
>
> Later I want to create a similar trigger function that control if the user
> have enough ressources to build the new building-->so this trigger function
> have to work at first!
>
> I wrote this in the mapbender mailing list too, with now answer yet!
>
> Are there any ideas??
>
> The triggerfuntion I used for this now is:
>
> "CREATE OR REPLACE FUNCTION my_trigger_function() RETURNS trigger AS
> $$
>  DECLARE
>   -- declare variables
>     current_row RECORD;
>  BEGIN
>   -- get all existing geometries which intersect the new geometry
> NEW.the_geom
>   -- around the new geometry is a buffer of 50 meters (or whatever your unit
> is)
>     FOR current_row IN
>     SELECT *
>     FROM public.holzfaeller t, public.erzmine e, public.wohnhaus w,
> public.steinbruch s, public.kaserne k, public.saegerwerk r
>     WHERE     ST_Intersects(ST_Buffer(NEW.the_geom, 50),t.the_geom) AND
>       ST_Intersects(ST_Buffer(NEW.the_geom, 50),e.the_geom) AND
>       ST_Intersects(ST_Buffer(NEW.the_geom, 50),w.the_geom) AND
>       ST_Intersects(ST_Buffer(NEW.the_geom, 50),s.the_geom) AND
>       ST_Intersects(ST_Buffer(NEW.the_geom, 50),k.the_geom) AND
>       ST_Intersects(ST_Buffer(NEW.the_geom, 50),r.the_geom)
>
>       LOOP
>          -- intersection found
>   RAISE EXCEPTION 'my error message';
>   END LOOP;
>
>   -- no intersection, new geometry will be inserted
>     RETURN NEW;
>  END;
> $$ LANGUAGE 'plpgsql';
>
> And in every table-->holzfaeller, erzmine .... there is a trigger:
>
> "CREATE TRIGGER my_trigger
>  BEFORE INSERT OR UPDATE
>  ON holzfaeller
>  FOR EACH ROW
>  EXECUTE PROCEDURE my_trigger_function();"
>
> I get this with the help of an other mapbender user!
> But what can be the variable "NEW" in the trigger function -->Where come
> this from, Where was this defined?
>
> Please help me, every idea can bring me to the solution.
>
> --daniel
> _______________________________________________
> 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