x

Straße bekannt - Postleitzahl gesucht API


  1. Straße bekannt - Postleitzahl gesucht API · mfeske (Gast) · 19.02.2020 15:19 · [flux]

    Hallo zusammen,

    ich bin recht neu und unerfahren hier und habe leider nichts dazu gefunden.
    Ich habe vor in einem PHP Script die Eingabe einer Straße zu ermöglichen, es soll dann ähnlich wie bei https://www.openstreetmap.de/karte.html eine Auswahl erscheinen oder automatisch die korrekte Postleitzahl ermittelt werden, das sollte doch funktionieren ? Aber wie stelle ich das am vernünftigsten an?

    viele Grüße


    • Re: Straße bekannt - Postleitzahl gesucht API · dieterdreist (Gast) · 19.02.2020 18:14 · [flux]

      Das erledigt ein "Geocoder", der von OSM betriebene und auf der Hauptseite verwendete heißt "Nominatim".
      http://nominatim.org/


    • Re: Straße bekannt - Postleitzahl gesucht API · mfeske (Gast) · 20.02.2020 09:06 · [flux]

      Hallo dieterdreist,

      vielen Dank für den Tip. Geht das komplett über eine API oder muss ich das tatsächlich komplett installieren ? Ich stehe da ganz schön auf dem Schlauch und habe unter http://nominatim.org/release-docs/latest/api/Lookup/ keinen passenden API Aufruf gefunden und den Aufrufauf der Hauptseite kann ich ja leider so nicht einsehen was da im Formular passiert.

      Gruß
      Micha


    • Re: Straße bekannt - Postleitzahl gesucht API · Nakaner (Gast) · 20.02.2020 10:07 · [flux]

      Hallo Micha,

      bitte beachte bei der Nutzung von nominatim.openstreetmap.org dessen Nutzungsbedingungen.

      Viele Grüße

      Michael


    • Re: Straße bekannt - Postleitzahl gesucht API · dieterdreist (Gast) · 20.02.2020 10:40 · [flux]

      Nakaner wrote:

      bitte beachte bei der Nutzung von nominatim.openstreetmap.org dessen Nutzungsbedingungen.

      genau. Solange Du es nicht übertreibst, kannst Du die API von nominatim.osm.org benutzen. Früher wurde die PLZ bei einer Suche auch in OSM direkt angezeigt, falls ich das recht erinnere, jetzt aber nicht mehr.

      Wenn Du nur ein paar PLZ in OSM suchen willst, ist das Suchfeld in nominatim.openstreetmap.org die richtige Wahl. Für sehr intensive Nutzung müsstest Du Dir dagegen Deine eigene Instanz aufsetzen.


    • Re: Straße bekannt - Postleitzahl gesucht API · gormo (Gast) · 20.02.2020 10:55 · [flux]

      mfeske wrote:

      Geht das komplett über eine API oder muss ich das tatsächlich komplett installieren ? Ich stehe da ganz schön auf dem Schlauch und habe unter http://nominatim.org/release-docs/latest/api/Lookup/ keinen passenden API Aufruf gefunden und den Aufrufauf der Hauptseite kann ich ja leider so nicht einsehen was da im Formular passiert.

      Die API die Du suchst ist auch die Search-API, nicht Lookup.

      https://nominatim.org/release-docs/develop/api/Search/


    • Re: Straße bekannt - Postleitzahl gesucht API · mfeske (Gast) · 20.02.2020 14:11 · [flux]

      Prima, vielen Dank euch. Da komme ich ja jetzt etwas weiter ;-)
      Es handelt sich um zwei bis drei Anfragen die Woche. Okay vielleicht auch mal am gleichen Tag, dafür benötige ich hoffentlich keine eigene Instanz.
      Ich komme ja jetzt an die Daten ran zum Beispiel mit diesem https://nominatim.openstreetmap.org/sea … sdetails=1 aber wie kann ich das jetzt so geschickt machen wie auf der Startseite ?
      Habt Ihr da auch Anwendungsbeispiele ? Also User beginnt Strassennamen einzugeben und vielleicht sogar per autocomplet wird er vervollständigt und eine Auswahl der Möglichkeiten angezeigt, ich habe das bisher mit awesomplete form-control und einer DB Abfrage gelöst.

      Gruß
      Micha


    • Re: Straße bekannt - Postleitzahl gesucht API · gormo (Gast) · 20.02.2020 14:16 · [flux]

      mfeske wrote:

      Prima, vielen Dank euch. Da komme ich ja jetzt etwas weiter ;-)
      Es handelt sich um zwei bis drei Anfragen die Woche. Okay vielleicht auch mal am gleichen Tag, dafür benötige ich hoffentlich keine eigene Instanz.
      Ich komme ja jetzt an die Daten ran zum Beispiel mit diesem https://nominatim.openstreetmap.org/sea … sdetails=1 aber wie kann ich das jetzt so geschickt machen wie auf der Startseite ?
      Habt Ihr da auch Anwendungsbeispiele ? Also User beginnt Strassennamen einzugeben und vielleicht sogar per autocomplet wird er vervollständigt und eine Auswahl der Möglichkeiten angezeigt, ich habe das bisher mit awesomplete form-control und einer DB Abfrage gelöst.

      Autocomplete ist in den Nutzungsbedingungen der API verboten!

      https://operations.osmfoundation.org/po … nominatim/ unter "unacceptable use"

      Wenn du autocomplete willst nimm Photon, https://photon.komoot.de/


    • Re: Straße bekannt - Postleitzahl gesucht API · dieterdreist (Gast) · 20.02.2020 14:20 · [flux]

      gormo wrote:

      Autocomplete ist in den Nutzungsbedingungen der API verboten!

      sofern man es über die Nominatim-API implementiert. Autocomplete mittels eines externen Services geht natürlich (d.h. wenn man am Ende nur einen Request an Nominatim schickt), aber klar, wenn der Service das schon direkt anbietet ist es natürlich besser.


    • Re: Straße bekannt - Postleitzahl gesucht API · mfeske (Gast) · 21.02.2020 09:26 · [flux]

      Hallo zusammen,
      vielen Dank für den Tip und den Hinweis auf die Nutzungsbedingungen. Aber vermutlich muss ich dann auch https://github.com/komoot/photon installieren als Instanz :-( Ich hatte auf eine einfache Lösung gehofft, aber Photon finde ich noch nicht mal in der API den Aufruf für die Straße der mir den Rest zurückwirft :-(
      Gibt es für die Art eigentlich zugängliche Beispiele (Codeschnipsel) ? Bisher habe ich halt folgendes gemacht:

      #Abfrage␣für␣Straßenliste
      $streetlistquery␣␣=␣"SELECT␣DISTINCT␣`street_name`␣FROM␣`streetname_berlin`␣ORDER␣BY␣`street_name`␣ASC";
      #Ausgabe␣aller␣Zeilen
      $streetlist␣=␣mysqli_query($link,␣$streetlistquery);
      <div␣class="form-group">
      <label␣for="street">Straße<sup>*</sup></label>
      <div␣class="input-group">
      <div␣class="input-group-prepend">
      <div␣class="input-group-text">
      <i␣class="fa␣fa-street-view"></i>
      </div>
      </div>
      <input␣id="street"␣name="street"␣type="text"␣aria-describedby="streetHelpBlock"␣class="awesomplete␣form-control"␣list="streetlist"␣required="required">
      <datalist␣id="streetlist">
      <?␣while␣($row_street␣=␣mysqli_fetch_array($streetlist))␣{echo␣"<option>"␣.␣($row_street["street_name"])␣.␣"</option>\n";}?>
      <span␣id="streetHelpBlock"␣class="form-text␣text-muted">Straße</span>
      </div>
      </div>
      

    • Re: Straße bekannt - Postleitzahl gesucht API · dooley (Gast) · 21.02.2020 10:05 · [flux]

      mfeske wrote:

      in der API den Aufruf für die Straße

      Steht doch alles da? https://photon.komoot.de/ Man muss halt ein bisschen runterscrollen. Weitere Parameter findet man im hier.

      Beispiel: https://photon.komoot.de/api/?q=Kurfürs … ag=highway

      Man muß auch keine eigene Photon-Instanz betreiben, wenn man es nicht übertreibt mit den Abfragen, steht aber auch in den sehr einfach gehaltenen Terms of use:

      You can use the API for your project, but please be fair - extensive usage will be throttled. We do not guarantee for the availability and usage might be subject of change in the future.

      Have fun with photon and make OSM grow!


    • Re: Straße bekannt - Postleitzahl gesucht API · stephan75 (Gast) · 21.02.2020 19:44 · [flux]

      zusammenfassend sei auch immer wieder auf https://wiki.openstreetmap.org/wiki/Search_engines verwiesen ...


    • Re: Straße bekannt - Postleitzahl gesucht API · gormo (Gast) · 25.02.2020 10:31 · [flux]

      mfeske wrote:

      #Abfrage␣für␣Straßenliste
      $streetlistquery␣␣=␣"SELECT␣DISTINCT␣`street_name`␣FROM␣`streetname_berlin`␣ORDER␣BY␣`street_name`␣ASC";
      #Ausgabe␣aller␣Zeilen
      $streetlist␣=␣mysqli_query($link,␣$streetlistquery);
      <div␣class="form-group">
      <label␣for="street">Straße<sup>*</sup></label>
      <div␣class="input-group">
      <div␣class="input-group-prepend">
      <div␣class="input-group-text">
      <i␣class="fa␣fa-street-view"></i>
      </div>
      </div>
      <input␣id="street"␣name="street"␣type="text"␣aria-describedby="streetHelpBlock"␣class="awesomplete␣form-control"␣list="streetlist"␣required="required">
      <datalist␣id="streetlist">
      <?␣while␣($row_street␣=␣mysqli_fetch_array($streetlist))␣{echo␣"<option>"␣.␣($row_street["street_name"])␣.␣"</option>\n";}?>
      <span␣id="streetHelpBlock"␣class="form-text␣text-muted">Straße</span>
      </div>
      </div>
      

      Das hat jetzt zwar nichts mit Geocoding zu tun, aber du machst das <datalist>-Element nicht wieder zu (mit "</datalist>").