If you are using MacOS, you will need to install Homebrew before installing the OSMgetPOI. You can find instrusctions at https://brew.sh/ or just run the following line of code in your terminal:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
To launch and load the OSMgetPOI module with Julia v1.7 or Julia 1.8.3 on Windows, Linux and MacOS:
using Pkg
Pkg.add(url = "https://github.com/mkloe/OSMgetPOI.jl")
Note that post installation build will trigger downloading of the OSMfilter binary file.
julia> using OSMgetPOI
julia> osm_file = download_bbbike_file("https://download.bbbike.org/osm/bbbike/Victoria/Victoria.osm.gz"; target_filepath = tempname())
Downloading file...
File downloaded. Unzipping file...
julia> data = get_poi_df(osm_file, OSMgetPOI.POITypes.education_school, OSMgetPOI.POITypes.transport_busstop, OSMgetPOI.POITypes.cuisine_restaurant)
625×7 DataFrame
Row │ poi_type lat lon addr:street addr:housenumber addr:postcode addr:country
│ Any Any Any Any Any Any Any
─────┼──────────────────────────────────────────────────────────────────────────────────────────────────────────
1 │ education_school 48.4716 -123.321 Gordon Head Road 3970 missing missing
2 │ education_school 48.4272 -123.359 missing missing missing missing
3 │ education_school 48.4632 -123.408 Burnside Road West 957 missing missing
⋮ │ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮
623 │ cuisine_restaurant 48.4244 -123.369 Langley Street 1005 missing missing
624 │ cuisine_restaurant 48.45 -123.426 Admirals Road 1517 V9A 2P8 missing
625 │ cuisine_restaurant 48.4286 -123.368 missing missing missing missing
The project consists of 2 main parts:
/srcdirectory where the source code is located. The source code contains the following key functions:download_bbbike_fileanddownload_geofabrik_file- they download and unzip .osm filesget_poi_df- it parses the .osm file from function argument and returns a Julia DataFrame with all the processed POIs. The dataframe may be used for further analysis or easily exported into CSV file.
demo.ipynb- jupyter notebook which shows how the package works.
The package supports the POI Types shown the table below. To add your own POITypes, go to src/POITypes.
| poi_type | query |
|---|---|
| education_kindergarden | "--keep= " amenity=kindergarten "" |
| education_school | "--keep= " amenity=school =music_school =language_school "" |
| education_university | "--keep= " amenity=university =college "" |
| education_library | "--keep= " amenity=library "" |
| cuisine_restaurant | "--keep= " amenity=restaurant =fast_food =food_court "" |
| cuisine_pub | "--keep= " amenity=pub =bar "" |
| cuisine_cafe | "--keep= " amenity=cafe =ice_cream "" |
| finance_bankoratm | "--keep= " amenity=bank =atm "" |
| transport_parking | "--keep= " amenity=parking parking=* "" |
| transport_gas_station | "--keep= " amenity=fuel "" |
| transport_bus_stop | "--keep= " amenity=bus_station public_transport=station "" |
| transport_railway_station | "--keep= " railway=station "" |
| transport_airport | "--keep= " aeroway=aerodrome =terminal "" |
| healthcare_doctor | "--keep= " amenity=clinic =doctors =dentist healthcare=* "" |
| healthcare_pharmacy | "--keep= " amenity=pharmacy "" |
| healthcare_hospital | "--keep= " amenity=hospital "" |
| entertainment_cinemaandarts | "--keep= " amenity=cinema =theatre =arts_centre "" |
| entertainment_club | "--keep= " amenity=nightclub "" |
| shopping_shop | "--keep= " shop=* "" |
| shopping_marketplace | "--keep= " amenity=marketplace "" |
| leisure_park | "--keep= " leisure=garden =park =dog_park "" |
| leisure_sportsground | "--keep= " leisure=sports_centre =sports_hall =stadium =track =pitch =horse_riding =swimming_pool =fitness_centre =fitness_station sport=fitness landuse=recreation_ground =winter_sports "" |
| leisure_tourism | "--keep= " tourism=* "" |
| religion_religion | "--keep= " amenity=place_of_worship "" |
| work_officeandindustry | "--keep= " office=* industrial=* landuse=industrial "" |
This research was funded in whole or in part by [National Science Centre, Poland][2021/41/B/HS4/03349]. For the software’s documentation for the purpose of Open Access, the author has applied a CC-BY public copyright licence to any Author Accepted Manuscript (AAM) version arising from this submission.
This Julia package is created by: Marcin Zurek, Master student @SGH Warsaw School of Economics (github.com/mkloe) under supervision of Przemysław Szufel.