地理编码库

23

我正在使用Python,需要将“Bloomington, IN”这样的位置映射到GPS坐标,以便可以测量它们之间的距离。 您推荐哪些地理编码库/ API?其他语言的解决方案也可以。


1
对于那些没有使用Python但仍然对地理编码感兴趣的人来说,看到更广泛的答案会让我们感到高兴。 - Norman Ramsey
9个回答

25

Geopy 可以让你选择多个地理编码器(包括 Google、Yahoo 和 Virtual Earth)。


9

谷歌的网络服务非常易于使用。只需将查询放入URL中即可。为了使它更加简单/懒惰,我会毫不羞耻地宣传pygeocoder,这是一个Google Geocoding的Python封装程序。然后你就可以像这样做:

print Geocoder.geocode("Montreal, Canada")[0].coordinates

获取一个带有坐标的元组。您还可以执行以下操作:

Geocoder.geocode("sushi, San Francisco").count

或者

Geocoder.geocode("sushi, San Francisco")[0].postal_code

Xster,看起来你的库在对包含变音符号(“éèôœö”)的地址进行地理编码时出现了问题,并且没有返回结果。我想这是因为它将它们进行了URL编码,而Google则接受这些字符。 - Termos

8

Google Maps API 支持地理编码,而Python Cookbook有一个简单的示例,可以从Python中访问它(尽管该示例并没有直接使用API,只是使用了简单的maps.google.com URL)。


3

谷歌和微软都有很容易接入的API。虽然有一些限制,但它们相当慷慨。你可能还想看看http://geocoder.us/。我不知道有哪些好用的免费地理编码服务(我已经花了时间寻找!)。


2
您可以看一下GeoLite City,它是免费的(GPL),但他们说它不是最精确的。
美国国家级别达到99.5%以上,在25英里范围内,城市级别达到79%左右。
根据您的需求,这可能仍然适合您。

0

你可以在Geopy模块中找到更好的解决方案。它非常值得使用,因为它包含Google地图、Yahoo地图地理编码器,您可以使用它们来实现地理编码。


0

USC WebGIS Geocoderhttps://webgis.usc.edu)是免费的。它具有API,您可以从脚本中调用,或者您可以上传和处理数据库(mdb,csv等)。准确度取决于您的地址所在位置。例如,在洛杉矶县,地块重心可用,而在其他国家/地区只有TIGER/Lines。目前没有参考数据源的覆盖范围图,但正在开发中。一旦完成更多开发工作,底层工具计划在未来开源。


0

前几天我发现http://www.geonames.org/。你可以下载所有的邮政编码数据,包括纬度/经度等信息,甚至可以用于商业用途,以避免连接到外部数据源。我认为你可以做同样的事情来获取城市名称(邮政编码数据已经与其子区名称相关联)。

找到“直线距离”的数学计算方法可以在这里herehere (.NET example)中找到。


0

您可以使用像谷歌地图这样的Web API来查找坐标。然后,如果您只需要计算距离(直线距离),有一个公式可以应用以获得相当准确的结果。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接