DE:Nominatim
Nominatim (aus dem lateinischen für "namentlich") ist ein Werkzeug, um in OpenStreetMap über den Namen und Adresse nach Objekten zu suchen und eine künstlich erzeugte Adresse dieser Objekte zu erhalten (siehe Georeferenzierung in Wikipedia]). Nominatim ist unter nominatim.openstreetmap.org zu finden. Es wird außerdem in der Suche auf der OpenStreetMap Homepage verwendet. Mehrere Unternehmen bieten den vordefinierten Dienst Nominatim, die Sie über einen bestimmten API aufrufen können (zum Beispiel PickPoint, OpenCage Geocoder,Geokeo Geocoder, LocationIQ oder Geocoding.ai)
Diese Seite bietet eine Bedienungsanleitung. Details zur Arbeitsweise von Nominatim befinden sich in der Nominatim/Development overview. Zusätzlich gibt es eine Seite zu den häufig gestellten Fragen zu Nominatim.
Suche
Nominatim indiziert benannte (oder nummerierte) Karteneigenschaften und eine Untermenge weiterer unbenannter Karteneigenschaften (Kneipen, Hotels, Kirchen, usw. …)
Die Suchbegriffe werden von links nach rechts (vom Speziellen zum Allgemeinen) abgearbeitet und dann von rechts and links, wenn das fehlschlägt. Also wird sowohl Brandenburger Tor, Berlin als auch Berlin, Brandenburger Tor ein Ergebnis liefern.
Kommas sind nicht notwendig, verbessern aber die Suchgeschwindigkeit durch Reduzierung der Komplexität der Suchanfrage. Also wird auch nachfolgende Abfrage funktionieren:
In Gegenden, in denen Hausnummern gepflegt sind, werden diese auch in der Suche verwendet. Der Straßenname muss dabei ausgeschrieben werden:
Spezielle Schlüsselwörter
Einige Schlüsselwörter wurden zur Suche nach speziellen OSM Karteneigenschaften übersetzt (z.B.: Kneipe entspricht amenity=pub). Siehe dazu die aktuelle Liste der speziellen Schlüsselwörter.
Nominatim-Server
https://nominatim.openstreetmap.org/search
Alle Abfragen werden vom Server https://nominatim.openstreetmap.org beantwortet.
https://nominatim.openstreetmap.org/search?<params> https://nominatim.openstreetmap.org/search/<query>?<params>
Es gibt zwei verschiedene Formate, in denen eine Abfrage formuliert werden kann. Dabei wird die eigentliche Query ("was suche ich"?) entweder als Parameter mit q=… oder direkt am Anfang der Abfrage eingegeben.
Parameter
q=<query> Begriff, nach dem gesucht werden soll.
format=[html|xml|json] Ausgabeformat
json_callback=<string> Das Suchergebnis wird im JSON-Format zusätzlich mit <string>( eingeleitet und mit ) beendet. format=json ist erforderlich.
accept-language=<browser language string> Angabe der Sprache, in der die Ergebnisse ausgegeben werden sollen. Überstimmt den im Browser eingestellten Wert. Entweder den im rfc2616 definierten accept-language string oder eine per Komma getrennte Liste der Sprachcodes verwenden.
street=<housenumber> <streetname> city=<city> county=<county> state=<state> country=<country> postalcode=<postalcode> (experimentell) Alternatives Format für strukturierte Abfragen. Diese sind schneller und verbrauchen weniger Ressourcen. Nicht zusammen mit dem Query-Parameter q= verwenden.
countrycodes=<countrycode>[,<countrycode>][,<countrycode>]... Begrenzt die Suche auf ein bestimmtes Land oder mehrere Länder. <countrycode> ist der ISO 3166-1 alpha2 Code; also de für Deutschland oder pg für Papua Neuguinea.
viewbox=<left>,<top>,<right>,<bottom> oder viewboxlbrt=<left>,<bottom>,<right>,<top> Das gewünschte Gebiet, in dem nach Ergebnissen gesucht werden soll.
bounded=[0|1] Beschränkt die Suche auf die aktuelle Bounding Box. Dadurch wird die Suche zugleich auf POI (amenity=) ermöglicht. Eine Suche nach "[pub]" wird normalerweise abgewiesen aber mit bounded=1 wird sie zugelassen.
addressdetails=[0|1] Gibt Details zu den gefundenen Adressen aus.
email=<gültige Mail-Adresse> Wenn sie eine große Anzahl an Suchabfragen abschicken wollen, geben sie bitte ihre Mail-Adresse in der Abfrage an. Alternativ ist das auch über den User-Agent-String möglich. Diese Info wird vertraulich behandelt und nur verwendet um mit ihnen bei Problemen in Kontakt treten zu können. Siehe auch unsere Usage-Policy.
exclude_place_ids=<place_id,[place_id],[place_id]> Wenn bestimmte Osm-Objekte nicht in den Suchergebnissen erscheinen sollen, kann man hier eine Komma-separierte Liste der Place-IDs angeben.
limit=<integer> Begrenzt die Anzahl der Suchergebnisse. Default ist 10.
dedupe=[0|1] Manchmal entsprechen mehre Objekte in OSM dem gleichen Ort/Objekt in der Wirklichkeit, z.B. eine Strasse die in verschiedene OSM Wegen mit unterschiedlichen Merkmalen aufgeteilt wurde. Nominatim versucht, solche Duplikate zu erkennen und nur einen Treffer zurückzugeben. Dies wird durch den dedupe Parameter gesteuert, der standardmässig auf 1 gesetzt ist. Da das Limit aus Gründen der Effizienz vor und nicht nach der Deduplizierung erzwungen wird, ist es möglich das die Deduplizierung dazu führt, dass weniger Ergebnisse als erwartet zurückgibt.
debug=[0|1] Ausgabe von Debug-Informationen.
polygon=[0|1] Gibt zusätzlich die umgebenden Polygone aus. (veraltet, bitte Parameter polygon_* verwenden)
polygon_geojson=1 Ausgabe der Geometrien im GeoJson-Format.
polygon_kml=1 Ausgabe der Geometrien im KML-Format.
polygon_svg=1 Ausgabe der Geometrien im SVG-Format.
polygon_text=1 Ausgabe der Geometrien als "Well Known Text" WKT.
Beispiele
http://nominatim.openstreetmap.org/search?q=135+pilkington+avenue,+birmingham&format=xml&polygon=1&addressdetails=1 http://nominatim.openstreetmap.org/search/135%20pilkington%20avenue,%20birmingham?format=xml&polygon=1&addressdetails=1 http://nominatim.openstreetmap.org/search/gb/birmingham/pilkington%20avenue/135?format=xml&polygon=1&addressdetails=1
<searchresults timestamp="Sat, 07 Nov 09 14:42:10 +0000" querystring="135 pilkington, avenue birmingham" polygon="true"> <place place_id="1620612" osm_type="node" osm_id="452010817" boundingbox="52.548641204834,52.5488433837891,-1.81612110137939,-1.81592094898224" polygonpoints="[['-1.81592098644987','52.5487429714954'],['-1.81592290792183','52.5487234624632'],...]" lat="52.5487429714954" lon="-1.81602098644987" display_name="135, Pilkington Avenue, Wylde Green, City of Birmingham, West Midlands (county), B72, United Kingdom" class="place" type="house"> <house>135</house> <road>Pilkington Avenue</road> <village>Wylde Green</village> <town>Sutton Coldfield</town> <city>City of Birmingham</city> <county>West Midlands (county)</county> <postcode>B72</postcode> <country>United Kingdom</country> <country_code>gb</country_code> </place> </searchresults>
Reverse Geokodierung / Adresskodierung
Reverse Geocodierung erzeugt aus der Angabe einer Postion (Breitengrad und Längengrad) eine Adresse. Der optionale Zoom Parameter bestimmt den Detaillierungsgrad, passend zum Openlayers Zoom Level.
Parameter
http://nominatim.openstreetmap.org/reverse?<query>
format=[xml|json] Ausgabeformat
json_callback=<string> Das Suchergebnis wird im JSON-Format zusätzlich mit <string>( eingeleitet und mit ) beendet. format=json ist erforderlich.
accept-language=<browser language string> Angabe der Sprache, in der die Ergebnisse ausgegeben werden sollen. Überstimmt den im Browser eingestellten Wert. Entweder den im rfc2616 definierten accept-language string oder eine per Komma getrennte Liste der Sprachcodes verwenden.
osm_type=[N|W|R] osm_id=<value> Angabe eines OSM-Objektes (Node, Way oder Relation, dessen Adresse gefunden werden soll. Wenn möglich, dieses anstelle von Lat/Lon angeben
lat=<value> lon=<value> Koordinaten der zu findenden Adresse
zoom=[0-18] Grad der Genauigkeit: 0 für Land und 18 für Gebäude
addressdetails=[0|1] Gibt Details zu den gefundenen Adressen aus.
email=<gültige Mail-Adresse> Wenn sie eine große Anzahl an Suchabfragen abschicken wollen, geben sie bitte ihre Mail-Adresse in der Abfrage an. Alternativ ist das auch über den User-Agent-String möglich. Diese Info wird vertraulich behandelt und nur verwendet um mit ihnen bei Problemen in Kontakt treten zu können. Siehe auch unsere Usage-Policy.
Beispiele
http://nominatim.openstreetmap.org/reverse?format=xml&lat=52.5487429714954&lon=-1.81602098644987&zoom=18&addressdetails=1
<reversegeocode timestamp="Fri, 06 Nov 09 16:33:54 +0000" querystring="..."> <result place_id="1620612" osm_type="node" osm_id="452010817"> 135, Pilkington Avenue, Wylde Green, City of Birmingham, West Midlands (county), B72, United Kingdom </result> <addressparts> <house>135</house> <road>Pilkington Avenue</road> <village>Wylde Green</village> <town>Sutton Coldfield</town> <city>City of Birmingham</city> <county>West Midlands (county)</county> <postcode>B72</postcode> <country>United Kingdom</country> <country_code>gb</country_code> </addressparts> </reversegeocode>
Details / Gazetteer
Die Abfrage von Details erzeugt eine hohe Serverlast und ist nur zum Testen vorgesehen ("Warum findet Nominatim nicht das, was ich suche?"). Daher gibt es auch keine API dafür. Mißbrauch dieser Funktion kann zu einer Sperrung führen.
Nutzungsbedingungen
Bitte beachte, daß die Ergebnisse von Nominatim auf den OpenStreetMap Daten beruhen und somit unter der Lizenz CC-BY-SA lizenziert sind. Bitte verweise auf die Herkunft der Daten (OpenStreetMap), wenn Du diese verwendest.
Alles weitere ist in den englischen Nutzungsbedingungen beschrieben.
Quellcode
Nominatim basiert auf dem PostgresSQL Importwerkzeug osm2pgsql und verwendet die alternative gazetteer Ausgabeoption. Indexing und Suche erfolgen mit C, PL/pgSQL und php. Der Quellcode ist hier zu finden:
https://github.com/openstreetmap/Nominatim
Eine komplette Installationsanleitung befindet sich hier: Nominatim/Installation.
Fehler / Fehler melden
Nominatim wird gewartet von Twain. Bitte Fehler von Nominatim in Github melden.