2013-05-30 119 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