在 Python 中获取用户的经纬度
Posted
技术标签:
【中文标题】在 Python 中获取用户的经纬度【英文标题】:Getting the User's Latitude & Longitude in Python 【发布时间】:2013-11-04 23:34:17 【问题描述】:我想在 python 中获取用户的位置。我认为这是可能的,因为谷歌能够做到这一点(https://maps.google.com/ 击中方向键下方的圆圈)。
有人知道怎么做吗?
【问题讨论】:
html5 提供了一些 js 函数,可以让您获取用户位置...但是根据我的经验,从 python 接口是很痛苦的...有很多 api 在线查找用户位置基于IP ...请记住,它不会非常精确 你是在客户端还是服务器上运行python?如果是客户端,是哪种客户端(例如 Windows、Mac、Mobile?) 一般来说,无论你的回答是“一个Web服务器”、“一个Windows桌面应用程序”等等,你的第一步大概应该是search PyPI。有几十个模块用于基于 IP 的地理定位、访问 OS X 的 CoreLocation API 以及您能想象到的一切。 *** 不是获取模块建议的好地方,但如果您开始使用某个模块并遇到困难,它是一个寻求帮助的好地方。 【参考方案1】:如果您想自己动手,有些网站会以各种格式提供有关您的 IP 地址的信息。
http://ipinfo.io/json 会给出这样的结果:
"ip": "12.34.56.78",
"hostname": "XXXXX.com",
"city": "Saint-Lambert",
"region": "Quebec",
"country": "CA",
"loc": "45.5073,-73.5082",
"org": "AS577 Bell Canada",
"postal": "J4P"
就像 Joran 上面所说的那样,这并不准确。我不在圣兰伯特,我在蒙特利尔,但也不是那么远。
您可以在 Python 中使用 urllib2.urlopen 获取它,然后使用 json 模块将其转换为字典。
import json
import urllib2
def location_lookup():
try:
return json.load(urllib2.urlopen('http://ipinfo.io/json'))
except urllib2.HTTPError:
return False
location = location_lookup()
# print city and latitude/longitude
print location['city'] + ' (' + location['loc'] + ')'
对于上面的 JSON 输出,这段 Python 代码会给出
Saint-Lambert (45.5073,-73.5082)
【讨论】:
以上是关于在 Python 中获取用户的经纬度的主要内容,如果未能解决你的问题,请参考以下文章
Python 批量获取地点经纬度坐标,并利用geopandas在地图上绘制经纬度的点