You are not logged in.
- Topics: Active | Unanswered
Announcement
Please create new topics on the new site at community.openstreetmap.org. We expect the migration of data will take a few weeks, you can follow its progress here.***
#1 2013-04-11 12:07:14
- Lübeck
- Member

- Registered: 2009-02-17
- Posts: 2,874
Overpass-Abfrage: NetworkError: 414 Request-URI Too Large
HI !
ich bastel gerade an einer Karte die Punktdaten per Overpass ziehen soll. Nun habe ich das gerade etwas erweitert und bekomme die Meldung:
NetworkError: 414 Request-URI Too Large -
Basis bildet der Abfragecode von Netzwolf aus der popupmarker.js und sieht im Aufbau wie folgt aus:
//------------------------------------------------------------
keyValues: [
{key: 'vending', value:'cigarettes'},
{key: 'vending', value:'excrement_bags'},
{key: 'vending', value:'condoms'},
{key: 'vending', value:'sweets'},
{key: 'vending', value:'bicycle_tube'},
{key: 'vending', value:'telephone_vouchers'},
{key: 'advertising', value:'billboard'},
{key: 'advertising', value:'column'},
{key: 'emergency', value:'aed'},
{key: 'emergency', value:'fire_hydrant'},
{key: 'shop', value:'bakery'},
{key: 'shop', value:'butcher'},
{key: 'medical', value:'aed'},
{key: 'traffic_signals:vibration', value:'yes'},
{key: 'traffic_signals:vibration', value:'no'},
{key: 'amenity', value:'fuel'},
{key: 'amenity', value:'fast_food'},
{key: 'amenity', value:'restaurant'},
{key: 'amenity', value:'pharmacy'},
{key: 'amenity', value:'emergency_access_point'},
{key: 'amenity', value:'emergency_phone'},
{key: 'amenity', value:'veterinary'},
{key: 'amenity', value:'waste_basket'},
{key: 'amenity', value:'clock'},
{key: 'amenity', value:'telephone'},
{key: 'amenity', value:'post_office'},
{key: 'amenity', value:'recycling'},
{key: 'historic', value:'milestone'},
{key: 'historic', value:'boundary_stone'},
{key: 'tourism', value:'hotel'},
{key: 'waste_basket:excrement_bags', value:'yes'},
{key: 'wikipedia'},
{key: 'image'}
],Daraus wird die Abfrage:
Ist da vielleicht schon was verkehrt? gibt es einen Trick vielleicht die Daten in größerem Umfang abzufragen sprich den Aufbau der URL zu verkürzen ????
Gruß Jan :-)
Redmi Note 9 Pro mit Android 11, Tablet Android 8.1, PC: Win10
Offline
#2 2013-04-11 12:50:34
- SammysHP
- Member

- From: Celle, Germany
- Registered: 2012-02-27
- Posts: 1,707
- Website
Re: Overpass-Abfrage: NetworkError: 414 Request-URI Too Large
Wird POST unterstützt? Über GET wird das jedenfalls nichts.
Offline
#3 2013-04-11 13:04:36
- Lübeck
- Member

- Registered: 2009-02-17
- Posts: 2,874
Re: Overpass-Abfrage: NetworkError: 414 Request-URI Too Large
hi !
danke für den Hinweis. Werde mal eine eMail an Netzwolf schreiben.
Gruß Jan :-)
Redmi Note 9 Pro mit Android 11, Tablet Android 8.1, PC: Win10
Offline
#4 2013-04-11 14:57:15
- EvanE
- Member
- Registered: 2009-11-30
- Posts: 5,716
Re: Overpass-Abfrage: NetworkError: 414 Request-URI Too Large
ich bastel gerade an einer Karte die Punktdaten per Overpass ziehen soll. Nun habe ich das gerade etwas erweitert und bekomme die Meldung:
NetworkError: 414 Request-URI Too Large -Basis bildet der Abfragecode von Netzwolf aus der popupmarker.js und sieht im Aufbau wie folgt aus:
//------------------------------------------------------------ keyValues: [ {key: 'vending', value:'cigarettes'}, {key: 'vending', value:'excrement_bags'}, {key: 'vending', value:'condoms'}, {key: 'vending', value:'sweets'}, {key: 'vending', value:'bicycle_tube'}, {key: 'vending', value:'telephone_vouchers'}, ... ],Daraus wird die Abfrage:
Ist da vielleicht schon was verkehrt? gibt es einen Trick vielleicht die Daten in größerem Umfang abzufragen sprich den Aufbau der URL zu verkürzen ????
Hallo Jan
Du fragst jedes Tagg einzeln ab. Das heißt immer eine BBOX, immer die Nodes usw. Das ist ist ausgesprochen ineffektiv.
Besser und kürzer wäre es je Schlüssel eine Abfrage zu machen und die Werte, die dich interessieren als einen regulären Ausdruck anzugeben. Das wäre a) deutlich kompakter und b) deutlich schneller.
PS: Das Ganze als Link zu Overpass-Turbo hätte den Vorteil, dass man direkt sieht, wie du deine Abfrage gestaltet hast.
Edbert (EvanE)
Offline
#5 2013-04-11 15:14:10
- Lübeck
- Member

- Registered: 2009-02-17
- Posts: 2,874
Re: Overpass-Abfrage: NetworkError: 414 Request-URI Too Large
Halo Edbert,
wie ich schon geschrieben habe greife ich auf die Komponente von Netzwolf zurück - jemanden der mir bei OL sehr viel geholfen hat und dem ich einiges zu verdanke haben. Ansonsten wären meine Karten nicht da wo diese heute sind.
Leider hat er mir bei der Anfrage zu dem hier gestellten Problem eine klare Absage der Unterstützung erteilt. Schade zumal ich vermute das auch andere Nutzer dieser JS-Datei irgendwann an Grenzen stoßen werden.
Deinen Hinweis mit der vereinfachung der Abfrage werde ich mir mal ansehen und wenn ich dann weiß wie die effektivere URL aufgebaut sein muss werde ich das einbauen. Damit sollten einiges an Zeichen gespart werden und kann diese für andere Objekte nutzen.
Auf overpass-Turbo hatte Netzwolf noch verwiesen - nicht das diese Antwort untergegangen ist.
Gruß Jan :-)
Last edited by Lübeck (2013-04-11 15:15:03)
Redmi Note 9 Pro mit Android 11, Tablet Android 8.1, PC: Win10
Offline
#6 2013-04-11 15:29:36
- TEL0000
- Moderator
- From: Berlin
- Registered: 2008-06-11
- Posts: 968
Re: Overpass-Abfrage: NetworkError: 414 Request-URI Too Large
Kannst du mal einen Link zur vollständigen Javascript-Datei posten?
Offline
#7 2013-04-11 15:50:41
- Lübeck
- Member

- Registered: 2009-02-17
- Posts: 2,874
Re: Overpass-Abfrage: NetworkError: 414 Request-URI Too Large
Hallo Tel0000,
hier die wesentlichen Links - die Seite wird mit
http://www.tappenbeck.net/osm/maps/deu/ … hp?id=9514
geöffnet und ist (nicht am PC wundern wegen der Navigationsreaktion) für Smarty ausgelegt.
Meine o.g. key-value-Definitionen sind auch in dieser Datei hinterlegt.
Die Datei von Netzwolf ist unter http://www.tappenbeck.net/osm/maps/js/p … ers2013.js zu finden und trägt den 2013 zusatz nur aus internen Gründen bei mir.
Ich muss nochmal mich etwas mit der Overpass auseinander setzen und wenn ich weiß wie ich mehrere verschiedene POI in einer Box abfragen kann, wie von Edbert vorgeschlagen (wenn ich ihn richtig verstanden habe) dann muss die Funktion getQueryParams noch auf die optimierte URL angepaßt werden. Ich hoffe, das ich das hinbekomme.
War es das was Du wissen wolltest ?
Gruß Jan :-)
Redmi Note 9 Pro mit Android 11, Tablet Android 8.1, PC: Win10
Offline
#8 2013-04-11 15:50:56
- mmd
- Member
- Registered: 2010-11-06
- Posts: 2,150
Re: Overpass-Abfrage: NetworkError: 414 Request-URI Too Large
Ergänzend zu SammysHP und EvanE:
Compact Overpass QL verwenden: http://overpass-api.de/convert_form.html
Offline
#9 2013-04-11 16:19:57
- TEL0000
- Moderator
- From: Berlin
- Registered: 2008-06-11
- Posts: 968
Re: Overpass-Abfrage: NetworkError: 414 Request-URI Too Large
Versuch mal die OverpassXML-Funktion so umzubauen:
//------------------------------------------------------------
// Baue aus der keyValues eine overpass-Anfrage.
//------------------------------------------------------------
overpassXML: function (keyvalues) {
if (!(keyvalues instanceof Array)) keyvalues = [keyvalues];
var bbox = this.map.getExtent().
transform(this.map.getProjectionObject(),this.map.displayProjection);
var bboxQuery = OpenLayers.String.format (
'(${bottom},${left},${top},${right})',
bbox);
var components = [];
for (var i in keyvalues) {
var keyvalue = keyvalues[i];
var key = keyvalue.key;
if (!key) continue;
var value = keyvalue.value;
var kvlist = [];
kvlist.push ("[");
if (key) kvlist.push ('"' + this.html(key) + '"');
if (value) kvlist.push ('="' + this.html(value) + '"');
kvlist.push ("]");
components.push ('node' + bboxQuery + kvlist.join(' ') + ';');
}
var xml = '[out:json];(' + components.join('') + ');out;';
return xml;
},Das ist jetzt die selbe Abfrage, nur in Overpass QL.
Hab jetzt nicht getestet obs funktioniert, aber das sollte schonmal deutlich kürzer werden.
Ich hab noch nicht gecheckt an welcher stelle des Codes dann tatsächlich die Abfrage ausgeführt wird. Sonst könnte man das noch zu POST ändern.
Offline
#10 2013-04-11 20:04:22
- Lübeck
- Member

- Registered: 2009-02-17
- Posts: 2,874
Re: Overpass-Abfrage: NetworkError: 414 Request-URI Too Large
Hi !
im Zug hatte ich keine Zeit gefunden weiter in Overpass zu lesen und umso mehr war ich über das Posting von TEL000 erfreut. Ich habe dieses in der PHP-Datei von oben eingebunden
hier nochmal: http://www.tappenbeck.net/osm/maps/deu/ … hp?id=9514
und was soll ich sagen - es hat auf anhieb funktioniert!!!
Testweise habe ich beide Anfragen mal ausgewählt ~8300 gegenüber ~3300 Zeichen. Das würde Platz für so manche Parameter mehr bedeuten.
Wie gesagt - ich bin noch nicht weiter eingestiegen aber. In der OL-Abfrage wird immer die Box und dann das Tag übergeben. Wäre nicht noch eine Vereinfachung möglich ? Erst die Box und dann nur noch die Tags?
Nur mal so eine Idee - aber für mich reicht diese Lösung vorerst alle mal aus.
Vielen Dank für Eure Unterstützung an dieser Stelle.
... falls einer von Euch sich die Karte mal angesehen hat - wie findet Ihr diese? Werde diese in nächster Zeit nochmal mehr vorstellen - derzeit werden Flächen allerdings noch nicht ausgewertet.
Gruß Jan :-)
Last edited by Lübeck (2013-04-11 20:19:54)
Redmi Note 9 Pro mit Android 11, Tablet Android 8.1, PC: Win10
Offline
#11 2013-04-11 20:28:33
- mmd
- Member
- Registered: 2010-11-06
- Posts: 2,150
Re: Overpass-Abfrage: NetworkError: 414 Request-URI Too Large
Wie gesagt - ich bin noch nicht weiter eingestiegen aber. In der OL-Abfrage wird immer die Box und dann das Tag übergeben. Wäre nicht noch eine Vereinfachung möglich ? Erst die Box und dann nur noch die Tags?
Das geht wohl nicht, da alle Bedingungen mit UND verknüpft werden. Verschiedene Values zu einem gemeinsamen Key lassen sich aber sehr wohl zusammenfassen, siehe Beschreibung von EvanE weiter oben.
Weiterhin kann man die bbox als Parameter in der URL übergeben und diese bbox in der Overpass QL mehrfach verwenden ohne jedesmal den konkreten Wert hinzuzufügen.
Beispiel: (ich benutze diesen Ansatz selbst in meiner Karte mit PUT-Requests):
bbox: 6.9334988594057,49.21724463386,7.0237069129945,49.23798395454
data: [timeout:2];node["maxweight"~"."](bbox);out;(way["maxweight"~"."][highway~"."](bbox);node(w););out;
=> hier sieht man schön, dass (bbox) mehrfach vorkommt, aber nur einmal als Wert übertragen wird
OpenLayers.Layer.Vector in Verbindung mit einer BBOXStrategy würde das Hinzufügen des bbox-Parameter bspw. schon automatisch erledigen. Wie das mit dem PopupMarker funktioniert, kann ich leider nicht genau beschreiben.
Last edited by mmd (2013-04-11 20:57:57)
Offline
#12 2013-04-11 21:15:11
- TEL0000
- Moderator
- From: Berlin
- Registered: 2008-06-11
- Posts: 968
Re: Overpass-Abfrage: NetworkError: 414 Request-URI Too Large
Wie man das schafft, dass die bbox nur einmal angegeben wird habe ich auch noch nicht verstanden.
In meiner Karte wird für jeden Tag drei Mal die bbox angegeben, weil ich nodes, ways und relations abrufe.
Offline
#13 2013-04-11 21:29:40
- mmd
- Member
- Registered: 2010-11-06
- Posts: 2,150
Re: Overpass-Abfrage: NetworkError: 414 Request-URI Too Large
Wie man das schafft, dass die bbox nur einmal angegeben wird habe ich auch noch nicht verstanden.
In meiner Karte wird für jeden Tag drei Mal die bbox angegeben, weil ich nodes, ways und relations abrufe.
Hier mal eine Beispiel-URL: Overpass API macht einfach ein Suchen-Ersetzen von "(bbox)" mit dem Wert, der im Parameter bbox angegeben wurde.
http://www.overpass-api.de/api/interpreter?data=[out:json][timeout:2];node[maxheight~%22.%22][waterway!~%22.%22][%22waterway:sign%22!~%22.%22][%22seamark:type%22!~%22.%22][%22obstacle%22!~%22bridge%22]%28bbox%29;out;node[%22maxheight:physical%22~%22.%22][waterway!~%22.%22][%22waterway:sign%22!~%22.%22][%22seamark:type%22!~%22.%22][%22obstacle%22!~%22bridge%22]%28bbox%29;out;%28way[maxheight~%22.%22][highway~%22.%22]%28bbox%29;node%28w%29;%29;out;%28way[%22maxheight:physical%22~%22.%22][highway~%22.%22]%28bbox%29;node%28w%29;%29;out;&bbox=6.9148115921021,49.216068088947,7.0451884078979,49.257931139089Offline
#14 2013-04-11 21:40:16
- TEL0000
- Moderator
- From: Berlin
- Registered: 2008-06-11
- Posts: 968
Re: Overpass-Abfrage: NetworkError: 414 Request-URI Too Large
TEL0000 wrote:Wie man das schafft, dass die bbox nur einmal angegeben wird habe ich auch noch nicht verstanden.
In meiner Karte wird für jeden Tag drei Mal die bbox angegeben, weil ich nodes, ways und relations abrufe.Hier mal eine Beispiel-URL: Overpass API macht einfach ein Suchen-Ersetzen von "(bbox)" mit dem Wert, der im Parameter bbox angegeben wurde.
http://www.overpass-api.de/api/interpreter?data=[out:json][timeout:2];node[maxheight~%22.%22][waterway!~%22.%22][%22waterway:sign%22!~%22.%22][%22seamark:type%22!~%22.%22][%22obstacle%22!~%22bridge%22]%28bbox%29;out;node[%22maxheight:physical%22~%22.%22][waterway!~%22.%22][%22waterway:sign%22!~%22.%22][%22seamark:type%22!~%22.%22][%22obstacle%22!~%22bridge%22]%28bbox%29;out;%28way[maxheight~%22.%22][highway~%22.%22]%28bbox%29;node%28w%29;%29;out;%28way[%22maxheight:physical%22~%22.%22][highway~%22.%22]%28bbox%29;node%28w%29;%29;out;&bbox=6.9148115921021,49.216068088947,7.0451884078979,49.257931139089
Genau das hatte ich auch probiert nachdem ich deinen Post gelesen hatte. Allerdings ohne Erfolg. Ich habe immer ein leeres Ergebnis zurückbekommen.
Jetzt wo ich mich überzeugen konnte, dass dein Query funktioniert, hab ich mir das mal genauer angesehen. Und jetzt weiß ich auch warum mein Versuch nicht funktioniert hat.
In deinem Query sind Lat und Lon vertauscht. Jetzt funktionierts auch bei mir. Danke für den Tipp.
Offensichtlich ist es nicht einfach ein Suchen-Ersetzen ...
Offline
#15 2013-04-11 21:46:01
- mmd
- Member
- Registered: 2010-11-06
- Posts: 2,150
Re: Overpass-Abfrage: NetworkError: 414 Request-URI Too Large
Jetzt wo ich mich überzeugen konnte, dass dein Query funktioniert, hab ich mir das mal genauer angesehen. Und jetzt weiß ich auch warum mein Versuch nicht funktioniert hat.
In deinem Query sind Lat und Lon vertauscht. Jetzt funktionierts auch bei mir. Danke für den Tipp.Offensichtlich ist es nicht einfach ein Suchen-Ersetzen ...
Oh, da hast Du natürlich recht. Das hat man davon, wenn man BBOXStrategy die ganze Arbeit machen lässt ![]()
Offline
#16 2013-04-19 08:09:25
- Lübeck
- Member

- Registered: 2009-02-17
- Posts: 2,874
Re: Overpass-Abfrage: NetworkError: 414 Request-URI Too Large
Moin !
ich wollte nun einmal die noch weiter reduzierte Query in die generierende Funktion aufnehmen - komme aber nicht ganz weiter.
Meine nun generiert Query sieht wie folgt aus:
[out:json];node["vending"="cigarettes"]["advertising"="billboard"]["advertising"="column"]["shop"]["image"](bbox);out;&bbox=53.86846894559171,10.656103544922093,53.8704110318656,10.66983645507753
Ist das richtig - so kann ich diese ja wohl nicht direkt in die Overpass-URL aufnehmen.
Sollte diese dennoch richtig sein, dann würde mich wundern das bei der URL eine unzulässiger Request angemerkt wird:
Der Funktionsteil, der den Request durchführt ist nicht "angefaßt" worden !
Kann einer mal einen Blick auf die query riskieren?
Gruß Jan :-)
Redmi Note 9 Pro mit Android 11, Tablet Android 8.1, PC: Win10
Offline
#17 2013-04-19 12:32:31
- TEL0000
- Moderator
- From: Berlin
- Registered: 2008-06-11
- Posts: 968
Re: Overpass-Abfrage: NetworkError: 414 Request-URI Too Large
Die bbox sollte nicht als Teil des Query behandelt werden, sondern als Teil der URL.
Der richtige Request müsste dann so aussehen:
http://overpass-api.de/api/interpreter? … 4110318656
Offline