2010-10-27 32 views
2

我希望能夠將各種模型(場地,地點,地標)與城市/國家相關聯。讓Django地理位置感知的好方法? - Django /地理位置

但我不確定實現它的一些好方法是什麼。


我下面一個簡單的路線

,我實現了一個國家和城市的模型。

每當提到新的城市或國家時,它都會自動創建。

不幸的是我有各種各樣的問題:

  • 數據庫可以很容易地被污染

  • 的Django有沒有真正的知識是什麼那些城市/國家真的是


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

+0

http://stackoverflow.com/questions/2053971/looking-for-python-django-framework-to-query-geolocation-data-in-db可能的副本 – 2010-10-27 17:06:27

回答

7

一個好的起點是從Geonames這樣的服務獲取位置數據集。還有GeoDjango出現在this question。 當您遇到新的位置名稱時,請在添加它們之前針對較大的數據集檢查它們。對於你的第二點,你需要將它設計到你的對象模型中並相應地編寫你的代碼。

這裏是你可能要考慮一些其他的東西:

  • 別名&縮寫
    • 這些拿出更多的比你想象。人們經常使用非官方城鎮的郊區或街區名稱。你也可以考慮像洛杉磯MTL蒙特利爾MT。森林 - >登上森林,聖VS(ST ST ST-)等
  • 模糊搜索
    • 仰望城市的名字是當拼寫差異佔容易得多。這也有助於減少同一地點重複名稱的數量。
    • 您可以預先計算數據集中城市的SoundexDouble Metaphone值。執行查找時,計算搜索項的值並與預先計算的值進行比較。這對英語最有效,但你可能會在其他浪漫語言衍生品方面取得成功(不確定你的選擇超出了這些範圍)。
  • 位置當量/納入
    • 能夠確定布魯克林區是紐約市的一個行政區。

在這一天結束,這是一個很難的問題,但如果將這些建議應大幅降低數據損壞的,你必須處理量的其它頭痛。

0

從yahoo和谷歌地理編碼數據集可以是一個很好的起點,也可以看看django中的geopy庫。

+0

谷歌或雅虎是否提供他們的數據集供下載?據我所知,它只是一個在線API。 [MaxMind GeoIP](http://www.maxmind.com/app/ip-location)和[GeoNames](http://download.geonames.org/export/dump/)有數據供下載。 – 2012-06-21 05:45:19