place <- place
boundary <- boundary
route <- route
structure <- power, man_made, barrier, emergency, amenity=[bench, post_box, telephone…], advertising, military, playground
poi <- shop, tourism, historic, office, amenity=[other], healthcare, craft
transport <- highway, railway, aerialway, traffic_sign*, public_transport, amenity=bus_station
indoor <- indoor*, entrance*
building (z14+) <- building
outdoor <- leisure, amenity=parking, aeroway
water <- waterway, natural=water
land <- landuse, landcover*, natural=[non-water]†
Maybe have
poi_point nodes/centroids (with labels)
poi_area polygons/polylines
(also for structure, named/addressed building, outdoor)
...this is mostly how Mapbox Streets does it
Needs to be basically compatible with osm2pgsql default schema, but could consider some diversions for a v2.
* means not included as a column in default schema. † filter on zoom level.
not supported: geological
Frequent: aeroway [0.4m], amenity [13m], barrier [9m], boundary [1.8m], building [301m], emergency [1.1m], entrance [1.5m], highway [132m], historic [0.9m], landuse [22m], leisure [4.7m], man_made [2.7m], natural [32m], office [0.45m], place [5m], power [17m], public_transport [1.9m], railway [4.1m], route [0.6m], shop [3.4m], traffic_sign (:forward/:backward) [0.5m], tourism [1.8m], waterway [15m]
Less frequent: aerialway [0.1m], craft [0.1m], indoor [165k]
Very infrequent: advertising [40k], landcover [58k], military [72k], playground [29k], healthcare [67k]
Oddities: airmark [2k], attraction [20k], cemetery [13k], golf [311k], sport (!), pipeline [31k], geological [7k]