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

Rad*_*Hex 2 python django geolocation

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

但我不确定实现这一目标的一些好方法是什么.


我遵循一条简单的路线,我实施了一个国家和城市模型.

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

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

  • 数据库很容易被污染

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


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

Dan*_*ane 7

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

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

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

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