Найти - Пользователи
Полная версия: GeoDjango сортировка по дистанции
Начало » Django » GeoDjango сортировка по дистанции
1
skyfantom
Привет, читал-читал документацию по GeoDjango. Но так и не придумал.

models.py
class Vacancy(models.Model):
    lat = models.FloatField('Latitude', blank = True)
    lng = models.FloatField('Longitude', blank = True)

Как построить запрос, чтобы отсортировать в порядке близости, без ограничения по дальности дистанции?

Спасибо.
hulygun

Возможно стоит вспомнить математику)))) Пусть lat1 и lng1 это координаты исходной точки, lat2 и lng2 координаты любой точки поверхности, а D - расстояние между этих 2х точек. ^2 - квадрат числа D^2 = |lat1-lat2|^2+|lng1-lng2|^2

В Вашем случае достаточно знать |lat1-lat2|+|lng1-lng2|, и чем меньше это число, тем ближе точки

Ну а дальше используйте где хотите... если во вьюхе, то сортируйте список через lambda

leechuck
используйте стандартный POINT а не отдельно координаты

как то так:

from django.contrib.gis.db import models
class Vacancy(models.Model):
     location = models.PointField()


запрос как то так:

point_from = Point(12.4604, 43.9420)
Vacancy.objects.all().distance(point_from, field_name='location').order_by('distance')

в общем, двигайтесь в таком направлении
leechuck
hulygun

круто ! :) а теперь представим …
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB