23

我正在使用 python,我需要将“布卢明顿,印第安纳州”等位置映射到 GPS 坐标,以便测量它们之间的距离。您推荐哪些地理编码库/API?也欢迎其他语言的解决方案。

4

9 回答 9

25

Geopy允许您从多种地理编码器(包括 Google、Yahoo、Virtual Earth)中进行选择。

于 2008-12-17T01:56:53.197 回答
9

Google 的网络服务非常易于使用。只需将查询放在 URL 中即可。为了让它更容易/更懒惰,我将无耻地宣传pygeocoder,一个用于谷歌地理编码的 Python 包装器。然后你可以做类似的事情

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

得到一个带坐标的元组。你也可以做类似的事情

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

或者

Geocoder.geocode("sushi, San Francisco")[0].postal_code
于 2010-12-22T21:45:21.790 回答
8

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

于 2008-12-17T01:34:24.893 回答
3

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

于 2008-12-17T01:45:43.687 回答
2

你可以看看GeoLite City。它是免费的(GPL),但他们说这不是最准确的。

在 25 英里半径范围内,美国在国家一级超过 99.5%,在城市一级超过 79%

这仍然可能适合您,具体取决于您的需求。

于 2008-12-17T01:21:04.953 回答
0

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

于 2008-12-17T03:25:52.080 回答
0

USC WebGIS 地理编码器( https://webgis.usc.edu ) 是免费的。它具有您可以从脚本调用的 API,或者您可以上传和处理数据库(mdb、csv 等)。准确度级别取决于您的地址在哪里。例如,在洛杉矶县可以使用包裹质心,而在该国其他地区只有 TIGER/Lines 可用。参考数据源的覆盖图目前不可用,但正在开发中。一旦完成更多开发,底层工具计划在未来开源。

于 2009-01-22T04:02:18.020 回答
0

前几天我遇到了http://www.geonames.org/。您实际上可以下载邮政​​编码的所有数据,包括纬度/经度等,甚至用于商业用途,以节省连接到外部资源的麻烦。我认为你可以对城市名称做同样的事情(邮政编码数据已经有与之关联的 subrub 名称)。

可以在此处此处(.NET 示例)中找到有关查找“乌鸦飞翔”距离的一些数学运算 - 直接从点到点。

于 2009-01-22T04:09:10.160 回答
0

您可以更好地查看 Geopy 模块。它非常值得使用,因为它包含 Google 地图、雅虎地图地理编码器,您可以使用它们来实现地理编码。

于 2010-02-09T14:27:37.680 回答