如何在没有来自脚本的 Internet 连接的情况下在 Python 中转发地理编码?

Posted

技术标签:

【中文标题】如何在没有来自脚本的 Internet 连接的情况下在 Python 中转发地理编码?【英文标题】:How to forward geocode in Python without Internet connection from scripts? 【发布时间】:2017-05-01 19:06:51 【问题描述】:

我想将地址转换为纬度和经度。我的计算机没有管理员权限,因此 Python 脚本无法连接到地理编码 API(即 Google、Nominatim 等)。我已经尝试过 PyPi 上可用的地理编码包。

你们都知道直接连接到 API 的任何替代方法吗?反正有离线地理编码吗?我见过用于离线反向地理编码的软件包,但没有看到用于正向地理编码的软件包。从逻辑上讲,我能想到的唯一选择是批量下载数据并在本地进行比较。不过我不确定这是否可行。

感谢任何想法!

【问题讨论】:

您可以在没有管理员权限的情况下发送 HTTP 请求。 是否可以发布一个我可以在脚本中测试的请求的简单示例?我无法使它适用于这个或其他项目。我收到诸如“getaddrinfo failed”之类的错误。 您的系统配置似乎有问题。 您有什么方向可以指点我尝试解决这个问题吗?这是一台工作笔记本电脑,所以我不确定我能做多少配置。 使用命令行“ping google.com”会导致“找不到主机”。所以我相信这是一个网络限制。我也不能直接从网上安装 Python 包。 【参考方案1】:

geopy 可能是你想要的。

>>> from geopy.geocoders import Nominatim
>>> geolocator = Nominatim()
>>> location = geolocator.geocode('1327 Harding Place, Charlotte, North Caroline')
>>> location.latitude, location.longitude
(35.2082683450311, -80.8377261377877)

如果笔记本电脑运行 Windows,可在 https://github.com/geopy/geopy 或 http://www.lfd.uci.edu/~gohlke/pythonlibs/ 购买。

编辑:我刚刚看到你的最后一条评论。将从第二个链接下载的.whl 文件(假设您运行的是 Windows)复制到 CD 或 DVD 并从中安装。

【讨论】:

我尝试了geopy,以及其他地理编码 Python 包。它们都需要通过 URL 连接到 API。这就是我的问题的症结所在 - 如何在没有这种连接的情况下进行地理编码。 感谢安装提示!我可以通过下载 .whl 文件来安装这些软件包(我可以通过浏览器连接到 Internet,但不能通过脚本、命令行等)。不幸的是,这些包在运行时仍然需要该 URL 连接。 你必须知道this:突出显示地址,例如我的答案中的那个。右键单击并选择 Google。点击搜索结果中的地图。在地址的标记上,右键单击并选择“这里有什么”。适用于少量查询。 谢谢 - 这绝对是小数字的选择。不幸的是,我认为我们没有耐心为 16K 查询做到这一点! 看到那个数字让我笑了。

以上是关于如何在没有来自脚本的 Internet 连接的情况下在 Python 中转发地理编码?的主要内容,如果未能解决你的问题,请参考以下文章

来自选项卡按钮的 UIAlertView - 没有 Internet 连接

如何在不使用 sudo 的情况下从终端窗口关闭 Internet 连接?

在 windows xp 中检测到 Internet 连接后如何启动 vbs 脚本? [关闭]

在没有 Internet 连接的情况下手动配置 KnpPaginatorBundle

如何在 Linux 上使用 Bash 脚本检查 Internet 访问?

无法在没有 Internet 连接的情况下运行 Worklight 应用程序