[pyar] Buscar coordenadas dentro de poligono

Andrés Ramírez andres.ramirez.miori en gmail.com
Mar Mar 6 09:58:03 -03 2018


Cuidado que la funcion de contains sobre GIS de la base de datos, puede que
te retorne true, si el punto se encuentra dentro del minimo rectangulo que
contiene tu poligono, al menos eso hace MySql la funcion MBR_contains
<https://dev.mysql.com/doc/refman/5.7/en/spatial-relation-functions-mbr.html>.
Por lo tanto te puede devolver true para puntos que en verdad no se
encuentra dentro de tu poligono, la funcion de GDal, te respondería mas
precisamente. El siguiente es una porción de codigo que tengo para buscar
todas las areas que contienen un pto, es facilmente de traladar a tu
pregunta

from django.contrib.gis.gdal import OGRGeometry

def areas_por_punto(qs, punto):
    """Retorna areas que contienen un pto

    Keyword arguments:
    qs -- QuerySet con el conjunto de areas donde se desea buscar la
pertenencia del pto
    punto -- Point con latitud y longitud (django.contrib.gis.geos Point)

    """
    areas_prefiltro = qs.filter(geom__contains=punto).all()

    ret = []
    for area in areas_prefiltro:
        # Si el area contiene realmente el pto se agrega como respuesta
        area_gdal = OGRGeometry(area.geom.wkt)
        if area_gdal.contains(OGRGeometry(punto.wkt)):
            ret.append(area)

    return ret

el pto en este caso esta construido de la siguiente forma

punto = Point(float(domicilio.longitud), float(domicilio.latitud))

para las librerias GIS de django tenes que ver aca:
https://docs.djangoproject.com/en/2.0/ref/contrib/gis/install/geolibs/
en si es:


2018-03-06 9:46 GMT-03:00 Marcos Dione <mdione en grulic.org.ar>:

> On Tue, Mar 06, 2018 at 09:37:00AM -0300, Federico Jurio wrote:
> > Bruno,
> >
> > Podés resolverlo con PostGIS usando la función ST_Contains
> > <https://postgis.net/docs/ST_Contains.html>.
>
>     o usaría shapely, así no dependé de postgis. ahora, si ya lo tenés
> instalado, capaz es lo mejor, pero vas a tener que bajar el polígino de
> gmaps (nidea cómo, supongo hay una API) y convertirlo en algo que postgis
> pueda usar (WKB o similar). para eso lo mejorcito es shapely, así que
> supongo qu terminarás con eso.
>
> --
> (Not so) Random fortune:
> The technology industry sees itself as in rebellion against corporate
> America: not corrupt, not buttoned-up, not empty. In fact, a tech company
> can be as corrupt, soulless, and empty as any corporation, but being
> unprofessional helps us maintain the belief that we are somehow different
> from Wall Street.
>             -- Shanley Kane
> _______________________________________________
> Lista de Correo de PyAr - Python Argentina - pyar en python.org.ar
> Sitio web: http://www.python.org.ar/
>
> Para administrar la lista (o desuscribirse) entrar a
> http://listas.python.org.ar/listinfo/pyar
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20180306/db3c0250/attachment.html>


Más información sobre la lista de distribución pyar