我想知道特定地理坐标与城市列表的距离(“远”表示坐标与城市之间的欧几里德距离,不考虑道路)。为此,我需要为每个位于以色列的城市找到一个边界框。
这篇文章讨论了国家边界框,但我在城市级别需要它们。
除了在地图上手动绘制矩形并提取坐标之外,还有什么方法可以获取一长串城市的这些信息?
您可以在www.mapdevelopers.com/geocode_bounding_box.php找到这些城市的边界框。进入城市会在地图上显示一个方框,并给出每一边的纬度和经度。希望这将为您提供所需的信息。
对于很长的城市列表,请使用Google 地理编码服务。设置完成后,您可以使用任何语言访问 REST API。例如,您可以使用流行的 Python 标准请求库。
或者,您可以使用 Google 自己的 Google Maps Java API、Python API或JavaScript API。其中任何一个都包含 Google 地理编码服务。
在此处查看 Python 和 Java 库的一些简单示例:https ://developers.google.com/maps/documentation/webservices/client-library 。
这是地理编码结果的架构:
results[]: {
types[]: string,
formatted_address: string,
address_components[]: {
short_name: string,
long_name: string,
postcode_localities[]: string,
types[]: string
},
partial_match: boolean,
place_id: string,
postcode_localities[]: string,
geometry: {
location: LatLng,
location_type: GeocoderLocationType
viewport: LatLngBounds,
bounds: LatLngBounds
}
}
边界框位于geometry>viewport
变量中,看起来像这样
"viewport" : {
"northeast" : {
"lat" : 37.4238253802915,
"lng" : -122.0829009197085
},
"southwest" : {
"lat" : 37.4211274197085,
"lng" : -122.0855988802915
}
}
您可以在http://boundingbox.klokantech.com/找到这些城市的边界框。 输入城市/国家将在地图上显示一个框,并给出每一边的纬度和经度。但准确性高于http://www.mapdevelopers.com/geocode_bounding_box.php(感谢@Fred 的回答)
我认为,您不需要边界框,而是城市边界。因为使用边界框,您的分析将非常粗糙,并且要获得边界框,您首先需要一个边界。
如果您现在只有城市列表,则需要获取空间数据,即所有城市的边界。要查找此数据,您可以尝试此链接。我建议检查 Open Street Maps。然后,您可以使用任何 GIS 软件(例如,开源 Quantum GIS)并在那里计算您的点与城市边界之间的欧几里德距离。
希望这可以帮助。