没有外部API的情况下如何通过坐标获取国家名称?

问题描述

我正在寻找什么?

我正在寻找一个具有方法/模块的python库,该方法/模块无需连接外部API即可获取坐标并返回国家/地区名称

为什么?

我有一个熊猫行df,其中有很多行(更多的是10000),我不想为每行发送请求。

我现在要这样做:

from geopy.geocoders import ArcGIS
...
...
...

geolocator = ArcGIS(scheme='http')

    for index,row in df.iterrows():

        if math.isnan(row['latitude']) or math.isnan(row['longitude']):
            continue
        else:
            try:
                location = geolocator.reverse((row['latitude'],row['longitude']),timeout=30)
                # takes the country
                location = str(location)
                if len(location.split(",")) == 4:
                    country = location.split(",")[3][1:]
                    df.at[index,'country'] = country

如果可以针对所有行发送一个请求,则仍然可以

解决方法

似乎没有现成的库,但是在没有外部API的情况下实现此目的的一种可能解决方案是:

,

如果可以针对所有行发送一个请求,则仍然可以

我认为这是依赖于API的,并且我认为没有人会允许这样的东西(尽管如此,最后一个词取决于每个API的文档)。

话虽如此,但我不明白您如何避免每次输入一个请求。

一种可能性是评估所需的信息粒度,然后决定是否可以使用相同的结果来填充多行,但这又需要做一些额外的工作。 / p>

我曾经不得不做完全相同的事情,尽管这有点乏味,但我能找到的最佳解决方案是提出所有请求。这里有一些想法可能会有所帮助:

  1. 您可以将数据拆分为多个块,以便在出现问题时对其进行管理。
  2. 定期将结果保存到磁盘
  3. 您可以考虑在Google Colab或Kaggle上运行代码,因此,您不必依赖自己的PC来运行,也不必在任务完成时中断连接(我发现这是一个巨大的优势-我不希望这样做)不想依靠我的电脑或完成耗时的任务;))。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...