保存geopy地理编码会在运行时应用输出吗?

问题描述

我正在使用Nominatim对大约7k个地址的数据帧进行地理编码。

我正在使用 loc = addresses.progress_apply(geolocator.geocode,timeout=1000000).apply(lambda x: eval_results(x)) 但我希望能够在运行时为此保存输出。目前,如果由于某种原因导致崩溃,则它不会保存任何内容,并且会丢失所有最终处理的坐标。

有更好的方法吗?例如,我能否以某种方式使for循环遍历数据帧中的每个地址,并将坐标保存在其他数据帧/列表中,并在其运行时将其保存?

地理编码非常怪异,我只想保存由于某种原因而崩溃的数据帧上的进度。

好奇的完整代码

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
from geopy.geocoders import Nominatim
import math
import cartopy.feature as cfeature
from geopy.extra.rate_limiter import RateLimiter

from tqdm import tqdm
tqdm.pandas()
df = pd.read_csv('db_data.csv')
geolocator = Nominatim(user_agent="nyc_re_proj")
geocode = RateLimiter(geolocator.geocode,min_delay_seconds=1)
batch = []
df.fillna({'zip_code':-1},inplace=True)
addresses = df.address.str.split(",",expand = True)[0] + "," + df['zip_code'].astype(int).astype(str)

def eval_results(x):
     try:
         return (x.latitude,x.longitude)
     except:
         return (-1,-1)

#loc = addresses.progress_apply(lambda x: geocode(x))
loc = addresses.progress_apply(geolocator.geocode,timeout=1000000).apply(lambda x: eval_results(x))
coordinates = pd.DataFrame.from_records(loc,columns=['longitude','latitude'])
coordinates.to_csv("coordinates.csv",index = False)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)