Ways to export or query all hospitals from Open Street Map


Recommended Posts

tarifa

dear linux-experts on Neowin,

 

How can I export or query all hospitals from Open Street Map?

 

'd like to extract all the hospital locations in the from Open Street Map as a reference for my ,little geocoding project.

I know how to get all the OSM data for a small area with the QGIS plugin but not sure how to query a larger area  eg for the whole planet-file?

 

some ideas:

 

1) The read-only Overpass API. I don't know that it'll work for the whole planet-file in one pass, but maybe if we extend the time out enough?

For a smaller area and with the benefit of a (minimal) UI, we can access Overpass via the XAPI Query Builder. There, we can put amenity=hospital in the tag search, select our area, and go.

 

2) Geofabrik downloads, filtered with Osmosis, as described in How to extract partial data for large regions? on the OpenStreetMap Help.

 

3) what about using healthsites.io:  regarding healthsites this is the most important link: https://healthsites.io/api/docs

can i use healthsites.io for my project!?

 

 

what is aimed: i want to maintain the dataset in a pustgresql-db

 

update: since i am interested especially in the dataset of healthsites.io i can download it at this page:_ https://healthsites.io/map

 

- and import all that OSM-data to PostGIS for the purpose of visualization and further analytics. There are a bunch of tools on the market— osm2pgsql; imposm; ogr2org; just to mention some of those. i will do any further steps according this manual: https://www.cybertec-postgresql.com/en/open-street-map-to-postgis-the-basics/

 

 

  • Facepalm 1
Link to post
Share on other sites
NJ Louch

You really need to start going direct to source on these queries, where you'll have an audience that is better placed to help you.

Link to post
Share on other sites
tarifa

hello dear Lockdown, 

 

many many thanks for your answer. Thanks for your support.

i am very glad to be here in this great place.

 

you hit a important point. But i have gotten help here a lot of times. And i appreciate this great place - it is a supergreat forum. 

 

have a great day

yours tarifa

 

Link to post
Share on other sites
tarifa

dear community, dear Lockdown, 

 

first of all dear lockdown - i guess that you re right. I like your ideas. But i guess that i do not will to forget the huge community here - it is so powerful: Perhaps one does have good ideas for my help-question: 

 

 

 

the question of today: acquire the POI of every hospital in Africa, Asia, America from OSM


I need to acquire the POI if every hospital in Africa, Asia, America from OSM: which approach should i choose? 

At this point, I've only played with downloading extracts from other services like geofabrik, I haven't actually pulled any data down myself. What's the best way to do this in a pinch? I'm looking for a crash course. Thanks in advance for your help!

on a sidenote; there is a high likelihood that many non-hospital medical facilities have been mapped for example. One other issue which is also common is multiple hospital objects existing on one hospital site: this is frequently, but not always, incorrect. See an example in Tanzania.

https://wiki.openstreetmap.org/wiki/Downloading_data#Huge_amounts_of_data

some approaches: 

- osmconvert: https://wiki.openstreetmap.org/wiki/Osmconvert

- osmfilter: https://wiki.openstreetmap.org/wiki/Osmfilter

- XAPI, Overpass API: https://wiki.openstreetmap.org/wiki/Xapi

- overpass-turbo: http://overpass-turbo.eu/

- osmium https://osmcode.org/osmium-tool/

"XAPI, Overpass API and the Export Tool allow to download custom data sets like arbitrary bounding boxes, elements with specific tags, public transport networks or other features." might take a bit of experimenting with parameters and validation because you're relying on consistent tagging by other users

we can try with overpass turbo http://overpass-turbo.eu/ but I suspect that it will be too much data and we would need to use suitably defined bounding boxes. What should work is doing this on a country by country base, which would also allow us to define exactly which ones us believe belong to Africa and which not (we will need to convert the output to a shapefile).

The other approach is to download an extract  - let us take Africa for example: 
- that just contains "Africa" for example http://download.geofabrik.de/africa.html (the fsvo bit: this contains the Canary Islands which you may want to or may not want to include), and filter it with a suitable command line tool (and then convert to a shapefile).

Examples: osmium https://osmcode.org/osmium-tool/ osmfilter https://wiki.openstreetmap.org/wiki/Osmfilter

healthsites.io: hat is actually a hospital? amenity=hospital is a fairly sure bet, but you might want to include amenity=clinic and potentially give the healthcare tags a look too. see the Data of healthsites.io : etc https://healthsites.io/map Healthsites.io is supposed to curate healthcare data based on OSM for more widespread usage by healthcare specialists.

btw: For some reason OSM tagging is quite weak regardivng nuances of healthcare facilities (for instance how should one map a private hair transplant practice?). It's also extremely difficult to judge the validity of tagging without good knowledge of the local healthcare system. see more of healthsites.io-Projcet: http://www.healthsites.io


note: once downloaded i want to maintain the dataset in a PostgreSQL db.
btw: when trying to get the data from overpass-turbo i get somewhat full set of POI data


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

see the results: 

    @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/   


or to take a second example: 


    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/ 

question: why do i get such a detailed list while running an request against overpass-turbo.eu  - the output is very very detailed. 

should i stick to overpass-turbo.eu?  and run a request contry by country... and then put all the data to a MySQL or PostGreSQL-DB to maintain all the data!?

Look forward to hear from  you 

Link to post
Share on other sites
tarifa

dear community, dear Lockdown, 

 

first of all dear lockdown - i guess that you re right. I like your ideas. But i guess that i do not will to forget the huge community here - it is so powerful: Perhaps one does have good ideas for my help-question: 

 

 

 

update: i will do like so: 

 

 

1 . osmconvert - running the  Option --all-to-nodes to transfer all objects to POIs - afterwards
2 . work with osmfilter to filter all the wanted objects 

 

see more: 

 

 

http://manpages.ubuntu.com/manpages/trusty/man1/osmconvert.1.html

 

       --all-to-nodes



              Some applications do not have the ability to process ways or relations,  they  just

              accept  nodes as input. However, more and more complex object are mapped as ways or

              even relations in order to get all their details into  the  database.   Apply  this

              option  if  you  want  to convert ways and relations to nodes and thereby make them

              available to applications which can only deal with nodes.  For each way a  node  is

              created.  The  way's id is increased by 10^15 and taken as id for the new node. The

              node's longitude and latitude are  set  to  the  way's  geographical  center.  Same

              applies to relations, however they get 2*10^15 as id offset.

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.