Daten aus OpenStreetmap downloaden u. in PostGIS weiterverarbeiten...

hallo und guten Tag Community,

die ** Frage des Tages **: Wie kann ich alle Krankenhäuser von Open Street Map exportieren oder abfragen?

Ich möchte alle Krankenhausstandorte in der Open Street Map als Referenz für ein kleines Geokodierungsprojekt extrahieren.
Ich weiß, wie ich mit dem QGIS-Plugin alle OSM-Daten für einen kleinen Bereich abrufen kann,
bin mir aber nicht sicher, wie ich einen größeren Bereich abfragen soll, z. B. für die gesamte Planetendatei?

sehr gern würd ich das dann in eine PostGIS überführen also unter PostgreSQL weiter damit arbeiten. Wichtig: es geht nicht um Maps u. Shapefiles - es geht mir hier lediglich um Datensätze der Hospitäler - und ich glaube dass dies die DB auch dann relativ überschaubar macht. Der Datensatz ist m. E. dann relativ gut zu verwalten, maintainen und auf

Zum Bezug der Daten - hier ** einige Ideen: **

**1) Die read Only Overpass-API **. Ich weiß nicht, ob es in einem Durchgang für die gesamte Planetendatei funktioniert,
aber vielleicht, wenn wir die Auszeit genug verlängern? Für einen kleineren Bereich und mit dem Vorteil einer (minimalen) Benutzeroberfläche können wir über den XAPI Query Builder
auf Overpass zugreifen. Dort können wir amenity = hospital in die Tag-Suche einfügen, unseren Bereich auswählen und loslegen.

**2) Geofabrik-Downloads **, gefiltert mit Osmosis, wie unter Extrahieren von Teildaten für große Regionen beschrieben?
in der OpenStreetMap-Hilfe.

  1. Was ist mit der Verwendung von ** healthsites.io: ** in Bezug auf Healthsites?
    Dies ist der meines Erachtens wichtigste Link hierbei: https://healthsites.io/api/docs ich denke dass ich auch healthsites.io für mein Projekt verwenden?

** was ist das Ziel: ** Ich möchte den Datensatz in einer postgresql-db pflegen

** Update: ** Da ich mich besonders für den Datensatz von healthsites.io interessiere, könnte ich ja auch die gewünschten Daten
auf dieser Seite herunterladen: https://healthsites.io/map

Und dann nach dem Download käme dann das Importieren dieser OSM-Daten zur Visualisierung und weiteren Analyse in PostGIS.
Es gibt eine Reihe von Tools auf dem Markt - osm2pgsql; imposm; ogr2org; um nur einige wenige zu nennen.
Weitere Schritte - und den Einstieg in PostGIS könnte ich hierrüber gehen; https://www.cybertec-postgresql.com/de/open-street-map-to-postgis-the-basics/

also so weit das Vorhaben: aber ggf. koennte ich ja auch WP-Plugins noch mit einsetzen. Denn ich will am Ende - die Suche in der Hospital-DB auch via Web-Frontend- - also etwa in einer Wordpress-Anwendung einsetzen.

Im Moment hab ich nicht den vollen Überblick auf die Optionen in Wordpress und deren Möglichkeiten, die diesbezügliche Plugins bieten - Da ist schon ein erhebliches Überblickswissen gefragt - denn es gibt ingesamt sehr viele Plugins in dieser Richtung.

Wie würdet ihr hier raten - wie würdet ihr hier vorgehen!?

**update: **mit osmfilter kann ich umgehen den ganzen Planetfile downzuloaden - und kann spezieller zugreifen - so wird der Datensatz dann überschaubarer - und ggf. kann ich dann sogar eine einfache MySQL db verwenden.

zu osmfilter:
https://wiki.openstreetmap.org/wiki/DE:Osmfilter

https://taginfo.openstreetmap.org/keys/amenity#values liefert weltweit ca. 181000 Krankenhäuser, um nur mal eine Größenordnung zu haben.
Das dürfte für overpass eher zu viel sein.

hallo Fx99

vorweg: vielen Dank für deine Antwort - und deine Ideen und Gedanken zum Thema.

Also: Wenn ich hier mal ein paar Ansätze vergleiche dann sieht das so aus:

also hier ein paar erste Überblicke:

amenity | Keys | OpenStreetMap Taginfo

amenity=hospital | Tags | OpenStreetMap Taginfo

Übersicht:

und ja: wenn wir** auf healthsites blicken** dann gibt es hier in der Summe 839122 records - da gehören aber viele einzelne Bereiche mit rein …

  • Dentist
  • Pharmacy
  • Hospital
  • etc. etx.

**
839122 healthsites** listed - vgl.: healthsites.io

sieht man genau hin dann ergibt sich folgendes:

**
Deutschland - hier sind es 2819 Kliniken…-** m.a.W. wären dies dann 2819 records. Das ist dann doch überschaubar und m.E. auch für eine MySQL-DB tauglich.

-conclusio: Hier braucht es m.E. keine PostgreSQL-DB.

womit ich hier anfangen sollte ist … Gucken wie weit ich mit den Daten von healthsites.io komme : vgl healthsites.io

m.a.W. also gucken ob die nicht die Hospitals separat anbieten - wie gesagt ich brauch nur die POI - brauche für den Anfang keine Maps usw. usf. Da dürfte der Datensatz überschaubar klein bleiben. Wenn ich die Daten dann in der DB habe und täglich einen Abzug ziehe - so dass alles auf dem neuesten & aktuellen Stand ist bin ich schon mal weiter.

ggf. arbeite ich hier (also bei dem Healthsites.io - Ansatz auch mit osmfilter - oder ich hole die daten aus dem planetfile -(oder einzelnen Teilbereichen via Geofabrik) - mit osmfilter…

Die Datenbank richte ich vorab ein,…

Nur die POIs? Dann mußt du Flächen und Relationen entsprechend umwandeln. Hierfür gibt es ein Tool, welchen den POI grob in die Mitte der Fläche setzt.

Hi Klaus,

vorweg: vielen Dank für deine rasche Antwort. Das hört sich sehr interessant an.

von dir hab ich schon vor einiger Zeit sehr schöne und vielversprechende Skripte gesehen - toll das opaquery - vgl.
https://forum.openstreetmap.org/viewtopic.php?id=16937 & auch hier auf github: https://github.com/Klaus-Tockloth/opaquery

Das ist eine gute Idee - ich werde mal fahnden nach dem Tool

Vielen Dank nochmals für deinen Hinweis.

Viele Grüße u. noch einen schönen Abend,

VG :slight_smile:

Martin

hier noch ein paar interessante Details zu dem** healthsites.io-Projket**: http://www.healthsites.io

vorweg: vielen Dank für die Hinweise, die geteilten Erfahrungen und für die Tipps.

also - vorweg: da ich lediglich an den POIS der Hospitäler interessiert bin

Nur die POIs: moegliches Vorgehen; ggf. die Flächen und Relationen entsprechend umwandeln. Hierfür gibt es ein Tool, welchen den POI grob in die Mitte der Fläche setzt.

oder ich nehme overpass-Turbo.eu - und gestalte hier Abfragen: vgl. oben!

[out:csv(::id,::type,"name","addr:postcode","addr:city","addr:street","addr:housenumber","website"," contact:email=*")][timeout:600];

    area["ISO3166-1"="AT"]->.a;



    ( node(area.a)[amenity=hospital];

      way(area.a)[amenity=hospital];

      rel(area.a)[amenity=hospital];);

    out;


oder ich verwende **osmconvert **

https://wiki.openstreetmap.org/wiki/Osmconvert tool, um die hospitäler zu filtern;

oder eben osmfilter: https://wiki.openstreetmap.org/wiki/Osmfilter

fest dürfte in jedem Falle stehen - dass ich bei dem Einsatz einer guten Methode den Datensatz von vornherein sehr stark reduziere…

Oder wie seht Ihr das!?