让 Django 地理位置感知的好方法? - Django/地理位置

Posted

技术标签:

【中文标题】让 Django 地理位置感知的好方法? - Django/地理位置【英文标题】:A good way to make Django geolocation aware? - Django/Geolocation 【发布时间】:2010-10-27 16:00:23 【问题描述】:

我希望能够将各种模型(场地、地点、地标)与城市/国家/地区相关联。

但我不确定有什么好的实现方法。


我正在遵循一条简单的路线,我已经实现了国家和城市模型。

每当提到一个新城市或国家时,它就会自动创建。

不幸的是,我遇到了各种问题:

数据库很容易被污染

Django 并不真正了解这些城市/国家/地区的真正含义


任何提示或想法?谢谢! :)

【问题讨论】:

***.com/questions/2053971/…的可能重复 【参考方案1】:

从Geonames 之类的服务获取位置数据集是一个不错的起点。还有GeoDjango 出现在this question 中。 当您遇到新的位置名称时,请在添加它们之前将它们与更大的数据集进行对比。对于您的第二点,您需要将其设计到您的对象模型中并相应地编写您的代码。

以下是您可能需要考虑的其他一些事项:

别名和缩写 这些问题比您想象的要多。人们经常使用不是官方城镇的郊区或社区的名称。您也可以考虑像 LA -> Los Angeles MTL for Montreal, MT 之类的。 Forest -> Mount Forest、Saint vs (ST st. ST-)等 模糊搜索 如果考虑到拼写差异,查找城市名称会容易得多。这也有助于减少同一地点的重复名称数量。 您可以通过预先计算数据集中城市的Soundex 或Double Metaphone 值来完成此操作。执行查找时,计算搜索词的值并与预先计算的值进行比较。这对英语最有效,但您可能会在其他浪漫语言衍生品上取得成功(不确定您的选择是什么)。 位置等效/包含 能够确定布鲁克林是纽约市的一个自治市镇。

归根结底,这是一个难题,但应用这些建议应该会大大减少数据损坏的数量以及您必须处理的其他问题。

【讨论】:

【参考方案2】:

来自 yahoo 和 google 的地理编码数据集可能是一个很好的起点,还可以看看 django 中的 geopy 库。

【讨论】:

谷歌或雅虎是否提供他们的数据集供下载?据我所知,它只是一个在线 API。 MaxMind GeoIP 和 GeoNames 有数据可供下载。

以上是关于让 Django 地理位置感知的好方法? - Django/地理位置的主要内容,如果未能解决你的问题,请参考以下文章

为本地开发设置 django 和 dj-database-url

Heroku/Django:没有名为 dj_database_url 的模块

在Django中获取页面动态标题的好方法是啥?

使用 Django/Python 将批量 .csv 数据上传到 webapp 的好方法是啥?

Dj中的装饰器和万能的点

PyCharm 创建Django 第一个项目