如何在没有来自脚本的 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