Можно ли сохранить в базе данных вывод geoqueryset.distance геоджанго?
Можно ли сохранить выходные данные набора запросов геоджанго в пространственно включенной базе данных?
https://docs.djangoproject.com/en/dev/ref/contrib/gis/geoquerysets/
один в этом примере отображает все расстояния. возможно ли сохранить его в базе данных или даже использовать значение geoqueryset.distance для дальнейших вычислений?
1 ответ
Да, и то, и другое можно сделать в геоджанго.
Ниже приведен пример того, как вы можете выполнить расчет расстояния без сохранения геометрии:
from django.contrib.gis.geos import Point
pnt = Point(0,0)
pnt.distance(Point(0,1))
Который вернул бы 1.0. API набора запросов Django специально создан для взаимодействия с данными, поэтому вам нужны некоторые постоянные данные, прежде чем наборы запросов станут полезными. Когда у вас есть данные, особенно геопространственные, наборы запросов Django становятся действительно крутыми.
Давайте посмотрим на пример из документов:
Zipcode.objects.filter(poly__distance_gt=(geom, D(m=5)))
Это вернет все почтовые индексы, геометрия которых находится в пределах 5 метров от геома. GeoDjango также добавит поле расстояния к каждому элементу в вашем наборе запросов с вычисленным объектом расстояния. Поскольку django - это просто python, вы можете использовать значения расстояния для любых безумных вычислений, которые вы хотите:
zips = Zipcode.objects.filter(poly__distance_gt=(geom, D(m=5)))
for zip_code in zips:
print zip_code.name, zip_code.distance.m