Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > PostgreSQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo Hace 33 Minutos
manuelfec manuelfec is offline
Registrado
 
Registrado: jun 2024
Posts: 1
Poder: 0
manuelfec Va por buen camino
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();
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

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


La franja horaria es GMT +2. Ahora son las 22:24:51.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi