Daten aus OpenStreetmap -> PosGIS -> Webfrontend....

tarifa

Lieutenant
Registriert
März 2020
Beiträge
621
hallo Community, guten Morgen,


hier eine neue Frage des Tages: Wie kann ich alle Krankenhäuser von Open Street Map exportieren oder abfragen?
zugegeben: hier ist die Frage -"in welches Forum von Computerbase passt diese Frage denn am besten?": Aber ich hab in den letzten Monaten und Jahren erfahren, dass hier so viele Experten sind - und dass die Gebiete auf denen die Computerbase-Community echt Expertise bieten kann so unglaublich groß sind.

also: 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.

zur Datenbeschaffung - dem Bezug . 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.

3. Was ist mit der Verwendung von healthsites.io: in Bezug auf Healthsites?
Dies ist der meines Erachtens wichtigste Link hierbei: Healthsites API Version 2 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: healthsites.io

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; Open Street Map (OSM) to PostGIS - The Basics - Cybertec

Am Ende sollen die Daten / und eine Suche (Retrieval) auf einem Webfrontend möglich werden - hier kann man auch an WordPress-Anwendungen denken. https://wordpress.org/plugins/search/maps/
Ich hab im Moment nicht den kpl. Überblick auf die diversen WP-Plugins - und denke aber dass es sicher OpenStreetMap-Fähige Plugins sein müssten die ich hier heranziehen sollte...
 
Warum lässt du nicht einfach die planetendatei (oder Kontinente sonst weint dein pc) unter und filterst dir mit osmfilter alle Daten die du möchtest? Einfacher geht's doch kaum


Was du danach vorhast ist ja völlig egal

Wenn ich wordpress schon höre... wozu braucht man das für so ein vorhaben :D

Machs per Hand mit nem simplen framework

Für meine Masterarbeit hab ich das damals auch in mysql überführt muss man halt bissel dummen. Sonst haste am Ende viel zu viel scheiße in der datenbank
 
  • Gefällt mir
Reaktionen: tarifa
hallo BlackBirddone,


vorweg: vielen Dank!

Warum lässt du nicht einfach die planetendatei (oder Kontinente sonst weint dein pc) unter und filterst dir mit osmfilter alle Daten die du möchtest? Einfacher geht's doch kaum

stimmt - ich kann mit osmfilter einfach die gewünschten Daten filtern - das macht den Datensatz dann viel viel kleiner. Und dann ( für einen viel viel kleineren Datensatz halt ) kann man im Grunde schon wieder mit MySQL anfangfen. Da brauchts dann keine PostGIS mehr.

By the way: https://healthsites.io/map - die glaube ich könnten für mein Vorhaben schon auch sehr interessant werden - denn dort stehen ja auch speziell die Daten bereit die mich im Kern interessieren.



zu osmfilter:
https://wiki.openstreetmap.org/wiki/DE:Osmfilter
osmfilter ist ein Kommandozeilentool, das aus OSM-Planetfiles Daten mit ausgewählten Tags heraus filtert. Es ist möglich verschiedene Arten von Filtern zu definieren, mit denen OSM-Objekte (d.h. Punkte, Wege und Relationen) einschließlich der zugehörigen Objekte (z.B. Punkte von Wegen, Wege von Relationen, Relationen von anderen Relationen) extrahiert werden können.

Unterstützte Eingabe- und Ausgabe-Formate sind das .osm-Format und das .o5m-Format. Um schnelleres Filtern zu ermöglichen, wird empfohlen, das .o5m-Format zumindest für die Dateneingabe zu verwenden. Das Programm osmconvert hilft bei entsprechenden Formatumwandlungen. Zum Beispiel: ./osmconvert file.pbf -o=file.o5m


Die folgenden Absätze zeigen die wichtigsten Anwendungsbeispiele.

Objekt-Filter:
Filter dieser Kategorie beziehen sich immer auf ganze Objekte (Punkte, Wege oder Relationen), das heißt, sie entscheiden, ob das jeweilige Objekt als Ganzes erhalten bleibt oder komplett aus der Datei ausgeschlossen wird.

Bestimmte Objekte und ihre Mitglieder behalten
./osmfilter norway.osm --keep="highway=primary =secondary waterway=river" -o=streets.osm
./osmfilter switzerland.o5m --keep="highway=cycleway and lit=yes" -o=litcycles.osm
./osmfilter europe.o5m --keep= --keep-relations="route=bus" -o=bus_lines.o5m
./osmfilter bayern.o5m --keep="admin_level=6 and name=Nürnberger\ Land" -o=nbg_boundaries.osm
Der Backslash "\" erlaubt auch Leerzeichen innerhalb von Schlüsselnamen oder Werten.

Objekte eines bestimmten Typs behalten
Um beim Filtern nur Objekte eines bestimmten Typs zu behalten, müssen Filter auch für die beiden anderen Objekttypen definiert werden. Um beispielsweise nur Punkte mit dem Tag fixme zu behalten, wird eines dieser Kommandos verwendet:

--keep-nodes="fixme=" --keep-ways= --keep-relations=
--keep= --keep-nodes="fixme="
Bestimmte Objekte ausschließen

Tag-Filter:
Tag-Filter beziehen sich immer nur auf einzelne Tags. Damit lässt sich festlegen, welche Tags erhalten bleiben und welche ausgeschlossen werden.

Bestimmte Tags behalten
./osmfilter a.o5m --keep-tags="all amenity=restaurant =fast_food" -o=food.osm
./osmfilter a.o5m --keep-tags="all highway= waterway= name=" -o=ways.o5m


also - BlackbirdDone - dir nochmals vielen Dank - ich merke dass ich echt im Ansatz viel viel schlanker das angehen kann - die Größe der Daten wird dann echt überschaubar.

Viele Grüße
 
Ja ich hatte halt ein ähnliches Problem für Administrative Hierarchien. Also Leipzig gehört zu Sachsen wo ist das auf der Karte ect.

Bevor der Schock kommt die Daten OSM sind riesig plane mal ruhig 200 GB locker ein.

Geifabrik hat ja schon gesplittet Daten würde ich vorziehen. Da reden wir schon von einigen gigabyte pro spice. Das zu extrahieren dauert. Ich konnte auf meiner Mühle die planetare Datei nicht filtern damals aber waren auch nur 4 lerne 16 gb Speicher.

Dann lässt du dir alle nodes geben die healthcare irgendwas haben das drückt das schonmal auf einige wenige Gigabyte.

Da lässt dann ein script drüber laufen was dir das in mysql oder so eingepflegt.

Healthsite wenn dir das hilft nutze das doch. Osm Daten extrahieren und so ist halt bissel Arbeit. Wenn die das schon gemacht haben um so besser :D
 
  • Gefällt mir
Reaktionen: tarifa
guten Abend blackbirdone,

danke für das Teilen deiner Erfahrungen u. für die Tipps - und für das Ermutigen hier einzusteigen: +

also hier ein paar erste Überblicke:
https://taginfo.openstreetmap.org/keys/amenity#values
https://taginfo.openstreetmap.org/tags/amenity=hospital

Übersicht:
Code:
Typ:
Anzahl Objekte:
[Alle] Alle 181012                               0.00%
101736                                               0.06%
[Way] Way 76 022                              0.01%
[Relation] Relation 3 254                    0.04%

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.: https://healthsites.io/map

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 https://healthsites.io/map

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,....

hier noch ein paar interessante Details zu dem healthsites.io-Projket: http://www.healthsites.io
The data will flow both ways from Healthsites.io to OpenStreetMap, and from OpenStreetMap to Healthsites.io. On the sign up to the Healthsites.io page, users will register using OAuth against the OSM authentication provider. Each data change (create/update/delete) to a health facility on the Healthsite.io platform will be written directly to the OSM database using the OSM API, with the OSM credentials associated with the logged in user on Healthsites.io.
Changes to health facility data made outside of the Healthsites.io platform, and directly to OSM are replicated back in near-real time to a Healthsites.io mirror of all health facility data found in OSM. This is achieved using docker-osm, developed by Kartoza which takes the high frequency diffs produced on OSM and applies them to a PostgreSQL / PostGIS database hosted on Heathsites.io. Changes made locally on healthsites.io are first pushed to OSM via the OSM API and then replicated back to our docker-osm instance using the same mechanism described above.
Our aim with this architectural approach is to make OSM the main storage location of all the health facility data available on Healthsites.io and at the same time facilitate large queries, extracts and general innovation around the body of OSM health facility data, whilst having minimal impact and load on the services offered by OSM. The diagram below illustrates the high level architecture as pertains to interactions between OSM and Healthsites.io.
Data Model: The OSM data model put together for Healthsites was initially based off of several data models used in various HOT projects across South America, Africa and Southeast Asia. The initial list of tags was then compared to the data model that Healthsites.io was already using to ensure that the same attributes were still being captured, but also offered some suggestions for additional key information that should be captured for health facilities. This was based on the numerous collaborations with HOT project partners over the years and their data needs.
The overall idea is to use existing OSM tags where possible and only propose new tags where necessary. A lot of research went into the development of the Healthsites OSM data model, including the review of existing HOT data models and OSM data models available on the OSM wiki. Verification of the tags usage through the OSM wiki, Tag Info and Tag History, with further analysis on tags using OSMFilter for certain areas of interest, helped identify values generally applied in a local area.
 
Zuletzt bearbeitet:
update: wenn man mal zwei wege vergleicht - einen mit overpass-turbo und einen direkten Blick auf Healthsites - io wirft wird es interessant:

hier eine overpassturbo-abfrage


Code:
    [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;


resultate



Code:
    @id    @type    name    addr:postcode    addr:city    addr:street    addr:housenumber    website     contact:email=*
    2656877    relation    Unfallkrankenhaus Lorenz Böhler    1200    Wien    Donaueschingenstraße    13    https://www.auva.at/ukhboehler/  
    2685003    relation    Landeskrankenhaus Hörgas-Enzenbach                    http://www.lkh-hoergas.at  
    2685004    relation    Landeskrankenhaus Judenburg-Knittelfeld                    http://www.lkh-judenburg.at  
    2685005    relation    Landeskrankenhaus Hochsteiermark                    http://www.lkh-hochsteiermark.at  
    2685006    relation    Landeskrankenhaus Mürzzuschlag-Mariazell                    http://www.lkh-muerzzuschlag.at  
    2685007    relation    Landeskrankenhaus Rottenmann-Bad Aussee                    http://www.lkh-rottenmann.at  
    2755244    relation    Landesklinikum Scheibbs    3270    Scheibbs    Feldgasse    26      
    2764083    relation    Allgemeines Krankenhaus Wien    1090    Wien    Währinger Gürtel    18-20    https://www.akhwien.at  
    2882269    relation    Unfallkrankenhaus Salzburg                    http://www.ukh-salzburg.at  
    3333391    relation    Krankenhaus St. Josef    5280    Braunau am Inn    Ringstraße    60    https://www.khbr.at/  
    4460484    relation    Landeskrankenhaus Graz II                    http://www.lkh-graz-sw.at  
    6704364    relation    Landesklinikum Neunkirchen            Peischingerstraße    19    https://www.neunkirchen.lknoe.at/  
    9522773    relation    Krankenhaus der Barmherzigen Brüder    7000    Eisenstadt    Esterhazystraße    26      
    11077211    relation    "Landeskrankenhaus Murtal, Standort Stolzalpe Haus 1"    8852    Stolzalpe    Stolzalpe    38    https://www.lkh-murtal.at/

oder um hier mit Frankreich noch ein weiteres Beispiel zu nehmen:

Code:
30850910    way    Hôpital Nord Guillaume et René Laennec    44093    Nantes Cedex 1    Bd professeur Jacques-Monod - Saint-Herblain        https://www.chu-nantes.fr/    
30979413    way    Hôpital Albert Chenevier    94010    Créteil    rue de Mesly    40    http://chu-mondor.aphp.fr/hopital-albert-chenevier1/    
31150222    way    Centre de Psychiatrie Les Tournesols                        
31150223    way    Clinique du Saint-Coeur                    http://www.saint-coeur.groupe-elsan.com/    
31252310    way    Hôpital Avicenne                    http://chu93.aphp.fr/hopital-avicenne-bobigny/    
32229408    way    Centre hospitalier du Rouvray    76300    Sotteville-lès-Rouen    Rue Paul Éluard    4    www.ch-lerouvray.fr    
32354044    way    Centre hospitalier intercommunal Fréjus Saint-Raphaël                    https://www.chi-fsr.fr/    
32388820    way    Clinique des Cèdres                    https://clinique-cedres.capio.fr/    
32471086    way    Hôpital Saint-Jacques                        
32522247    way    Centre hospitalier de Dieppe    76200    Dieppe    Avenue Pasteur        http://www.ch-dieppe.fr    
32617022    way    Hôpital Désandrouins    55100    Verdun    Avenue d'Étain            
32679701    way    Hôpital Belle-Isle                    https://www.hpmetz.fr/fr/etablissement/hopital-belle-isle    
32851894    way    Clinique d'Occitanie    31600    Muret    Avenue Bernard IV    20    http://www.clinique-occitanie.com/    
32940084    way    Centre hospitalier de Longjumeau                    http://www.gh-nord-essonne.fr/accueil.aspx    
33061296    way    Clinique de l'Yvette                        
33533346    way    Hôpital privé de l'Est Lyonnais                    https://hpel.fr/    
33624453    way    Clinique de l'Union                    https://clinique-union-toulouse.ramsaygds.fr/    
33639902    way    Hôpital du Hasenrain                        
33826818    way    Hôpital du Croisic                        
33889337    way    Centre Hospitalier Guy Thomas                    http://ch-riom.fr/    
33916780    way    Hôpital Émile Muller                        
34426829    way    Centre hospitalier de Pau                    https://www.ch-pau.fr/    
34428388    way    Clinique Princess                    http://www.clinique-princess.com/    
34428389    way    Centre Hospitalier Spécialisé des Pyrénées                        
34478129    way    Pôle Santé République                    http://www.psr.groupe-elsan.com/    
34571025    way    Centre hospitalier d'Albi                    http://www.ch-albi.fr/    
34965024    way    Hôpital de la Conception                    http://fr.ap-hm.fr/nos-hopitaux/hopital-de-la-conception    
35049042    way    Hôpital Simone Veil                    https://www.hopital-simoneveil.fr/    
35051383    way    Centre hospitalier intercommunal André Grégoire                    http://www.chi-andre-gregoire.fr/    
35539378    way    Hôpital Jean Verdier                    http://chu93.aphp.fr/hopital-jean-verdier-bondy/    
36787144    way    Centre hospitalier de Die                    http://www.ch-die.fr/    
36894682    way    Hopital Beaujon    92110    Clichy    Boulevard du Général Leclerc    100    http://hupnvs.aphp.fr/beaujon/    
36962284    way    Centre Hospitalier de Pfastatt                        
37097582    way    Centre hospitalier Comminges Pyrénées                    http://www.ch-saintgaudens.fr/chcp17/index.php/fr/    
37099012    way    Hôpital d'Instruction des Armées Bégin                        
37108859    way    Centre hospitalier Comminges Pyrénées    31800    Saint-Gaudens    Boulevard d'Encore    21        
37135205    way    Centre hospitalier de Pontarlier                    http://pontarlier-hopital.chi-hautecomte.fr/    
37216610    way    Centre hospitalier                    http://www.ch-chateauroux.fr/    
37678740    way    Clinique du Château                    http://www.clinique-garches.com/    
37836452    way    Centre de Gérontologie et d'Accueil Spécialisé Philippe Dugué                    http://www.hgchevreuse.fr/    
38072526    way    Hôpital Bichat-Claude Bernard                    http://hupnvs.aphp.fr/    
38076764    way    Clinique du Château de Florans                        
38237520    way    Centre Hospitalier Intercommunal des Alpes du Sud                    http://www.chicas-gap.fr    
38237900    way    Centre psychothérapique Camille Claudel                        
38480566    way    Centre hospitalier de Béziers            Rue Valentin Haüy    2    http://www.ch-beziers.fr    
38496996    way    Centre hospitalier intercommunal de Cornouaille    29000    Quimper    Avenue Yves Thépot    14    https://www.ch-cornouaille.fr/    
38496997    way    Polyclinique Quimper-Sud        Quimper    Rue Gustave Flaubert        http://quimper-sud.clinique-quimper.fr/fr    
38568780    way    Centre Cardiologique d'Évecquemont                        
38701149    way    Centre Hospitalier de Chauny                        
38867555    way    Centre hospitalier Eure-Seine    27200    Vernon    Rue du Docteur Burnet    5    http://www.chi-eureseine.fr    
38918952    way    Centre hospitalier de Hyères            Boulevard du Maréchal Juin    579    http://www.ch-hyeres.fr    
39215839    way    Centre hospitalier de Saint-Affrique                    http://ch-saintaffrique.fr/    
39255826    way    Hôpital de Prades                        
39489000    way    Clinique de Girardin                        
39536410    way    Centre hospitalier intercommunal de Poissy                    http://www.chi-poissy-st-germain.fr/fr/Page-d-accueil-167.html    
39947896    way    Clinique Saint-Louis                        
40199116    way    Clinique Notre-Dame                        
40282457    way    Hôpital Delafontaine                    http://www.ch-stdenis.fr    
40283884    way    Centre hospitalier Jacques Lacarin    03200    Vichy    Boulevard Denière    1    http://www.ch-vichy.fr/    
40358353    way    Clinique Sainte-Marguerite                        
40467444    way    Clinique Villa Magali                        
40503994    way    Clinique Générale                    http://www.clinique-generale.net/fr/documents/p_accueil.html    
40593554    way    Clinique Sainte-Marie                    https://chpsaintemarie.fr/le-chp/pole-sante-osny/    
40610772    way    Hôpital du Porzou                    http://www.ch-cornouaille.fr/ch-quimper-concarneau/infos-pratiques/plan-dacces/concarneau-site-du-porzou    
40667164    way    Hôpital Civil    67091    Strasbourg    Place de l'Hôpital    1    http://www.chru-strasbourg.fr/index.php    
40686020    way    Centre de Soins et d'Accompagnement et de Prévention en Addictologie


wenn man das hier vergleicht dann sieht dieser untenstehende DATENSATZ viel unvollständiger aus:

https://healthsites.io/map#!/locality/node/4777740642

keine komplette Adressdaten - keine website etc. etx. er


conclusio: sollte ich ggf doch die poi via overpass-turbo.eu besorgen - sieht irgendwie vollständiger aus...!?
 
Zuletzt bearbeitet:
Möchte hier nebenbei noch die Warnung rausgeben, dass die OSM-Rohdaten nicht nur sehr groß sind, sondern dementsprechend lange zum Importieren brauchen können.

Wir haben vor drei Jahren die kompletten Europadaten (20 GB) geladen und für die Weiterverarbeitung mit ogr2ogr in eine PostgreSQL (PostGIS) importiert. Der Import hat 7 Tage gebraucht. Auf eine SSD.
 
  • Gefällt mir
Reaktionen: tarifa
hallo und guten Abend Physikbudda,

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!

Code:
[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!?
 
hallo

vielen Dank für Eure Antworten - die Ideen sind überzeugend - ich hab mir die API nochmals genauer angesehen. Da ich auch mit den POI der Kliniken zunächst sehr gut auskomme glaube ich hier auch
eine gute Basis zu haben...


https://healthsites.io/api/docs/


1597168128818.png


Da ist sehr viel interessantes dabei. - ich werde mich hier mal reinvertiefen.

nochmals vielen Dank
 
Zuletzt bearbeitet:
Zurück
Oben