Skip to content

feat: added stroller field to cafe, ice cream, and restaurant#1837

Merged
tyrasd merged 1 commit intoopenstreetmap:mainfrom
cuatim:cuatim-patch-stroller
Dec 16, 2025
Merged

feat: added stroller field to cafe, ice cream, and restaurant#1837
tyrasd merged 1 commit intoopenstreetmap:mainfrom
cuatim:cuatim-patch-stroller

Conversation

@cuatim
Copy link
Copy Markdown
Contributor

@cuatim cuatim commented Nov 30, 2025

Description, Motivation & Context

stroller was only supported for amenity=fast_food. this adds stroller for three more amenities that are frequently visited with babies and toddlers.

Links and data

Relevant OSM Wiki links:

https://wiki.openstreetmap.org/wiki/Key:stroller

Relevant tag usage stats:

66 466 times tagged. 51 753 times stroller=yes

https://taghistory.raifer.tech/#***/stroller/yes

@matkoniecz
Copy link
Copy Markdown
Collaborator

I guess that having it in moreFields makes sense, and there is great - but not ideal - overlap withc wheelchair

@github-actions
Copy link
Copy Markdown

🍱 Your pull request preview is ready

Please use this preview to check your changes. Ideally use the test documentation template and document your test results by commenting on the PR. This will speed up the review process for everyone.

FYI, once this PR is merged, you can use the iD Editor Preview to test your changes in interaction with all other changes.

@cuatim

This comment was marked as resolved.

@cuatim
Copy link
Copy Markdown
Contributor Author

cuatim commented Dec 4, 2025

PS: Oh, this needs OSM Wiki Data items as well. I will add those and update the screenshot examples.

done:
image
image
image

@tordans
Copy link
Copy Markdown
Collaborator

tordans commented Dec 6, 2025

Are there any apps that promote this tag? Or is this currently just organic, manual growth?

Current usage is not great – some numbers for some of the morFields keys per Preset:

% curl -g https://postpass.geofabrik.de/api/0.2/interpreter \
  --data-urlencode "options[geojson]=false" \
  --data-urlencode "data=
SELECT
  kv.key,
  COUNT(*) AS usage_count
FROM postpass_pointlinepolygon,
LATERAL jsonb_each_text(tags) AS kv(key, value)
WHERE tags->>'amenity' = 'cafe'
  AND kv.key IN (
    'air_conditioning','bar','branch_brand','brand','capacity',
    'changing_table','delivery','diet_multi','drive_through',
    'highchair','min_age','organic','reservation','smoking',
    'stroller','takeaway','toilets'
  )
GROUP BY kv.key
HAVING COUNT(*) > 10
ORDER BY usage_count DESC"

{
    "result": [
        {
            "key": "takeaway",
            "usage_count": 75255
        },
        {
            "key": "brand",
            "usage_count": 64100
        },
        {
            "key": "smoking",
            "usage_count": 28194
        },
        {
            "key": "air_conditioning",
            "usage_count": 11398
        },
        {
            "key": "toilets",
            "usage_count": 9624
        },
        {
            "key": "drive_through",
            "usage_count": 9446
        },
        {
            "key": "delivery",
            "usage_count": 6293
        },
        {
            "key": "bar",
            "usage_count": 3921
        },
        {
            "key": "changing_table",
            "usage_count": 3219
        },
        {
            "key": "reservation",
            "usage_count": 1751
        },
        {
            "key": "capacity",
            "usage_count": 1419
        },
        {
            "key": "highchair",
            "usage_count": 1418
        },
        {
            "key": "organic",
            "usage_count": 683
        },
        {
            "key": "stroller",
            "usage_count": 390 <--- quite low
        },
        {
            "key": "min_age",
            "usage_count": 183
        }
    ],
    "metadata": {
        "generator": "Postpass API 0.2",
        "timestamp": "2025-12-06T07:12:15Z"
    }
}%
% curl -g https://postpass.geofabrik.de/api/0.2/interpreter \
  --data-urlencode "options[geojson]=false" \
  --data-urlencode "data=
SELECT
  kv.key,
  COUNT(*) AS usage_count
FROM postpass_pointlinepolygon,
LATERAL jsonb_each_text(tags) AS kv(key, value)
WHERE tags->>'amenity' = 'ice_cream'
  AND kv.key IN (
    'delivery','diet_multi','drive_through',
    'organic','stroller','takeaway','toilets'
  )
GROUP BY kv.key
HAVING COUNT(*) > 10
ORDER BY usage_count DESC"

{
    "result": [
        {
            "key": "takeaway",
            "usage_count": 6404
        },
        {
            "key": "delivery",
            "usage_count": 1774
        },
        {
            "key": "drive_through",
            "usage_count": 1067
        },
        {
            "key": "toilets",
            "usage_count": 526
        },
        {
            "key": "organic",
            "usage_count": 97
        }
    ], <-- no usage at all
    "metadata": {
        "generator": "Postpass API 0.2",
        "timestamp": "2025-12-06T07:13:14Z"
    }
}%
% curl -g https://postpass.geofabrik.de/api/0.2/interpreter \
  --data-urlencode "options[geojson]=false" \
  --data-urlencode "data=
SELECT
  kv.key,
  COUNT(*) AS usage_count
FROM postpass_pointlinepolygon,
LATERAL jsonb_each_text(tags) AS kv(key, value)
WHERE tags->>'amenity' = 'restaurant'
  AND kv.key IN (
    'air_conditioning','bar','branch_brand','brand','brewery',
    'capacity','changing_table','delivery','highchair','microbrewery',
    'min_age','organic','outdoor_seating','reservation','smoking',
    'stroller','stars','takeaway','toilets'
  )
GROUP BY kv.key
HAVING COUNT(*) > 10
ORDER BY usage_count DESC"

{
    "result": [
        {
            "key": "outdoor_seating",
            "usage_count": 157986
        },
        {
            "key": "takeaway",
            "usage_count": 85837
        },
        {
            "key": "brand",
            "usage_count": 64932
        },
        {
            "key": "smoking",
            "usage_count": 58032
        },
        {
            "key": "delivery",
            "usage_count": 43658
        },
        {
            "key": "air_conditioning",
            "usage_count": 23760
        },
        {
            "key": "reservation",
            "usage_count": 20474
        },
        {
            "key": "toilets",
            "usage_count": 19429
        },
        {
            "key": "capacity",
            "usage_count": 17825
        },
        {
            "key": "bar",
            "usage_count": 15249
        },
        {
            "key": "brewery",
            "usage_count": 6443
        },
        {
            "key": "changing_table",
            "usage_count": 5471
        },
        {
            "key": "microbrewery",
            "usage_count": 5105
        },
        {
            "key": "stars",
            "usage_count": 3857
        },
        {
            "key": "highchair",
            "usage_count": 3515
        },
        {
            "key": "organic",
            "usage_count": 1551
        },
        {
            "key": "min_age",
            "usage_count": 226
        },
        {
            "key": "stroller",
            "usage_count": 160 <-- really low
        }
    ],
    "metadata": {
        "generator": "Postpass API 0.2",
        "timestamp": "2025-12-06T07:13:14Z"
    }
}%

@cuatim
Copy link
Copy Markdown
Contributor Author

cuatim commented Dec 6, 2025

Are there any apps that promote this tag? Or is this currently just organic, manual growth?

very limited. Essentially only Baby friendliness JOSM user presets.

Its not the best tag. More specific tags like kerb height or door width would be better. But those are harder to collect and I feel adoption might be even lower...

fast_food for comparison:

% curl -g https://postpass.geofabrik.de/api/0.2/interpreter \
  --data-urlencode "options[geojson]=false" \
  --data-urlencode "data=
SELECT
  kv.key,
  COUNT(*) AS usage_count
FROM postpass_pointlinepolygon,
LATERAL jsonb_each_text(tags) AS kv(key, value)
WHERE tags->>'amenity' = 'fast_food'
  AND kv.key IN (
    'air_conditioning','bar','branch_brand','brand','capacity',
    'changing_table','delivery','diet_multi','drive_through',
    'highchair','min_age','organic','reservation','smoking',
    'stroller','takeaway','toilets'
  )
GROUP BY kv.key
HAVING COUNT(*) > 10
ORDER BY usage_count DESC"

{
    "result": [
        {
            "key": "takeaway",
            "usage_count": 286175
        },
        {
            "key": "brand",
            "usage_count": 242248
        },
        {
            "key": "drive_through",
            "usage_count": 105243
        },
        {
            "key": "delivery",
            "usage_count": 43718
        },
        {
            "key": "smoking",
            "usage_count": 24446
        },
        {
            "key": "air_conditioning",
            "usage_count": 13061
        },
        {
            "key": "toilets",
            "usage_count": 6786
        },
        {
            "key": "changing_table",
            "usage_count": 2596
        },
        {
            "key": "capacity",
            "usage_count": 1756
        },
        {
            "key": "highchair",
            "usage_count": 1540
        },
        {
            "key": "reservation",
            "usage_count": 600
        },
        {
            "key": "organic",
            "usage_count": 448
        },
        {
            "key": "bar",
            "usage_count": 225
        },
        {
            "key": "stroller", # <---------
            "usage_count": 84
        }
    ],
    "metadata": {
        "generator": "Postpass API 0.2",
        "timestamp": "2025-12-06T08:02:39Z"
    }
}

Copy link
Copy Markdown
Collaborator

@matkoniecz matkoniecz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

seems to make sense and it works, but usage is minimal currently

though it seems that I am open to adding basically anything viable to moreFields to expose existing data, with higher standards to fields

this may not match opinion of others

Copy link
Copy Markdown
Member

@tyrasd tyrasd left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Lgtm, as this is already included for shop and fast_food, it make sense to also have it for the related POI presets. Even though the usage is low, this makes the presets more consistent with each other.

@tyrasd tyrasd added the add-field add existing field to more entries, for field creation see new-field label Dec 16, 2025
@tyrasd tyrasd merged commit 4e72468 into openstreetmap:main Dec 16, 2025
5 checks passed
@cuatim cuatim deleted the cuatim-patch-stroller branch December 16, 2025 10:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

add-field add existing field to more entries, for field creation see new-field

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants