我正在学习如何使用Geo Django。当用户注册时,我将纬度和经度信息保存如下:
from django.contrib.gis.db import models
from django.contrib.gis.geos import Point
class GeoModel(models.Model):
"""
Abstract model to provide GEO fields.
"""
latitude = models.FloatField(blank=True, null=True, verbose_name='Latitude')
longitude = models.FloatField(blank=True, null=True, verbose_name='Longitude')
location = models.PointField(blank=True, null=True)
class Meta:
abstract = True
def save(self, *args, **kwargs):
if self.latitude and self.longitude:
self.location = Point(float(self.latitude), float(self.longitude))
super(GeoModel, self).save(*args, **kwargs)
接下来我想添加一个名为city
的新字段,**我想要存储基于给定的经纬度详细信息的城市“名称”,例如伦敦。
我看过了django-cities
,它保存了从Geo Name获取的城市数据库,但这似乎太过复杂并且不兼容Python 3,因此对我来说不可行。我看到了一个名为geopy 的包,但这似乎完全替代了Geo Django,并使用具有限制的Google API。
我想坚持使用Geo Django 并以某种方式进行查找,以便根据经度和纬度找到城市名称,那么我的选择是什么?比如...
- 找到一种方法将http://www.geonames.org/数据安装到django-cities中,因为django-cities无法在Python 3和Django 1.8.x上工作。
- 以某种方式使用Geo Django来使用数据进行查找?(不确定如何做到这一点)
以上是否是正确的处理方式?如果是,那么我如何将数据导入我的数据库,然后使用Geo Django进行查找以找到城市名称?