Hola tuxman.
El aporte pasado me ayudo a resolver un problema que tenia de excelente manera.
Ahora me surgue una pregunta. Puedo colocar ese codigo (de abajo) en una funcion o procedimiento almacenado que en lugar de 7.6287 51.95308 los reciba por variable???
---------------------------
SELECT gid, ST_Distance_Spheroid(
ST_GeomFromText('POINT(7.6287 51.95308)',4326),
ST_GeomFromText('POINT(' || longitud || ' ' || latitud || ')',4326),
'SPHEROID["WGS 84",6378137,298.257223563]') AS distancia
FROM mi_tabla
ORDER BY distancia ASC
LIMIT 1;
---------------------------
Probando con el siguiente codigo pero genera un error:
create or replace function optener_parada_cercana(lon varchar(30), lat varchar(30))
returns table(longitud double precision, latitud double precision, nombre varchar(30))
as $$
SELECT longitud, latitud, ST_Distance_Spheroid(
ST_GeomFromText('POINT('|| lon ||' '|| lat ||')',4326),
ST_GeomFromText('POINT(' || longitud || ' ' || latitud || ')',4326),
'SPHEROID["WGS 84",6378137,298.257223563]') AS distancia
FROM paradas
ORDER BY distancia ASC
LIMIT 3;
$$
LANGUAGE SQL;
y este es el error que se genera:
ERROR: no existe la columna «lon»
LINE 11: ST_GeomFromText('POINT('|| lon ||' '|| lat ||')',4326),
^
********** Error **********
ERROR: no existe la columna «lon»
Estado SQL:42703
Caracter: 400
Gracias..!!!