如何解决没有外部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的情况下实现此目的的一种可能解决方案是:
-
将自然地球边界数据下载为shapefile-Locator Strategies
-
使用geopandas将边界shapefile加载到脚本中-https://www.naturalearthdata.com/downloads/10m-cultural-vectors/
-
在多边形测试中为每个纬度点做点,以获取与该点相关的国家-https://geopandas.org/io.html
如果可以针对所有行发送一个请求,则仍然可以
我认为这是依赖于API的,并且我认为没有人会允许这样的东西(尽管如此,最后一个词取决于每个API的文档)。
话虽如此,但我不明白您如何避免每次输入一个请求。
一种可能性是评估所需的信息粒度,然后决定是否可以使用相同的结果来填充多行,但这又需要做一些额外的工作。 / p>
我曾经不得不做完全相同的事情,尽管这有点乏味,但我能找到的最佳解决方案是提出所有请求。这里有一些想法可能会有所帮助:
- 您可以将数据拆分为多个块,以便在出现问题时对其进行管理。
- 定期将结果保存到磁盘
- 您可以考虑在Google Colab或Kaggle上运行代码,因此,您不必依赖自己的PC来运行,也不必在任务完成时中断连接(我发现这是一个巨大的优势-我不希望这样做)不想依靠我的电脑或完成耗时的任务;))。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。