2013-05-30 154 views
0

我想編寫一個簡單的Java程序,給予城市它將根據經緯度計算它們之間的距離。緯度和經度Java

但我無法在互聯網上的任何地方找到世界各地的城市和他們的經濟和長期數據庫。我發現最近的是:http://dev.maxmind.com/geoip/legacy/geolite,但這只是美國。

有誰知道的地方在哪裏可以找到這些數據,或者以另一種方式做,如果這樣的數據不能被發現?

我在寫這個程序的原因只是爲了瞭解在Java中處理數據,並使用和存儲對象 - 螺母我無法找到任何要處理的數據!

在此先感謝!

+0

的可能重複[緯度經度數據庫(http://stackoverflow.com/questions/23572/latitude-longitude-database) – Joni

回答

2

將地址(例如「1600劇場大道,山景,CA」)轉換爲地理座標(例如緯度37.423021和經度-122.083739)的過程被稱爲地理編碼

您可以將已知的地名/緯度列表編碼到您的應用中,在運行時讀取它們並在需要時通過它們進行搜索,也可以使用在線地理編碼服務,如Google Geocoding

+0

謝謝,這是真正有用的和明確的, 我硬是花了幾個小時就谷歌,你的回答總結了我真正想要的東西 - 謝謝! – user2076554

+0

@ user2076554:u r wc –

0

您可以使用開放街道地圖的API,Nominatim,像這樣的查詢(假設XMLReader的是一個簡單的XML解析器):

try { 
     URL osm = new URL("http://nominatim.openstreetmap.org/search?format=xml&q=" + city.replaceAll(" ","+")); 
     HttpURLConnection connection = (HttpURLConnection) osm.openConnection(); 
     XMLReader xml = new XMLReader(connection.getInputStream()); 
     connection.disconnect(); 

     lat = xml.getLat(); 
     lon = xml.getLon(); 

    } catch (Exception e) { 

    } 

下面是該查詢倫敦的example