Almacenamiento y tratamiento de datos geolocalizados en PostgreSQL con PostGIS

¡Buenas a [email protected]!

Hoy voy a explicar una operación básica pero necesaria para almacenar y  tratar con datos geolocalizados. Siguiendo un poco el hilo del tutorial, ya tenemos nuestra base de datos PostgreSQL con el módulo PotGIS creada, así como creada nuestra tabla con el tipo de dato espacial haciendo uso del SRID 4326, por lo que ahora vamos a ver cómo se almacena un punto, definido por su longitud y su latitud, en ella.

Lo más importante que debemos saber y que no debemos confundir, es que tanto para almacenar un punto en la base de datos como para recuperarlo, debemos tener presente que estos se almacenan definidos por el par (longitud latitud) y que no debemos alterar ese orden. Cuando explicamos cómo añadir un tipo de dato espacial, pudimos observar que en nuestra tabla, este dato aparecía como un único objeto almacenado en una única columna. Bien, veamos ahora la consulta SQL necesaria para almacenar un punto geográfico:

INSERT INTO puntos(punto) VALUES (ST_GeomFromText('POINT(37.884466 -4.779536)',4326))  

Por otro lado, para recuperar un punto almacenado en la base de datos, tenemos dos formas distintas, que usaremos según necesitemos en cada caso:

  • Recuperación del punto definido por el par (longitud latitud)
SELECT ST_AsTEXT(punto) from puntos consulta SQL select ST_AsTEXT
  • Recuperación de la longitud y de la latitud del punto de forma independiente para poder trabajar con cada una de ellas. Para la longitud tendremos
SELECT ST_X(punto) from puntos consulta SQL select ST_X
Y para la latitud  SELECT ST_Y(punto) from puntos consulta SQL select ST_Y

Una vez obtenida la longitud y la latitud por cualquiera de los métodos anteriores, ya podremos trabajar con este formato o incluso representarlo de forma visual en un mapa.

Espero que os haya sido útil :)

¡Un saludo!

La entrada Almacenamiento y tratamiento de datos geolocalizados en PostgreSQL con PostGIS apareció primero en Linux Hispano.

Leave a Comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *