我想用Java写一个简单的程序给城市,它会计算它们之间的纬度和经度之间的距离。
但是我无法在互联网上的任何地方找到世界各地的城市数据库以及它们的纬度和长度。我找到的最接近的是:http://dev.maxmind.com/geoip/legacy/geolite,但这只是美国。
有没有人知道我可以在哪里找到这些数据,或者如果找不到这些数据的话可以选择其他方法?
我正在编写这个程序的原因只是为了学习处理数据以及在Java中使用和存储对象 - 我找不到任何要处理的数据!
提前致谢!!
答案 0 :(得分:2)
将地址(如“1600 Amphitheatre Parkway,Mountain View,CA”)转换为地理坐标(如纬度37.423021和经度-122.083739)的过程称为地理编码。
您可以将已知的地名/纬度列表编码到您的应用中,在运行时读取它们并在需要时搜索它们,或者您可以使用在线地理编码服务,例如Google Geocoding。
答案 1 :(得分:0)
答案 2 :(得分:0)
您可以使用OpenStreeMap的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。