5 votos

Mejor GeoDjango MySQL solución para la distancia de consultas

Estoy usando mysql 5.1.50, de manera que la distancia QuerySet método no está disponible para mí.

Aquí está mi modelo:

class Location(models.Model):
    name = models.CharField(max_length='100')
    point = models.PointField(spatial_index=False)

    objects = models.GeoManager()

Me gustaría encontrar todas las localidades donde el punto es que dentro de 5 millas de otro punto (por ejemplo. test_point). He encontrado algunas maneras posibles de hacer esto, pero estoy seguro de que de todos ellos.

Location.objects.filter(point__within=test_point.buffer(1))

Pero no es claro para mí lo que la unidad es '1'. Parece grados. Puedo convertir de millas a grados, pero parece que hay un limpiador de manera de hacer esto.

3voto

Daniel Auger Puntos 8459

Creó un modelo geográfico sin explicitación de las srid. Esto significa que sus geometrías se predeterminado 4326 (también conocido como WGS84, las unidades son en grados de longitud y latitud).

Si se va a utilizar PostGis < 1.5 para la realización de consultas espaciales utilizando una distancia como el buffer método, usted necesita primero en proyecto su punto de un sistema proyectado (más general es 900913, pero no puede ser mucho mejor, depende de la zona del mundo donde el punto se encuentra), a continuación, crear el buffer polígono, entonces reproyectar atrás el polígono para 4326, finalmente, el uso de este polígono en el plazo de filtro.

Esto debería aplicarse también a MySql, AFAIK.

Si usted tendría la posibilidad de utilizar PostGis 1.5, entonces usted puede crear su modelo con los datos geográficos de tipo mediante el uso de un GeometryField.la geografía de la opción establecida en true [0]

[0] http://docs.djangoproject.com/en/dev/ref/contrib/gis/model-api/#geography

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X