2009-11-26 93 views
0

我正在從一個非統一位置的大表中提取位置實體('麥迪遜廣場花園','聖地亞哥動物園'等)。 我試圖避免在我的新表中的多個實體。 我沒有可靠的街道地址,但我試圖提取本地範圍內的地址。避免地理編碼範圍衝突

我通過在30公里範圍內計算和匹配類似名稱來完成此操作。

我正在瀏覽經過地理編碼的城市表格,併爲每個城市創建緯度/經度範圍,然後提取該範圍內的地點名稱。

以麥迪遜廣場花園爲例。場地會在城市的不同城市重複多次。例如,曼哈頓,紐瓦克等都可能重疊紐約市場範圍,並導致紐約市一些物業的多個參賽項目。

我不能只是設置的範圍,以更小的面積,因爲我會錯過的地點,或更糟的是,有更多的多個條目結束了,因爲我不經常有好的街道/城市/地理編碼的位置(雖然30公里區域似乎工作得很好)。

我希望geohashing能夠讓我創建一個邊界框,在那裏我能夠找到重疊,並避免多個條目,但似乎並非基於我發現的情況。

理想情況下,我相信我正在尋找一個散列或其他值,我可以放入一個單元格中,並存儲一個唯一的位置名稱/散列,這樣mysql不會以多個條目爲單個位置結束。

我沒有正確的街道地址爲每個條目(雖然我確實有一些),所以獲得街道級別的準確性和不使用範圍似乎並不是一個選項。 我也沒有一致的城市名稱,所以我最終與紐約,紐約,曼哈頓等等。但我的城市表格更好,包括紐約,但不是紐約市。

_ED------ EDITED -------------------- 再看一遍Geohash.org後,我認爲我處於正確的軌道上,只是缺少一點粒度。 如果我採用散列的前兩個字符,則這個字符在一個太大的範圍內是一致的。例如,從victoria,bc到portland的所有內容,或者前兩個字符都是'C2'。 然而,去一個3個字符的解決方案, 紐約市開始'dr5'和紐瓦克(這很好),但哈肯薩克是'dr7'。 更糟糕,Vanouver,BC。是'C2b',但里士滿BC的郊區是'C28'。

+0

這聽起來像你只是想爲每個位置最好的城市匹配。一個簡單的方法就是選擇距離您所在地到市中心最短距離的城市。這並不完美,但要做得更好,您可能需要爲每個城市劃定一個邊界多邊形。 – 2009-11-26 21:16:50

+0

是的,我很願意這樣做基思,不幸的是,我認爲我報廢的數據太麻煩了。我正在經歷幾百萬行,並從半結構化數據中挑選出位置。我並不總是有與該位置相關的準確城市名稱,我將如何決定曼哈頓和紐約之間的?那種東西是我認爲讓我沮喪的東西。 – pedalpete 2009-11-26 21:39:12

回答

1

我已經建立了一個類似的服務,需要經緯度座標並返回最近的城市。我使用了http://www.globixdata.com/的數據庫,其中包含城市名稱和經緯度座標以及其他可能相關的數據,如近似人口。如果您的地址或點位於城市之間的邊界,則可能無法獲得100%準確的結果。

我爲數據庫支付了費用,但是您也許可以通過一些調查在網上免費找到類似的東西。