В проекте, разработанном на
Django, есть задания, которые прикреплены к определенным координатам. Необходимо реализовать сортировку заданий по дистанции от пользователя до задания. Для этого было решено использовать
PostGIS, но почитав
документацию, стало понятно, что для работы с
PostGIS, необходимо использовать движок
django.contrib.gis.db.backends.postgis:
DATABASES = {
'default': {
'ENGINE': 'django.contrib.gis.db.backends.postgis',
'NAME': 'geodjango',
'USER': 'geo',
}
}
Вопрос заключается в следующем: имеет ли смысл создать отдельную базу данных, которая будет поддерживать
PostGIS и работать через движок, описанный выше? Или работать только с одной базой и через один движок
django.contrib.gis.db.backends.postgis?
Понимаю, что можно сделать стандартными средствами
Postgres'а:
CREATE OR REPLACE FUNCTION distance(lat1 FLOAT, lon1 FLOAT, lat2 FLOAT, lon2 FLOAT) RETURNS FLOAT AS $$
DECLARE
x float = 69.1 * (lat2 - lat1);
y float = 69.1 * (lon2 - lon1) * cos(lat1 / 57.3);
BEGIN
RETURN sqrt(x * x + y * y);
END
$$ LANGUAGE plpgsql;
но так не пойдет.