0 votos

POSTGIS seleccionar puntos más cercanos con función trigger

Buenas noches.

Tego que crear un TRIGGER que permita alimentar una relación que contenga los datos geográficos de líneas, que se creen desde cada punto de una tabla llamada universidades a una tabla llamada motel (creando la lina más cercana y lejana)

-- creo la tabla que soporta los datos geograficos

CREATE TABLE public.lineasmotel (numero SERIAL, fid NUMERIC (6),nombre VARCHAR, motel_mas_cercano VARCHAR, motel_mas_lejano VARCHAR);

ALTER TABLE lineasmotel ADD CONSTRAINT pklineasmotel PRIMARY KEY (numero);

-- creación de la geometría de los moteles y universidades

-- creación de la columna

SELECT AddGeometryColumn('','moteles','geom',4326,'POINT',2);

SELECT AddGeometryColumn('','universidades','geom',4326,'POINT',2);

-- función para extraer las distancias mas cercana y lejana

CREATE OR REPLACE FUNCTION distancia()

RETURNS TRIGGER AS $$

BEGIN

IF NEW.geom <> OLD.geom THEN

INSERT INTO lineasmotel (numero , fid ,nombre , motel_mas_cercano , motel_mas_lejano )

VALUES ( OLD.fid, OLD.fid, OLD.nombre, SELECT ST_distance(ST_transform(universidades.geom,3115),st_transform(moteles.geom,3115))as dist
        from universidades, moteles
        ORDER BY dist LIMIT 1 ,

    SELECT ST_distance(ST_transform(universidades.geom,3115),st_transform(moteles.geom,3115))as dist
        from universidades, moteles
        ORDER BY dist LIMIT 11 );

END IF; RETURN NULL;
END; $$ LANGUAGE plpgsql;

-- trigger para la función

CREATE TRIGGER Tr_dist

AFTER UPDATE ON universidades

FOR EACH ROW

EXECUTE PROCEDURE distancia();

mi duda surgue cuando me salta un error en la función el cual me dice que el tengo un error de sintaxis insertando los valores en la tabla lineasmotel pero no logro identificar cúal es, agradecería mucho su ayuda

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by: