FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
trigger con tablas espaciales
Hola comunidad, espero que se encuentren todos bien, acudo a ustedes en busca de ayuda, estoy intentando realizar estos triggers pero no he podido, por favor ayúdenme.
Ya tengo la extension a postgis y el SRID es metrico estoy utilizando Postgres Tengo una tabla de zonificación de geometría tipo polígono con una columna llamada área_iluminada, también tengo una tabla de alumbrado_publico de geometría tipo punto con una columna llamada cobertura. Quiero crear un disparador que almacene en la columna Illuminated_area el área que se superpone entre los polígonos de zonificación y la unión de los polígonos resultantes del buffer alumbrado_publico cuya distancia del buffer es la cobertura. teniendo en cuenta que puedo modificar la posición de los puntos o la cobertura por lo que debe ser actualizable. he llegado al siguinte codigo pero no funciona, area_iluminada sigue dando null: [sql]-- Función para calcular el área iluminada y actualizar zonificacion CREATE OR REPLACE FUNCTION calcular_area_iluminada() RETURNS TRIGGER AS $$ BEGIN -- Actualizar el área iluminada en zonificacion UPDATE zonificacion z SET area_iluminada = ST_Area(ST_Intersection(z.geom, buffer_alum.geom)) FROM ( SELECT ST_Union(ST_Buffer(geom, cobertura)) AS geom FROM alumbrado_publico ) AS buffer_alum WHERE ST_Intersects(z.geom, buffer_alum.geom); RETURN NEW; END; $$ LANGUAGE plpgsql; -- Trigger para INSERT en alumbrado_publico CREATE TRIGGER calcular_area_iluminada_insert AFTER INSERT ON alumbrado_publico FOR EACH ROW EXECUTE FUNCTION calcular_area_iluminada(); -- Trigger para UPDATE en alumbrado_publico CREATE TRIGGER calcular_area_iluminada_update AFTER UPDATE ON alumbrado_publico FOR EACH ROW EXECUTE FUNCTION calcular_area_iluminada(); -- Trigger para DELETE en alumbrado_publico CREATE TRIGGER calcular_area_iluminada_delete AFTER DELETE ON alumbrado_publico FOR EACH ROW EXECUTE FUNCTION calcular_area_iluminada(); |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Trigger dinámico para Auditoría de Tablas | jwmoreira | Firebird e Interbase | 6 | 11-03-2010 22:53:07 |
Un trigger que dispara un procedimiento que dispara un trigger... | sitrico | Firebird e Interbase | 5 | 04-06-2007 22:05:13 |
Trigger | inferno | Firebird e Interbase | 1 | 26-10-2005 21:25:43 |
Trigger Para Refrescar Tablas | GIVO | SQL | 5 | 21-07-2003 19:32:55 |
|