💾 Archived View for unbon.cafe › lejun › posts › 20230710_mapCompleteHvac.gmi captured on 2023-09-08 at 16:21:24. Gemini links have been rewritten to link to archived content
⬅️ Previous capture (2023-07-22)
-=-=-=-=-=-=-
Au détour d'une conversation sur le Fédiverse, il a été signalé l'existence d'une clé OpenStreetMap pour la climatisation[1], ainsi que de la difficulté d'accès et interaction avec celle-ci. Entrant dans la saison estivale, c'est le moment où jamais d'en faire mon premier thème MapComplete.
Plutôt que me limiter à l'air conditionné, j'ai étendu le thème au concept de HVAC – acronyme anglophone pour chauffage, ventilation, et climatisation – pour mettre en avant tous les lieux disposant d'une forme de contrôle des paramètres de l'air que sont la température, l'humidité, ou sa qualité générale.
À priori, seules deux clés existent actuellement à cet effet :
MapComplete dispose d'une documentation sur la création d'un thème personnalisé[3], j'ai été incapable de le suivre. La structure est particulièrement tordue, et se rapproche plus de bribes d'informations sur la question qu'un réel tutoriel pas-à -pas, ce que je vais tenter de tirer au clair ici.
La documentation indique différentes ressources jugées utiles :
Pour une simple mise en évidence des informations, une simple carte uMap en surcouche d'une requête Overpass sur les deux clés aurait suffit. L'avantage de MapComplete est de pouvoir proposer une solution de contribution aux données, au delà d'une simple visualisation.
Un thème MapComplete est contenu dans un fichier JSON. Il est composé de trois niveaux :
Le cœur d'un thème est le concept de « couches ». Chaque couche a pour objectif de répondre à un besoin précis (ex : Des bancs, pour une personne souhaitant s'asseoir), ce qui peut permettre sa réutilisation pour d'autres thèmes si jugée pertinente. Encore une fois, cette atomicité est essentielle ; Pas question d'utiliser les couches comme filtres – la fonction `filter` existe pour ça –, faute de quoi pourraient apparaître des doublons en faux-positifs si la création de données est autorisée.
Le tableau (`array`) `tagRenderings` concerne les données OpenStreetMap. Chaque attribut peut y être décrit via un ensemble :
Deux couches sont nécessaires à savoir les lieux chauffés, et les lieux climatisés. Pour avoir rapidement un prototype utilisable, et à défaut de bien saisir l'idée, j'ai récupéré les couches `builtins` du thème `onwheels` sur l'accessibilité.
Une question est définie pour chaque clé. L'une étant booléeenne, l'autre étant associé à une dizaine de valeurs[4], un mapping est requis dans chaque cas.
{ "id": "hvac", "version": "2023-07-10", "credits": "LeJun", "title": { "en": "Heating, ventilation, and air conditioning" }, "description": { "en": "Map of places using technologies to control air parameters such as temperature, humidity, and overall quality." }, "icon": "https://upload.wikimedia.org/wikipedia/commons/1/1a/Fan_%28example%29.svg", "startZoom": 14, "startLat": 0, "startLon": 0, "layers": [ { "builtin": [ "indoors", "hotel", "cafe_pub", "pharmacy", "hospital", "shops", "governements", "walls_and_buildings" ], "override": { "minzoom": 16 } }, { "tagRenderings": [ { "id": "airconditioning", "question": { "en": "Does this place provides air-conditioning?" }, "mappings": [ { "if": "air_conditioning=no", "then": { "en": "This place doesn't provide air-conditioning" } }, { "if": "air_conditioning=yes", "then": { "en": "This place provides air-conditioning" } } ] }, { "id": "heating", "question": { "en": "Is this place heated?" }, "freeform": { "key": "heating", "addExtraTags": [ "fixme=Freeform input used, value need to be checked" ] }, "render": { "en": "This place is heated through {heating}" }, "mappings": [ { "if": "heating=no", "then": { "en": "This place isn't heated" } }, { "if": "heating=yes", "then": { "en": "This place is heated" } }, { "if": "heating=fireplace", "then": { "en": "This place is heated through one or multiple fireplaces" } }, { "if": "heating=stove", "then": { "en": "This place is heated through one or multiple stoves" } }, { "if": "heating=radiator", "then": { "en": "This place is heated through one or multiple radiators" } }, { "if": "heating=underfloor", "then": { "en": "This place has underfloor heating" } } ] } ] } ] }
[1] Key:air_conditioning, OpenStreetMap Wiki 2023
[2] Key:heating, OpenStreetMap Wiki 2023