Я исследую эту тему. Насколько я обнаружил, координаты, которые вы получаете из библиотеки геопы, имеют формат SRID 4326, поэтому вы можете без проблем сохранять их в виде поля геометрии. Это будет пример модели GeoDjango с использованием геометрии:
class Landmark(models.Model):
point = models.PointField(spatial_index = True,
srid = 4326,
geography = True)
objects = models.GeoManager()
Кстати, будьте очень осторожны, передавая широту и долготу в PointField, именно в этом порядке. geopy возвращает координаты широты / долготы, поэтому вам нужно будет повернуть их вспять.
Для преобразования точек в одной системе координат в другую мы можем использовать GEOS с GeoDjango. В этом примере я преобразую точку в 4326 в знаменитую проекцию Google 900913:
from django.contrib.gis.geos import Point
punto = Point(40,-3)
punto.set_srid(900913)
punto.transform(4326)
punto.wkt
Out[5]: 'POINT (0.0003593261136478 -0.0000269494585230)'
Таким образом, мы можем хранить координаты в проекционных системах, которые будут иметь более высокую производительность по математике.
Для отображения точек на карте Google в интерфейсе администратора сайта. Мы можем использовать эту замечательную статью .
Я решил продолжить с типами географии, и я буду преобразовывать их в будущем, если мне нужно будет улучшить производительность.