Ниже приведен код, который дает название дороги и тип дороги (шоссе, служебная дорога и т. Д.) С помощью Overpy API из файла csv. Каждый файл содержит много строк (295741 рядов), и когда я пытаюсь запустить код, он застревает примерно на 3000 строк.
Можно ли обработать файл партиями, чтобы можно было обработать весь файл?
import overpy
import pandas as pd
import time
import os
root = r'C:/Users/name/Documents/data'
fstem = 'sample'
fname = fstem+'.csv'
with open(os.path.join(root, fname)) as f:
df = pd.read_csv(f)
#df.sort_values(by=['cvdt35_timestamp_s'],inplace=True)
print('# of records = '+str(len(df)))
api= overpy.Overpass()
queries = []
names = []
highways =[]
results = []
df['Name']=''
df['Highway'] =''
radius = 10
for row in df.index:
query = ('way["highway"](around:{},{},{}); out body;').format(radius,df.gps_lat_dd.iloc[row], df.gps_lon_dd.iloc[row])
queries.append(query)
for i in range(len(queries)):
result = overpy.Result()
query = queries[i]
print(str(i)+', '+query)
while True:
try:
result = api.query(query)
break
except overpy.exception.OverpassTooManyRequests:
print('OverpassTooManyRequests')
time.sleep(10*6)
except overpy.exception.OverpassBadRequest:
break
if result:
results.append(result)
else:
results.append('NAN')
# results.append(result)
names = []
highways = []
for result in results:
n1 = []
h1 = []
if type(result) is not str:
for way in result.ways:
name = way.tags.get("name", "n/a")
n1.append(name)
highway = way.tags.get("highway", "n/a")
h1.append(highway)
names.append(','.join(n1))
highways.append(','.join(h1))
else:
names.append('')
highways.append('')
df['Name']=names
df['Highway']=highways
fname = fstem+'_op.csv'
df.to_csv(os.path.join(root,fname),header=True,index=False)
Пример данных
RecordID cvdt35_bus_r GPS_Longitude_Degrees GPS_Longitude_Minutes GPS_Longitude_Min_dec gps_lat_dd gps_lon_dd decimal
876 2 -83 10 0.8668 42.30721 -83.18111333 0.80899
877 2 -83 10 0.8668 42.30721167 -83.18111333 0.2055
878 2 -83 10 0.867 42.30721333 -83.18111667 0.56226
879 2 -83 10 0.8673 42.30721667 -83.18112167 0.27893
880 2 -83 10 0.8675 42.30722 -83.181125 0.8276
881 2 -83 10 0.8676 42.30722 -83.18112667 0.15108
882 2 -83 10 0.8676 42.30722167 -83.18112667 0.72718
883 2 -83 10 0.8675 42.30721667 -83.181125 0.89037
884 2 -83 10 0.8675 42.30721667 -83.181125 0.95866
885 2 -83 10 0.8675 42.30721667 -83.181125 0.95351
886 2 -83 10 0.8675 42.30721667 -83.181125 0.91884
887 2 -83 10 0.8675 42.30721667 -83.181125 0.97088
888 2 -83 10 0.8675 42.30721667 -83.181125 0.92894
889 2 -83 10 0.8675 42.30721667 -83.181125 0.92224
890 2 -83 10 0.8675 42.30721667 -83.181125 0.02049
Нет отображаемой ошибки,код просто останавливается. Заранее спасибо