如果我有一组坐标,我怎样才能得到国家,只有 Requests 库?
Posted
技术标签:
【中文标题】如果我有一组坐标,我怎样才能得到国家,只有 Requests 库?【英文标题】:If I have a set of coordinates, how can I get the country, only with the Requests library? 【发布时间】:2019-06-04 22:48:49 【问题描述】:我需要获取一组坐标来自的国家/地区: 示例:
coords=[41.902782, 12.496366.]
output:
Italy
我知道这可以通过使用其他库来实现,但我需要知道是否有办法只使用 requests 库。(json 是也可用) 谢谢。
【问题讨论】:
您需要使用某种 API 或服务来实现此目的。请求只是帮助你,你知道,提出请求。我建议查看Google APIs 进行地理编码。它们易于设置并具有良好的入门指南 另外,你被这两个库限制的原因是什么? 唯一的问题是您必须付费才能访问 google api。 uni的挑战,虽然我不知道是否真的可以在没有任何其他库的情况下做到这一点,如果不可能,那么我想我们可以使用其他库哈哈 我已经有一段时间没有使用它们了,但是它们曾经在某个阈值下是免费的。试试this,它有免费套餐。 我还有一个问题,我不能只得到国家,因为当我使用字典中的“diplay_id”键时,它会将整个地址打印为字符串。当我尝试使用“地址”键,然后使用“国家”键时,我得到“地址”的键错误 【参考方案1】:正如@Razdi 所说,您将需要一个 API 来获取您的坐标并返回一个位置。
这叫reverse geocoding。
将 Requests 库想象为浏览器 URL 路径。它所能做的就是获取一个网站的地址。但是,如果地址是正确的,并且需要某些参数,那么您可以访问值:
>>> import requests
>>> url = 'https://maps.googleapis.com/maps/api/geocode/json'
>>> params = 'sensor': 'false', 'address': 'Mountain View, CA'
>>> r = requests.get(url, params=params)
>>> results = r.json()['results']
>>> location = results[0]['geometry']['location']
>>> location['lat'], location['lng']
你想要的是这样的:
import geocoder
g = geocoder.google([45.15, -75.14], method='reverse')
但是你不能使用这个包......所以你需要更详细:
导入请求
def example():
# grab some lat/long coords from wherever. For this example,
# I just opened a javascript console in the browser and ran:
#
# navigator.geolocation.getCurrentPosition(function(p)
# console.log(p);
# )
#
latitude = 35.1330343
longitude = -90.0625056
# Did the geocoding request comes from a device with a
# location sensor? Must be either true or false.
sensor = 'true'
# Hit Google's reverse geocoder directly
# NOTE: I *think* their terms state that you're supposed to
# use google maps if you use their api for anything.
base = "http://maps.googleapis.com/maps/api/geocode/json?"
params = "latlng=lat,lon&sensor=sen".format(
lat=latitude,
lon=longitude,
sen=sensor
)
url = "baseparams".format(base=base, params=params)
response = requests.get(url)
return response.json()['results'][0]['formatted_address']
Code snippet taken and modified from here.
【讨论】:
以上是关于如果我有一组坐标,我怎样才能得到国家,只有 Requests 库?的主要内容,如果未能解决你的问题,请参考以下文章