2010-12-05 365 views
1

我們有一個數據庫,它使用Google Maps API進行基於位置的搜索。然而,澳大利亞的州或領土搜索是有問題的,因爲谷歌地圖將這些定位在各州的中心,澳大利亞大多數人口中心都在沿海。使用谷歌地圖的澳大利亞州/領地的經緯度座標數據庫

我們需要在緯度和經度上手工編碼,以便當某人搜索州'NSW'時,數據庫會返回相關結果。有沒有人知道在哪裏可以找到澳大利亞國家邊界的座標列表&地區編碼進入數據庫?

這將節省我們繁忙的程序員很多時間。 在此先感謝。

回答

0

您可以將澳大利亞國家邊界下載爲OpenStreetMap作爲XML文件。請注意,data license要求您分享派生作品。

+0

謝謝Jaime。希望這些解決方案之一將解決這個問題。 – RMW 2010-12-05 08:12:35

0

只是一個想法,實際上可以有一個JavaScript數組與國家的名稱和相關的latlong,你想中心地圖?

所以如果有人在尋找新南威爾士州,那麼你加載-33.833578,151.190872。

function initialize() { 
    var myLatlng = new google.maps.LatLng(-33.833578,151.190872); 
    var myOptions = { 
     zoom: 8, 
     center: myLatlng, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    } 
    var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); 
    } 

讓我知道是否有幫助。否則,正如我在阿德萊德是你可以聯繫我:)

乾杯,

艾夫斯

+0

謝謝你,我會問開發者(誰是前阿德萊德btw)。 – RMW 2010-12-05 08:11:43

2

我叫開發商 - 想我應該談什麼,我們終於做到了實現此功能:

爲了闡明這實際用於什麼,該數據庫用於搜索可能具有地理位置的事件。

起初我發現這個免費的地圖數據:https://www.ga.gov.au/products/servlet/controller?event=GEOCAT_DETAILS&catno=60803

但是,數據很難處理,我們決定使用Google地圖的我的地圖功能(RMW)簡單地生成每個州的基本輪廓。

然後我創建了PNPOLY函數的pl/sql實現,並編寫了搜索代碼來運行PNPOLY函數,比較每個事件的lat和lng與狀態輪廓(從My Maps導出)並僅返回事件在邊界內。

有2個主要的問題是:

  • 城鎮/城市的邊界介乎2個狀態有時被視爲是在錯誤的狀態,由於狀態勾勒出低分辨率。
  • 關注實施效率低下/不雅(儘管沒有進行性能測試)。

除第一個問題 - 城鎮出現錯誤的狀態外,該實施可能會運行良好。

當前實現放棄PNPOLY功能,取而代之的是更簡單的解決方案:

  1. 我添加布爾列事件表 - 一個在澳大利亞每個州/領地。
  2. 當事件進行地理編碼時,我們將狀態名稱從Google Maps API結果中提取出來,然後將其與狀態名稱列表進行比較 - 如果匹配,我們將該狀態的標誌設置爲TRUE。
  3. 當搜索時,狀態限制簡單地變成WHERE in_wa = TRUE(用於搜索西澳大利亞州內的事件)。
  4. 要遷移沒有設置標誌的現有事件,我不想浪費PNPOLY代碼,也不想浪費谷歌地圖的請求,所以我編寫了遷移程序來運行PNPOLY檢查在每個事件上併爲每個事件設置正確的標誌 - 由於上述相同問題,導致一些當前事件設置了錯誤的狀態,但這不會影響未來事件。

您可以在http://collectiveaction.com.au/events的行動中看到它 - 從狀態下拉列表中選擇並單擊「更新搜索結果」。

0

我與大家分享我的要點:XML of state polygons。然而,對於一些州來說,它也帶有許多點,如果你需要匹配一個點與州例如它可能成爲一個性能殺手。如果你想要一個簡單的版本,你可以嘗試使用這個tool自己生成多邊形座標。

希望這能幫助解決某人的痛苦。

相關問題