dog=* on beaches: 1,910 tagged out of 381,331 — and what to do with the seasonal values

I maintain BeachScout, a beach-finding app built on OSM data, and to do that I pre-generate per-country extracts…, and to do that I pre-generate per-country extracts of everything beach-related — 381,331 places across the countries I cover. That gave me an easy way to look at how dog=* is actually used on beaches, and the numbers surprised me enough that I thought they were worth sharing.

Coverage is very thin. Of those 381,331 places, 1,910 carry a dog tag. Under 1%. In a seven-country sample of 30,776 beaches, 597 were tagged — Germany is the best covered at around 5%, Greece had a single one, Serbia none at all.

Value distribution across the 1,910:


932 no
600 yes
248 leashed
75 designated
34 unleashed
3 official

plus a small tail of hand-typed values.

Prohibitions outnumber permissions almost everywhere. Germany 162 no against 119 yes; Croatia 69 against 28. People seem to map the ban more diligently than the permission. For a beach visitor the ban is arguably the more valuable message anyway — better to know before driving out with the dog in the car.

The question I actually have is about the seasonal values. The tail includes things like:


no@(may 01-sep 30)
no @ mar 15 - oct 15
partially
0
1

The first two are clearly conditional restrictions and clearly meant honestly by whoever mapped them. Rendering them as a flat “dogs not allowed” would be wrong for half the year. Right now I detect them and show a generic “rules change with the season, check local signs” message, which is honest but throws away information the mapper took the trouble to record.

Is there an established convention I should be parsing here instead — dog:conditional=*, or the opening-hours syntax proper? And is partially / 0 / 1 worth cleaning up systematically, or is the volume too small to bother?

Happy to share the extraction script or the full value list if it’s useful to anyone.

[formatting corrected by the moderator]

2 Likes

dog=no @ (Mar 15 - Aug 15) yep, these should be Conditional restrictions - OpenStreetMap Wiki

probably dog=no with dog:conditional=yes @ ... override (but dog=yes dog:conditional=no @ (Mar 15 - Aug 15) is also technically valid even if trap for less advanced data consumers), but ideally one would contact original mappers

both? Long tail of weird, unusual and garbage values is typical, data consumer often can just treat them as untagged

this is normal pattern

Thank you Mateusz on your useful comments. I will change accordingly.

I assume you’ve read Key:dog - OpenStreetMap Wiki particularly there’s a section on conditional access.

But, as you note, there’s not huge coverage right now.

One thing that makes mapping harder is that a beach may have different zones for dogs that have different access restrictions, and some of those are conditional (e.g. time of year). An example I’ve mapped is Scarborough beach (discussion here: Splitting beach into dog-access sections - edit sanity check)