[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