让Django地理位置有意识的好方法吗? - Django / Geolocation

时间:2010-10-27 16:00:23

标签: python django geolocation

我希望能够将各种模特(场地,地点,地标)与城市/国家联系起来。

但我不确定实现这个的一些好方法是什么。


我遵循一条简单的路线,我已经实施了国家和城市模式。

每当提到新的城市或国家时,都会自动创建。

不幸的是我有各种各样的问题:

  • 数据库很容易被污染

  • Django并不知道这些城市/国家到底是什么


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

2 个答案:

答案 0 :(得分:7)

一个好的起点是从Geonames等服务获取位置数据集。 GeoDjango中还有this question。 当您遇到新的位置名称时,请在添加之前根据较大的数据集进行检查。对于第二点,您需要将其设计到对象模型中并相应地编写代码。

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

  • 别名&缩略语
    • 这些比你想象的更多。人们经常使用不是官方城镇的郊区或社区的名称。你也可以考虑像洛杉矶这样的人 - >洛杉矶MTL为蒙特利尔,MT。森林 - > Mount Forest,Saint vs(ST st.ST-)等。
  • 模糊搜索
    • 当考虑到拼写的差异时,查找城市名称会容易得多。这也有助于减少同一地点的重复名称数量。
    • 您可以通过预先计算数据集中城市的SoundexDouble Metaphone值来实现此目的。执行查找时,计算搜索项的值并与预先计算的值进行比较。这对英语最有效,但你可能会成功使用其他浪漫语言衍生物(不确定你的选择是什么)。
  • 位置对等/包含
    • 能够确定布鲁克林是纽约市的一个行政区。

在一天结束时,这是一个难题,但应用这些建议可以大大减少数据损坏的数量以及您必须处理的其他麻烦。

答案 1 :(得分:0)

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