Infer services from other POIs included inside a POI area
Posted by LeTopographeFou on 7 August 2021 in English.To all developers involved in an application which uses OSM data, either for smartphones (OsmAnd, MagicEarth, Maps.Me…) or online (Qwant maps…).
OpenStreetMap is a great database containing many type of information. All of the software I’m aware of seems to focus on explicit data (e.g. “There is a picnic table at this exact position” or “There is a rest area here”) to search for a POI, display a map or for navigation. Those explicit data come from tags directly on the POI or on a relation. But there is more to do whenever we think of what can be deduced from those explicit data to infer implicit data (e.g. “There are picnic tables in this rest area”). This would require to take into account tags on other POIs based on geometry.
What is the interest to deduce implicit data?
Imagine a family on the road looking for a place to stop: Kids will want to go to the restrooms, the driver will need some coffee and it’s time to have lunch and wait a moment we also need to refill the car. Not all rest areas/service areas propose all those services. Looking for each of those POI on a map can be quickly cumbersome (cluttering, filtering…). Now imagine if one can, when selecting a service area or rest area, have in addition to the name and opening hours of the area, a list of services available there then the decision will probably be more efficient.
Another use case is if I’m looking for a park to bring my kids. I would love to know at a single glance if a given park has some sport fields, playgrounds, toilets, ice creams… depending of what I’m looking for without zooming and panning everywhere on my map.
So how would it works?
When displaying details of a POI which is an area and has specific tags (e.g. highway=services) the software would iterate into all tagged nodes/areas geometrically inside the area to count or detect presence of specific services/amenities (toilets, picnic tables, drinking_water…). The software can then decide to either display the services as icons, texts and optionally with a counter and/or a disability or fee icon (information which are often useful). This iteration can be done asynchronously or on user request if it brings performance issues.
Optionally, by clicking on the service icon or text the application can highlight on the map where they are located or select the POI to display its own data (ok there is an ATM in this park, but where?).
Here are some examples of areas where a piece of software can easily (I guess) infer implicit data by detecting if nodes or areas with given tags are inside the area:
- List of areas:
- highway=services
- highway=rest_area
- leisure=park
- landuse=retail
- List of amenities/services that can be detected inside the area:
- leisure=picnic_table
- amenity=toilets
- amenity=vending_machine + vending=*
- amenity=fuel
- leisure=playground
- amenity=drinking_water
- shop=bakery or clothes or…
- amenity=restaurant
- amenity=atm
- …
Some tags might be useful to filter those amenities (access=no…).
I hope this diary will inspire many developers so that OSM based applications can reach another level in term of usefulness. Feel free to comment!
Discussion
Comment from Hanan Tikveša on 12 August 2021 at 22:02
Its not “So how would it works?”. Maybe “So how would it work?” is a good idea or something else.