CINXE.COM
alan_gr's Diary | Mapping Local POIs Part 1: How many hairdressers does one barrio need? | OpenStreetMap
<!DOCTYPE html> <html lang="en" dir="ltr"> <head data-locale="en" data-preferred-editor="id" data-preferred-languages="[]"> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1"> <script src="/assets/es6-cc19e63b7a2e5f3f8c46ccc37c11ad86296fc884065d87953d54ce1ea036b383.js"></script> <script src="/assets/turbo-130bc04eb27728ef810e643ee13c633b1f3d40f94e3008b768da944d51362570.js" type="module"></script> <script src="/assets/application-e0a1093982b9a7dd5a32355c3cec5a3a1d2ced91de2496a4e0986539a6793e37.js"></script> <script src="/assets/i18n/en-d5230800fcd121573166ba17d5bd19a3c85ef44bf73681078ab732a3b8848a69.js"></script> <link rel="stylesheet" href="/assets/screen-ltr-b9104c2ca372ecae9016145b60d2ab6b12a6870c75b3a543ddc1ea195943cbfd.css" media="screen" /> <link rel="stylesheet" href="/assets/print-ltr-2b3d6571f8a48820d650d5ce29f567269af78d5158f89ecab755db8c5d3d62db.css" media="print" /> <link rel="stylesheet" href="/assets/leaflet-all-7224da9b323ba8c997b953386cd9f33bfe5f0860fab29e9e4c12b71f369b9dc9.css" media="screen, print" /> <link rel="icon" type="image/x-icon" href="/assets/favicon-042c50e8224a5c999369ec96f5367cb5b14db4671f1485caeec1277481073093.ico" /> <link rel="apple-touch-icon" type="image/png" href="/assets/apple-touch-icon-57x57-0af2b52ac2b1a8cb0aba42f17aa901bfdedb9174bd978f838e3b3e1dd8602f52.png" sizes="57x57" /> <link rel="apple-touch-icon" type="image/png" href="/assets/apple-touch-icon-60x60-cff74c9066d8e7fd08b29407712edbae5613cc9a4c03ee0398a89502a6a41d1f.png" sizes="60x60" /> <link rel="apple-touch-icon" type="image/png" href="/assets/apple-touch-icon-72x72-63c6fdf3ddf65feebac1c0441bf6a378d1e4bde7107f598ae86733c402895eae.png" sizes="72x72" /> <link rel="apple-touch-icon" type="image/png" href="/assets/apple-touch-icon-76x76-1740d6e7a59521693c496dd8fbe1caf3d5ad302017cb0f5073b6914b4f5b7544.png" sizes="76x76" /> <link rel="apple-touch-icon" type="image/png" href="/assets/apple-touch-icon-114x114-20ba9df1a8f9b341040d661b7942b7b10288b9b4c4ce0663e10018958dc7f4a8.png" sizes="114x114" /> <link rel="apple-touch-icon" type="image/png" href="/assets/apple-touch-icon-120x120-c304991e604d1be82639709b96fb87f7b6b6688cc0d04d5f6141604259299648.png" sizes="120x120" /> <link rel="apple-touch-icon" type="image/png" href="/assets/apple-touch-icon-144x144-fbf20bdf9d2f7c1fe8eb85d7869a9bda285be88c93a39438150f5eb5955758ce.png" sizes="144x144" /> <link rel="apple-touch-icon" type="image/png" href="/assets/apple-touch-icon-152x152-af45dc979e972cab863517b2cb33a3dcf3e04e02a2eb2734c6f93edc21fa395d.png" sizes="152x152" /> <link rel="apple-touch-icon" type="image/png" href="/assets/apple-touch-icon-180x180-ea6361d7ae5b3f08c6290652ad703fa239364cc09c84873044f3299845f24652.png" sizes="180x180" /> <link rel="icon" type="image/png" href="/assets/favicon-32x32-99b88fcadeef736889823c8a886b89d8cada9d4423a49a27de29bacc0a6bebd1.png" sizes="32x32" /> <link rel="icon" type="image/png" href="/assets/favicon-194x194-79d3fb0152c735866e64b1d7535d504483cd13c2fad0131a6142bd9629d30de2.png" sizes="194x194" /> <link rel="icon" type="image/png" href="/assets/favicon-96x96-6ffbc38962fddb870f9577b76430a0ee4db5fb4eca485f850cd45436d7f3eb87.png" sizes="96x96" /> <link rel="icon" type="image/png" href="/assets/android-chrome-192x192-f970b9be3965dfda6ea9481b305c39b2ec794e296f802235e30d4671f0f896e1.png" sizes="192x192" /> <link rel="icon" type="image/png" href="/assets/favicon-16x16-474476c1b2381628a81361a9e2bf04b936d21f77c59e84b48c6c69ea376fb6cf.png" sizes="16x16" /> <link rel="mask-icon" href="/assets/tab-icon-3e700a12d38a1bba06d674ed663824232025cd6b0ca5c439c846740a7468b302.svg" color="#7ebc6f"> <link rel="manifest" href="/assets/manifest-b2cc1407226d3e16e6149425747239c259fbe44b41bff3aca36ca6d9e56a6e18.json"> <meta name="msapplication-config" content="/assets/browserconfig-c59184dc0264731151cbf50ae58f7fa8ae5153138013f125203e1193800f862f.xml"> <meta name="msapplication-TileColor" content="#00a300"> <meta name="msapplication-TileImage" content="/assets/mstile-144x144-02723f6f7cb2c18e6f8041c93f80982decb52b24a7e447477bc2ce3136d75806.png"> <meta name="theme-color" content="#ffffff"> <meta name="turbo-refresh-method" content="morph"> <meta name="turbo-refresh-scroll" content="preserve"> <link href="https://www.openstreetmap.org/user/alan_gr/diary/405425" rel="canonical" /> <link rel="search" type="application/opensearchdescription+xml" title="OpenStreetMap Search" href="/assets/osm-42b7b3fbcee2193e455a773db6cd3d34a2f48ca94547fed54901dd9d8307b02b.xml"> <meta name="description" content="OpenStreetMap is the free wiki world map."> <meta property="og:site_name" content="OpenStreetMap"> <meta property="og:title" content="Mapping Local POIs Part 1: How many hairdressers does one barrio need?"> <meta property="og:type" content="website"> <meta property="og:url" content="https://www.openstreetmap.org/user/alan_gr/diary/405425"> <meta property="og:description" content="Recently I have been trying to systematically improve OSM data about shops, businesses, and other Points of Interest in a small area of my city. Like many OSM contributors before me, I have been torn between the desire to make my local map as complete as possible, and the realisation of just how much time is needed to do that. My observations in the following series of diary posts may not be very original, but perhaps theyll help me to clarify my thoughts on the subject."> <meta property="og:image" content="https://linesinalandscape.com/assets/images/overpass-background-area-medium.jpg"> <meta property="og:image:alt" content="map of the area discussed in the diary entry"> <meta property="article:published_time" content="2024-10-28T18:30:38Z"> <link rel="alternate" type="application/rss+xml" title="RSS" href="https://www.openstreetmap.org/user/alan_gr/diary/rss" /> <meta name="csrf-param" content="authenticity_token" /> <meta name="csrf-token" content="gQ_9m_JovaT0dhuUsuNqsUPqFosIGPlIAwCVpfNtMyiTTg6yObsPfiFkrvNVqTMjeWEmi4g1GFCPvnqGLtnNjg" /> <meta name="csp-nonce" content="EQP3cKxITIa44Hbz2PI8n9n+8XssX2jf" /> <title>alan_gr's Diary | Mapping Local POIs Part 1: How many hairdressers does one barrio need? | OpenStreetMap</title> </head> <body class="diary_entries diary_entries-show"> <header class="d-flex bg-body text-nowrap closed z-3"> <h1 class="d-flex m-0 fw-semibold"> <a href="/" class="icon-link gap-1 text-body-emphasis text-decoration-none geolink"> <img alt="OpenStreetMap logo" src="/assets/osm_logo-4b074077c29e100f40ee64f5177886e36b570d4cc3ab10c7b263003d09642e3f.svg" width="30" height="30" /> OpenStreetMap </a> </h1> <a href="#" id="menu-icon"></a> <nav class='primary'> <div id="edit_tab" class="btn-group"> <a class="btn btn-outline-primary geolink editlink" id="editanchor" data-editor="id" href="/edit">Edit</a> <button class='btn btn-outline-primary dropdown-toggle dropdown-toggle-split flex-grow-0' type='button' data-bs-toggle='dropdown'></button> <ul class='dropdown-menu'> <li> <a data-editor="id" class="geolink editlink dropdown-item" href="/edit?editor=id">Edit with iD (in-browser editor)</a> </li> <li> <a data-editor="remote" class="geolink editlink dropdown-item" href="/edit?editor=remote">Edit with Remote Control (JOSM, Potlatch, Merkaartor)</a> </li> </ul> </div> </nav> <nav class='secondary d-flex gap-2 align-items-center'> <ul class='nav flex-nowrap'> <li class="compact-hide nav-item"> <a class="nav-link text-secondary" href="/history">History</a> </li> <li class="compact-hide nav-item"> <a class="nav-link text-secondary" href="/export">Export</a> </li> <li class="compact-hide nav-item"> <a class="nav-link text-secondary" href="/traces">GPS Traces</a> </li> <li class="compact-hide nav-item"> <a class="nav-link text-secondary" href="/diary">User Diaries</a> </li> <li class="compact-hide nav-item"> <a class="nav-link text-secondary" href="/communities">Communities</a> </li> <li class="compact-hide nav-item"> <a class="nav-link text-secondary" href="/copyright">Copyright</a> </li> <li class="compact-hide nav-item"> <a class="nav-link text-secondary" href="/help">Help</a> </li> <li class="compact-hide nav-item"> <a class="nav-link text-secondary" href="/about">About</a> </li> <li id="compact-secondary-nav" class="dropdown nav-item"> <button class="dropdown-toggle nav-link btn btn-outline-secondary border-0 bg-body text-secondary" type="button" data-bs-toggle="dropdown">More</button> <ul class="dropdown-menu"> <li><a class="dropdown-item" href="/history">History</a></li> <li><a class="dropdown-item" href="/export">Export</a></li> <li><a class="dropdown-item" href="/traces">GPS Traces</a></li> <li><a class="dropdown-item" href="/diary">User Diaries</a></li> <li><a class="dropdown-item" href="/communities">Communities</a></li> <li><a class="dropdown-item" href="/copyright">Copyright</a></li> <li><a class="dropdown-item" href="/help">Help</a></li> <li><a class="dropdown-item" href="/about">About</a></li> </ul> </li> </ul> <div class="d-inline-flex btn-group login-menu" role=""> <a class="geolink btn btn-outline-secondary" href="/login?referer=%2Fuser%2Falan_gr%2Fdiary%2F405425">Log In</a> <a class="btn btn-outline-secondary" href="/user/new">Sign Up</a> </div> </nav> </header> <div id="content" class=""> <div class="content-heading bg-body-secondary border-bottom border-secondary-subtle"> <div class="content-inner "> <div class="row"> <div class="col-sm-auto"> <img class="user_image border border-secondary-subtle bg-body" alt="" width="100" height="100" src="/assets/avatar-c143fe593788b7de19f84df0a6ffd4433400bf343af670feface7cbfb13e67e6.svg" /> </div> <div class="col"> <h1><a href="/user/alan_gr/diary">alan_gr's Diary</a></h1> <p><a href="/user/alan_gr/diary/rss"><img class="align-text-bottom" src="/assets/RSS-3e2f4eddf1fa4751b43493728dbc559c766daf848ccbda961627ca36e39dfe88.png" width="16" height="16" /></a></p> </div> </div> </div> </div> <div class="content-body"> <div class="content-inner"> <article class='diary_post border-top border-secondary-subtle py-3 user_5307206'> <div class='mb-3'> <h2><a href="/user/alan_gr/diary/405425">Mapping Local POIs Part 1: How many hairdressers does one barrio need?</a></h2> <small class='text-body-secondary'> Posted by <a href="/user/alan_gr">alan_gr</a> on 28 October 2024 in <a href="/diary/en">English</a>. Last updated on 29 October 2024. </small> </div> <div class="richtext text-break" xml:lang="en" lang="en"> <p>Recently I have been trying to systematically improve OSM data about shops, businesses, and other Points of Interest in a small area of my city. Like many OSM contributors before me, I have been torn between the desire to make my local map as complete as possible, and the realisation of just how much time is needed to do that. My observations in the following series of diary posts may not be very original, but perhaps they’ll help me to clarify my thoughts on the subject.</p> <h1 id="background">Background</h1> <p>Málaga is divided into about 200 <em>barrios</em> or neighborhoods, all with well-defined boundaries in OSM. I chose to focus on an area of four adjoining barrios slightly to the northeast of the historic centre. The main axis of this area, formed by Calle Victoria and Calle Cristo de la Epidemia, is about 1km long (the green dashes in the map below). These main thoroughfares, and many of the smaller streets, are lined by apartment blocks with commercial premises on the ground floor. The hillier areas to the east are more purely residential. Most shops are quite small, many are sole traders, and there are no shopping malls.</p> <p><img src="https://linesinalandscape.com/assets/images/overpass-background-area-medium.jpg" alt="map of the area discussed in the diary entry"></p> <p>To be clear, I am not claiming this area is representative of anything but itself. Even in the same city, there are neighbourhoods with denser concentrations of POIs due to shopping malls, and areas that are almost entirely residential with very few POIs.</p> <p>Various OSM contributors have added POI data here over the years, with a particularly big effort in 2017. I have updated individual POIs from time to time when I noticed changes, but I was aware that I hadn’t been very diligent about this, so there was probably quite a lot of outdated data. Still, I reckoned POIs in the area were reasonably well mapped, and that it wouldn’t take too long to add some missing shops and update others.</p> <p>Spoiler: I was wrong.</p> <h1 id="complete-data--almost">Complete data … almost</h1> <p>Over the period of the survey (about 2 months), the number of POIs increased from 258 to 376.</p> <p>I will talk about the reasons behind that change in a future diary entry. But first, I want to look at the data as it is now. Often discussions of OSM POI data have to start from the assumption that the data is incomplete. Looking at “my” area just after a survey gives us a chance to consider an “almost complete” OSM dataset.</p> <p>Why only “almost”? There are a few reasons: * The definition of a POI is inevitably arbitrary. My definition is essentially “everthing tagged in OSM as shop, amenity, office, healthcare, craft, and tourism, EXCEPT things I decided to exclude”. Those exceptions are mainly high-volume tags such as individual parking spaces, waste/recycling facilities, and street furniture such as benches. * Some offices are identifiable only by a small plaque in a doorway, and I didn’t go out of my way to find all these (although I did try to confirm those already mapped). * Local business owners thoughtlessly went on doing things like retiring and selling their businesses while I was in the middle of my surveying effort, so I was never quite sure of being up to date. * I probably just got some things plain wrong.</p> <h1 id="current-pois-some-numbers">Current POIs: Some numbers</h1> <h2 id="pois-by-type">POIs by type</h2> <p>The 376 POIs (according to my definition above) fall into these broad groups:</p> <table class="table table-sm w-auto"> <thead> <tr> <th>feature_group</th> <th>frequency</th> <th>frequency_pc</th> </tr> </thead> <tbody> <tr> <td>amenity - food+drinks</td> <td>56</td> <td>14.9</td> </tr> <tr> <td>amenity - general</td> <td>48</td> <td>12.8</td> </tr> <tr> <td>craft - general</td> <td>14</td> <td>3.7</td> </tr> <tr> <td>healthcare - general</td> <td>26</td> <td>6.9</td> </tr> <tr> <td>office - general</td> <td>42</td> <td>11.2</td> </tr> <tr> <td>shop - clothes</td> <td>15</td> <td>4.0</td> </tr> <tr> <td>shop - food</td> <td>52</td> <td>13.8</td> </tr> <tr> <td>shop - for the body</td> <td>51</td> <td>13.6</td> </tr> <tr> <td>shop - general</td> <td>61</td> <td>16.2</td> </tr> <tr> <td>tourism - general</td> <td>11</td> <td>2.9</td> </tr> </tbody> </table> <p>I have defined a few large groupings following Vespucci/JOSM presets, with everything else falling into “general”. Both “amenity - general” and “shop - general” cover a very diverse range of other POIs.</p> <p>A plot of these points shows that POI types are fairly well mixed throughout the area. The mainly residential northeast corner is an exception - the POIs here are mainly tourist accommodation. <img src="https://linesinalandscape.com/assets/images/pois-current-by-group.png" alt="map of POIs with multiple colours distinguishing different types of POI"></p> <h2 id="tag-distribution">Tag distribution</h2> <p>The 376 POIs are mapped by 116 distinct feature tags (amenity=bank, shop=supermarket and so on). The most common single tag is “hairdresser” with 29 uses, some way ahead of “cafe”, “restaurant”, and “fast_food”. At the other end of the scale, 52 tags are used only once. Only 21 of the 116 tags are used more than 4 times.</p> <p>Within the “office” grouping, “estate_agent” and “property_management” accounted for 17 POIs between them - possibly a reflection of the growing importance of vacation rentals.</p> <h2 id="main-streets-v-side-streets">Main streets v side streets</h2> <p>One thing that surprised me was the number of premises on side streets. I previously had the impression that most POIs were along the main axis I mentioned above, plus Calle Ferrándiz which branches off to the east.</p> <p>Spoiler: I was wrong again.</p> <p>In fact 55 percent of POIs were on other streets.</p> <p>Even extending the definition of “main street” a bit further (roughly to anything classed as tertiary or above in OSM), a healthy 45 percent of POIs were on side streets.</p> <h2 id="how-many-hairdressers">How many hairdressers?</h2> <p>While surveying the zone I gradually started to become haunted by a feeling that I was spending most of my time mapping hairdressers, barbers, and beauty salons. (Many such places label themselves “Peluquería - Estética”, so any distinction between hairdressers and beauty salons is rather arbitrary). It felt quite appropriate that I ended up mapping the Association of Ladies’ Hairdressers (as an association, not a hairdresser).</p> <p>It turns out that 38 POIs, about 10% of the total, are hair/beauty shops. Comparing with shops rather than all POIs, that’s more than 21% of shops - compared to 10% in OSM worldwide. At face value that supports my impression that this particular area is strangely oversupplied with hairdressers.</p> <p>But there is another possibility: maybe it’s quite normal for one in five shops to be hair and beauty salons, and it’s the 10% global OSM figure that is misleading. Perhaps these businesses are typically small and run by sole traders, and get less attention from mappers than larger shops or brands. That was certainly the case in my area until my recent systematic mapping.</p> <p>In my next diary entry I’ll look at brands … and their absence.</p> </div> Location: <a href="/#map=14/36.7286886463233/-4.412802457809449"><abbr class="geo" title="36.7287; -4.4128">Cristo de la Epidemia, Centro, Málaga, Málaga-Costa del Sol, Malaga, Andalusia, Spain</abbr></a> <nav class='secondary-actions'> <ul class='clearfix'> </ul> </nav> </article> <div id="comments" class="comments mb-3 overflow-hidden"> <div class="row border-bottom border-secondary-subtle"> <h2 class="col">Discussion</h2> </div> </div> <div> <h3 id="newcomment"><a href="/login?referer=%2Fuser%2Falan_gr%2Fdiary%2F405425">Log in</a> to leave a comment</h3> </div> </div> </div> </div> <noscript><p><img src="https://matomo.openstreetmap.org/matomo.php?idsite=1" class="matomo" alt="" /></p></noscript> </body> </html>