Un truco fácil pero que la gente que no está acostumbrada a trabajar con PostGIS no conoce. Esta semana un compañero me planteaba un problema, estaba usando Leaflet para cargar una capa de puntos desde una tabla PostGIS a la que accedía a través de un API REST que se había programado. Bien, en la tabla estaba almacenando las coordenadas en dos columnas con double precision. Lo que quería era mostrar fácil esa capa en Leaflet.
La solución es sencilla: crear una vista en la que convertimos las dos coordenadas en un WKT, después en una geometría y finalmente la transformamos a geoJSON, así no tiene que hacer nada en Leaflet, simplemente pasarle el string en geoJSON y se lo come. Esto es lo bueno de usar estándares (por su puesto podría utilizar cualquier otra librería para mapas en la web, como OpenLayers)
La vista quedaría tal que así:
CREATE VIEW AS
SELECT st_asgeojson(st_geometryfromtext('POINT(' || a.lon::TEXT || ' ' || a.lat::TEXT || ')')) FROM mi_tabla_con_coordenadas a;
Fácil y rápido. Por cierto, cuidado con las comillas si copias la consulta SQL que os conozco ¬¬u