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