如果我有一组坐标,我怎样才能得到国家,只有 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 库?的主要内容,如果未能解决你的问题,请参考以下文章

我怎样才能只读取我的字典的一个值?

给定纬度/经度坐标,我们如何找出城市/国家?

我怎样才能获得每个国家的最大值

我2015年参加高考,NOI怎样才能保送,三等奖行吗?

如何将 Typescript 定义添加到 Express req 和 res

arcMAP添加坐标