2017-01-30 6 views
1

Ich habe Pandas Array, die in jeder Zeile GPS-Koordinaten enthalten und ich möchte die Geschwindigkeitsbegrenzung für diese Koordinaten herausfinden. Für dieses Problem verwende ich HERES Karten API wie folgt.Python Anfrage für hier Karte api

for index, row in df2.iterrows(): 
    waypoint = df2['Latitude'] +','+df2['Longitude'] 
    payload = {'waypoint': waypoint, 'app_id': 'DemoAppId01082013GAL', 'app_code': 'DemoAppId01082013GAL'} 
    r = requests.post('https://route.cit.api.here.com/routing/7.2/getlinkinfo.json', params=payload) 
    df2['res'] = r.text 

Aber wenn ich will mehr als 300 Zeilen gehen, als ich erhalten Antwort wie:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> 
<html><head> 
<title>414 Request-URI Too Large</title> 
</head><body> 
<h1>Request-URI Too Large</h1> 
<p>The requested URL's length exceeds the capacity 
limit for this server.<br /> 
</p> 
</body></html> 

Ich benutze diese API https://developer.here.com/api-explorer/rest/routing/link-information-for-a-location

Vielen Dank für Hilfe.

+0

vielleicht können Sie nicht mehr als 300 Anfragen pro Tag ohne zu bezahlen. – furas

+0

für mich kann diese Methode nur einen "Wegpunkt" verwenden, aber Sie verwenden alle Daten von 'df2' als' Wegpunkt' - vielleicht sollten Sie 'waypoint = row ['Latitude'] + ',' + row ['Longitude' verwenden ] 'und' row ['res'] = r.text' – furas

+0

Es war dieses Problem, ich sollte nur eine Zeile verwenden, nicht ganze Spalte in DF2. Danke für die Hilfe!!!!!!! – crash40

Antwort

0

params Argument zu requests.post() Parameter zu URL hinzugefügt. Jeder Server hat eine Begrenzung für Zeichen, die als URL angegeben werden können. Fehlermeldung zeigt es deutlich an.

Sie erhalten index und row in der Schleife, aber verwenden Sie sie nicht. Stattdessen wird df2 verwendet, scheint ein Fehler zu sein.

Auf jeden Fall können Sie das Debuggen einfach nur durch diesen Druck waypoiny

0

Diese Methode kann nur ein waypoint verwenden, aber Sie verwenden, um alle Daten von df2 als waypoint - Sie sollten

waypoint = row['Latitude']+','+row['Longitude'] 

und

verwenden
row['res'] = r.text