Создание триггера с оверлейной операцией PostGIS
Задача - при добавлении точечного объекта в одной таблице определить, в пределах какого полигонального объекта другой таблицы точка находится.
-- DROP FUNCTION public.process_realty_add();
CREATE OR REPLACE FUNCTION public.process_realty_add()
RETURNS trigger AS
$BODY$
BEGIN
raise notice 'point trigger starts now: %', now();
SELECT gis_county.county, gis_county.state
INTO NEW.t_county, NEW.t_state
FROM gis_county
WHERE ST_Intersects(NEW.geom, gis_county.geom);
raise notice 'point trigger ends now: %', now();
RETURN NEW;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
Триггер:
-- DROP TRIGGER realty_add ON public.gis_realty;
CREATE TRIGGER realty_add
AFTER INSERT OR UPDATE
ON public.gis_realty
FOR EACH ROW
EXECUTE PROCEDURE public.process_realty_add();
-- DROP FUNCTION public.process_realty_add();
CREATE OR REPLACE FUNCTION public.process_realty_add()
RETURNS trigger AS
$BODY$
BEGIN
raise notice 'point trigger starts now: %', now();
SELECT gis_county.county, gis_county.state
INTO NEW.t_county, NEW.t_state
FROM gis_county
WHERE ST_Intersects(NEW.geom, gis_county.geom);
raise notice 'point trigger ends now: %', now();
RETURN NEW;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
Триггер:
-- DROP TRIGGER realty_add ON public.gis_realty;
CREATE TRIGGER realty_add
AFTER INSERT OR UPDATE
ON public.gis_realty
FOR EACH ROW
EXECUTE PROCEDURE public.process_realty_add();
Комментарии
Отправить комментарий