我目前正在使用一個非常大的地理ip數據庫,這是我從許多免費站點混合構建而成的。如何確定給定長和緯點代表哪個城市?
的問題是 - 所有這些數據庫的映射:地圖:(IP) - >(緯度,長)
我正在尋找的方式,將這些推斷緯度和長點的位置通過解決一個城市,如果可能的話 - 離線。
感謝
我目前正在使用一個非常大的地理ip數據庫,這是我從許多免費站點混合構建而成的。如何確定給定長和緯點代表哪個城市?
的問題是 - 所有這些數據庫的映射:地圖:(IP) - >(緯度,長)
我正在尋找的方式,將這些推斷緯度和長點的位置通過解決一個城市,如果可能的話 - 離線。
感謝
脫機做到這一點,你需要經度/緯度座標,像這樣的數據庫:http://www.maxmind.com/app/worldcities
然後匹配對城市而言,你必須建立一個將其縮小到誤差範圍內的算法。
蠻力法可能是通過使用畢達哥拉斯定理來測量距離,但這會迅速殺死你的CPU。更好的方法可能是首先排除1或更多高於或低於目標緯度/經度的結果,然後對剩餘結果進行測量。
如果你真的需要離線你的信息,你可以從citycsv.com得到城市和地區緯度/經度信息。查詢經緯度數據並獲取城市或地區很容易。然而正如所聲明的那樣,谷歌可以通過他們的在線地理編碼工具從您的手中獲取大量的開銷。
,你可以在突發模式(2.500最多每天)通過cron作業運行谷歌的地理編碼及以上的....
只是一個建議的過程中填寫您的離線數據庫:如果你打算怎麼辦地理編碼,您可能會發現映射到郵政編碼或大都市統計區域(如果您在美國;其他國家/地區的類似想法),那麼您可以參考人口統計信息。但是,請注意您的IP - >(lat,long)數據庫足夠精確,以支持此映射粒度。通常不會。 – Iterator
@iterator - 我使用的是網上自由的東西。我知道它不那麼準確,但那就是我所得到的 – RanZilber