[ANN] OSMToolset.jl: A package to extract point-of-interest from maps and building walkability indexes

Maps provided by the OpenStreetMap project contain very detailed information about schools, businesses, shops, restaurants, cafes, parking spaces, hospitals etc. With this tool you get an efficient, customizable API for extraction of data on such points of interests for further processing. This information can be further used e.g. to build walkability indexes that can be used to explain attractiveness of some parts of a city.

Suppose you are hungry in Boston and want to find location of all restaurants in the center. Than with this package you could do:

using OSMToolset, DataFrames
f = download("https://overpass-api.de/api/map?bbox=-71.0912,42.3550,-71.0486,42.3751")
config = DataFrame(key="amenity", values=["restaurant", "fast_food", "food_court"])
dfpoi = find_poi(f; scrape_config=ScrapePOIConfig{NoneMetaPOI}(config))

This yields a nice data frame for further processing such as:

255×7 DataFrame
 Row │ elemtype  elemid     nodeid      lat      lon       key      value
     │ Symbol    Int64      Int64       Float64  Float64   String   String
   1 │ node      573364103   573364103  42.3619  -71.0705  amenity  restaurant
   2 │ node      573364344   573364344  42.3618  -71.0702  amenity  restaurant
  ⋮  │    ⋮          ⋮          ⋮          ⋮        ⋮         ⋮         ⋮
 254 │ way       212123465  2220121952  42.36    -71.0557  amenity  restaurant
 255 │ way       814638590  7609611941  42.3548  -71.0556  amenity  food_court
                                                               251 rows omitted

This can be further expanded to build various walkability indexes - similar to the visualization below or measuring attractiveness of living in a particular city district.

More information can be found on the package’s website: GitHub - pszufe/OSMToolset.jl: Tools for Open Steet Map: Point-of-Interest extraction and tiling of map data

Additionally, the package provides also functionality for tiling OSM files into smaller pieces (eg. for parallel processing later).