题
我正在使用 python,我需要将“布卢明顿,印第安纳州”等位置映射到 GPS 坐标,以便我可以测量它们之间的距离。您推荐哪些地理编码库/API?也欢迎使用其他语言的解决方案。
其他提示
Geopy 让您从几个地理编码器(包括谷歌,雅虎,虚拟地球)选择。
在谷歌的Web服务是非常容易使用。只要把查询的URL。为了使其更容易/懒惰,我会恬不知耻地宣传 pygeocoder ,一个Python包装的谷歌地理编码。然后,你可以做这样的事情。
print Geocoder.geocode("Montreal, Canada")[0].coordinates
得到一个元组具有坐标。你也可以做的东西一样。
Geocoder.geocode("sushi, San Francisco").count
或
Geocoder.geocode("sushi, San Francisco")[0].postal_code
谷歌和微软有API的是非常容易钩到。有一定的局限性,但他们很慷慨。你可能也想看看 http://geocoder.us/ 。我不知道那是什么好任何免费的地理编码服务(和我花时间寻找!)
您可以使用Web API像谷歌地图找到坐标。然后,如果你只需要计算距离(在一条直线上),存在公式你可以申请得到相当准确的结果。
这 USC WebGIS 地理编码器 (https://webgis.usc.edu) 免费。它具有 API,您可以从脚本调用,也可以上传和处理数据库(mdb、csv 等)。准确度级别取决于您的地址所在的位置。例如,在洛杉矶县,可以使用宗地质心,而在美国其他地区,则只能使用 TIGER/Lines。目前还没有参考数据源的覆盖图,但正在开发中。一旦更多的开发完成,底层工具也计划在未来开源。
我碰到 http://www.geonames.org/ 另一天。您实际上可以下载邮政编码的所有数据,包括纬度/经度等,甚至可以用于商业用途,从而无需连接到外部源。我认为您可以对城市名称执行相同的操作(邮政编码数据已具有与其关联的子区域名称)。
一些关于“乌鸦飞翔”距离的数学计算 - 直接从一点到另一点可以找到 这里 和 这里(.NET 示例).
您可以有更好看的Geopy module.And很值得够使用,因为它包含了谷歌地图,雅虎地图地理编码器,使用它可以实现geocodings。