Verificar si un punto esta dentro de un poligono en postgis

Si Postgis no existiera esto seria un poco complicado,  ok.. la tarea es la siguiente en mi base de datos tengo unas cercas que no son mas que unos poligonos, y necesitaba saber si el punto que lanzaba desde un gps al sevidor  esta dentro de el poligono o fuera, Postgis nos da una funcion llamanda ST_CONTAINS  que nos permite ver si un punto esta dentro de un poligono, esta funcion recibe dos parametros que son del tipo GEOMETRY :

ST_CONTAINS(geometry, geometry)

el primer parametro es el poligono y el segundo es el punto. y listo ya sabemos si el punto esta dentro del poligono, ok ahora tengo un ejemplo el cual es una funcion que  solo verifica si el punto enviado esta dentro de una geocerca ya almacenada en la base de datos (ojo que es un ejemplo hardcode) ya ustedes lo pueden modificar de acuerdo  a lo que necesitan:


CREATE OR REPLACE FUNCTION in_polygon()
-- retorna un booleano true si esta dentro y false si esta fuera
RETURNS boolean AS
$$
DECLARE
--se declara una variable que almacenara el poligono que se sacara de la base de datos
v_geom geometry;
-- la variable de respuesta
v_result BOOLEAN ;
BEGIN
-- se saca el poligono de la tabla geofence
v_geom := (SELECT geo.geom from geofence as geo where id_geofence = 18);
--y se usa la funcion de postgis
v_result := (SELECT ST_Contains(v_geom, GeomFromText('POINT(-65.9667 -17.474)',4326)));
RETURN v_result;
END;
$$
LANGUAGE plpgsql VOLATILE

ya ustedes pueden aumentar parametros a la funcion , condiciones, ect.

espero que les sirva

Anuncios

2 comentarios en “Verificar si un punto esta dentro de un poligono en postgis

  1. hello there and thank you for your information – I’ve definitely picked up something new from right here. I did however expertise some technical points using this web site, as I experienced to reload the site many times previous to I could get it to load properly. I had been wondering if your web hosting is OK? Not that I am complaining, but sluggish loading instances times will very frequently affect your placement in google and can damage your high-quality score if ads and marketing with Adwords. Well I am adding this RSS to my email and can look out for much more of your respective interesting content. Ensure that you update this again very soon.

  2. Excellent website. A lot of helpful information here.
    I am sending it to a few buddies ans additionally sharing in delicious.
    And naturally, thank you to your effort!

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s