Bruit urbain
Chaque requête exige une clé d'API; voir Authentification.
Le module Bruit urbain sert le bruit modélisé de la route, du rail, des avions et des commerces
pour six villes canadiennes : Calgary, Edmonton, Vancouver, Toronto, Montréal et Québec. Il a trois
parties : une requête ponctuelle qui renvoie le bruit de l'hexagone situé à une coordonnée, une
superposition urban-noise qui colore n'importe quel style selon le calme de chaque lieu, et les
tuiles qui la portent, pour dessiner la couche vous-même. Les trois proviennent d'une même version
immuable, et chaque réponse la nomme.
Ces niveaux viennent d'un modèle de bruit, pas de microphones. Rien ne les a encore calibrés sur des mesures, et comparés aux mesures publiées pour Toronto, ils lisent de 3 à 6 dB trop bas selon le type de route. Servez-vous-en pour repérer et comparer des lieux, pas pour évaluer la conformité à un règlement, appuyer une réclamation juridique ou remplacer une étude acoustique.
Accès et tarifs
Bruit urbain est offert en aperçu tant qu'il couvre six villes : le point d'accès /noise/point,
la superposition urban-noise et ses tuiles sont derrière le module Bruit urbain, SKU
addon-urban-noise, à 39 $ US par mois ou 390 $ US par an, le même prix sur tous les forfaits
payants. Ajoutez-le depuis la page de facturation du tableau de bord, en plus de n'importe quel
forfait payant.
- Une clé sur forfait payant sans le module reçoit
403addon_required, qui nommeaddon-urban-noise. - Une clé du forfait dev est gratuite depuis une origine de développement (
localhost,127.0.0.1,*.localhost), ce qui vous permet de bâtir toute l'intégration dès maintenant. Depuis une origine de production, elle reçoit403dev_only, et au-delà des appels premium du mois (5 000, additionnés sur tous les modules), elle reçoitusage_limit_reached.
Une tuile de bruit ou une requête ponctuelle compte pour un appel du bassin commun de votre
forfait : le module achète l'accès, jamais du volume. Un refus n'est jamais facturé, pas plus
qu'un 422 ou un 503. La grille brute n'est pas vendue sous forme de fichier; si vous en avez
besoin, écrivez-nous. Voir
Modules et mesure de l'usage pour le lien entre
SKU et capacités, et Erreurs pour les corps d'erreur.
Requête ponctuelle
GET /noise/point?lat=51.054&lng=-114.0884Renvoie l'hexagone H3 de résolution 11 (environ 25 m de large) qui contient le point. lat et
lng sont en degrés WGS84 et tous deux requis; une valeur absente ou hors limites donne 400
bad_request.
curl "https://api.unmap.dev/noise/point?lat=51.054&lng=-114.0884&key=um_sk_live_..."import { Unmap } from "@unmap/sdk";
const unmap = new Unmap({ key: "um_sk_live_..." });
const { data, meta } = await unmap.noise.point({ lat: 51.054, lng: -114.0884 });{
"data": {
"h3": "8b12ccd2929afff",
"resolution": 11,
"city": "calgary",
"lden": 49.3,
"lnight": 40.2,
"score": 91,
"risk": 9,
"label": "Quiet",
"exceeds_who": { "day": false, "night": false },
"dominant_source": "road",
"sources_db": { "road": 45.7, "rail": 44.3, "aircraft": null, "commercial": 28 }
},
"meta": {
"data_version": "2026-11-10.28f32d82e125",
"attribution": "© OpenStreetMap contributors; noise model: PickYourPlace",
"licence": "ODbL-1.0"
}
}C'est l'hexagone du 236 11 Street NW, dans Hillhurst, à Calgary; meta est abrégé.
Un point hors des six villes, ou dans l'emprise d'une ville mais hors de sa grille modélisée,
donne 422 outside_coverage. Le corps énumère les villes couvertes dans cities, chacune avec
son slug, son name en anglais et en français et sa bbox, pour que vous puissiez dire à votre
utilisateur où les données s'étendent. Il ne répond jamais avec l'hexagone le plus proche.
L'enregistrement de bruit
| Champ | Ce que c'est |
|---|---|
h3 | L'index H3 de l'hexagone. |
resolution | 11, environ 25 m de large. |
city | calgary, edmonton, vancouver, toronto, montreal ou quebec-city. |
lden | Niveau jour-soir-nuit en dB (Lden européen) : le niveau sur 24 heures, le bruit du soir pondéré de 5 dB et celui de la nuit de 10 dB. |
lnight | Niveau de nuit en dB, de 23 h à 7 h. |
score | De 0 à 100, ancré sur les Lignes directrices relatives au bruit dans l'environnement de l'OMS (2018). 100 est calme. |
risk | 100 moins le score. |
label | Le score en mots : voir ci-dessous. |
exceeds_who | { day, night } : si lden dépasse 53 dB et lnight 45 dB, les niveaux de l'OMS (2018) pour le bruit routier. |
dominant_source | La source la plus forte : road (route), rail, aircraft (avions) ou commercial (commerces). |
sources_db | { road, rail, aircraft, commercial } : le niveau de chaque source en dB, ou null là où cette source n'est pas modélisée à portée. |
note | Présent seulement quand lden vaut null. |
Les étiquettes du score sont les mêmes partout, dans l'API, les couleurs de la superposition et le
bloc. Les valeurs de label restent en anglais, comme tous les identifiants :
score | label |
|---|---|
| 80 et plus | Quiet (calme) |
| 60 à 79 | Moderate (modéré) |
| 40 à 59 | Noisy (bruyant) |
| 20 à 39 | Very noisy (très bruyant) |
| Moins de 20 | Severe (sévère) |
Un niveau nul signifie aucune source modélisée, jamais le silence. Là où aucune route, voie
ferrée, trajectoire d'avion ni source commerciale n'est à portée du modèle, l'hexagone a
lden: null, et score, risk, label et les indicateurs de l'OMS valent null aussi, avec
note: "no modelled source within range". C'est le cas de 12 à 25 % des hexagones de
résolution 11, selon la ville. Ne l'affichez jamais comme 0 dB ni comme calme : le modèle n'a
simplement rien à dire à cet endroit.
La superposition de bruit
Ajoutez overlays=urban-noise à l'URL d'un style. Elle se dessine sur n'importe quel style, comme
un remplissage au-dessus des routes et sous les étiquettes, coloré selon le score :
curl "https://api.unmap.dev/styles/muted.json?overlays=urban-noise&key=um_sk_live_..."import { Unmap } from "@unmap/sdk";
const unmap = new Unmap({
key: "um_pk_live_...",
container: "map",
style: "muted",
overlays: ["urban-noise"],
center: [-73.57, 45.5],
zoom: 13,
});score | Couleur |
|---|---|
| Moins de 20 | #ef4444 rouge |
| 20 à 39 | #f97316 orangé |
| 40 à 59 | #f59e0b ambre |
| 60 à 79 | #84cc16 lime |
| 80 et plus | #22c55e vert |
Le remplissage est à 45 % d'opacité, pour que les rues restent lisibles dessous, et un hexagone
sans source modélisée reste transparent. Ce sont des couleurs de données, les mêmes que celles de
la carte du bruit de PickYourPlace, et elles ne changent ni avec le style ni avec un thème. muted
s'y prête le mieux, car ses gris laissent la couleur aux données. Un overlays=urban-noise
explicite venant d'une clé sans le module donne un 403; un profil
qui l'inclurait l'omet plutôt, pour que la carte de base s'affiche quand même.
Dessiner la couche vous-même
Les tuiles sont à /layers/urban-noise/{z}/{x}/{y}, avec une seule couche source, noise, à
tous les zooms. Chaque plage de zoom porte une résolution H3, si bien que les hexagones
s'affinent à mesure que vous zoomez :
| Zoom | Résolution H3 | Taille de l'hexagone | Hexagones (six villes) |
|---|---|---|---|
| 0 à 10 | 8 | environ 460 m | 9 623 |
| 11 à 12 | 9 | environ 174 m | 64 837 |
| 13 à 14 | 10 | environ 66 m | 447 261 |
| 15 à 18 | 11 | environ 25 m | 3 113 322 |
Chaque entité est un hexagone portant les propriétés h3_id, lden, lnight,
noise_score_who, noise_risk_who, exceeds_who_day, exceeds_who_night, dominant_source,
road_noise_db, rail_noise_db, aircraft_noise_db et commercial_noise_db. Une propriété
sans valeur est absente de la tuile : filtrez sur ["has", "lden"] pour écarter les hexagones
sans source modélisée. Aux résolutions 8 à 10, chaque valeur est la médiane des hexagones de
résolution 11 qu'il contient.
map.addSource("noise", {
type: "vector",
tiles: ["https://api.unmap.dev/layers/urban-noise/{z}/{x}/{y}?key=um_pk_live_..."],
minzoom: 0,
maxzoom: 18,
attribution: "© OpenStreetMap contributors; noise model: PickYourPlace",
});
map.addLayer({
id: "noise-night",
type: "fill",
source: "noise",
"source-layer": "noise",
filter: ["has", "lnight"],
paint: {
"fill-color": ["step", ["get", "lnight"], "#22c55e", 40, "#84cc16", 45, "#f59e0b", 50, "#f97316", 55, "#ef4444"],
"fill-opacity": 0.45,
},
});Cet exemple colore plutôt selon le niveau de nuit, avec 45 dB, le niveau de nuit de l'OMS, comme seuil du passage à l'ambre.
Comment les niveaux sont modélisés
Le modèle est celui de PickYourPlace, exécuté pour chaque ville les 9 et 10 novembre 2026. En termes simples :
- Les routes suivent la méthode britannique CRTN 1988 (Calculation of Road Traffic Noise) : chaque route est coupée en tronçons d'au plus 100 m, le niveau de chaque tronçon dépend de sa circulation, de sa vitesse, de sa part de véhicules lourds, de son revêtement et de sa pente, et il décroît avec la distance sur un sol dur ou meuble. Les bâtiments et les écrans entre la route et l'hexagone l'atténuent. Les niveaux de nuit et Lden proviennent de la conversion TRL du niveau CRTN.
- La circulation est celle des comptages de la Ville de Calgary à Calgary, avec les débits et les parts de véhicules lourds des routes provinciales de l'Alberta. Dans les cinq autres villes, chaque route prend un débit par défaut selon sa classe de route OpenStreetMap.
- Les bâtiments de Calgary ont les hauteurs lidar de la Ville. Ailleurs, ce sont les empreintes de Ressources naturelles Canada, avec la hauteur OpenStreetMap là où elle est indiquée et 6 m sinon : une tour atténue donc comme une maison.
- Le rail est la voie ferrée d'OpenStreetMap, avec le nombre de trains aux passages à niveau de Transports Canada.
- Les avions sont représentés par les courbes de prévision de l'ambiance sonore (NEF). Deux villes ont des courbes publiées : celles de la Ville de Calgary à Calgary et, à Edmonton, celles du règlement sur la zone de protection des abords de l'aéroport international d'Edmonton (Alta Reg 55/2006, annexe 2). À Vancouver, à Toronto, à Montréal et à Québec, les courbes sont modélisées à partir des pistes cartographiées dans OpenStreetMap, avec un panache ajusté sur les courbes ouvertes de Calgary : c'est un modèle des pistes, pas la prévision de l'aéroport. Les mouvements d'avions de nuit sont supposés à 10 %.
- Le bruit commercial vient des points d'intérêt d'OpenStreetMap, avec les permis d'affaires que publient Calgary, Edmonton, Vancouver et Toronto.
Les sources s'additionnent en énergie sonore en niveaux de jour, de soir et de nuit, dont
découlent lden et lnight. Les lignes directrices de l'OMS (2018) fixent à 53 dB Lden et
45 dB Lnight les niveaux au-delà desquels le bruit routier est associé à des effets nocifs sur la
santé; exceeds_who les compare, et score y est ancré.
Attribution et licence
Les niveaux de bruit sont calculés à partir des routes, des voies ferrées, des écrans et des
points d'intérêt d'OpenStreetMap; toute la base de données de bruit, niveaux calculés compris, est
donc une base dérivée d'OpenStreetMap sous Open Database License (ODbL). Affichez « © OpenStreetMap
contributors » partout où vous affichez les données ou la superposition. Chaque réponse de
/noise/point porte le crédit dans meta.attribution (« © OpenStreetMap contributors; noise
model: PickYourPlace ») et la licence dans meta.licence (ODbL-1.0), et la superposition place
le même crédit sur la carte. Mettez en cache selon meta.data_version : une version ne change
jamais une fois publiée.
La vente de l'accès est permise par l'ODbL, tout comme votre usage de ce que vous obtenez.
Quiconque le demande peut obtenir la base de bruit dérivée elle-même sous ODbL : écrivez à
hello@unmap.dev pour obtenir une copie de la version que vous utilisez, et vous recevrez ses
quatre archives PMTiles et son manifest.json, conservés sans modification pour chaque version.
Les intrants qui ne viennent pas d'OpenStreetMap conservent leur propre licence et n'exigent que l'attribution :
- Ville de Calgary, Open Government Licence – City of Calgary : débits de circulation, bâtiments 3D avec hauteurs lidar, voies ferrées, courbes de prévision de l'ambiance sonore et permis d'affaires.
- Ressources naturelles Canada, Licence du gouvernement ouvert – Canada : empreintes de bâtiments.
- Transports Canada, Licence du gouvernement ouvert – Canada : passages à niveau et nombre de trains.
- Gouvernement de l'Alberta, Open Government Licence – Alberta : débits de circulation et parts de véhicules lourds des routes provinciales.
- Villes d'Edmonton, de Vancouver et de Toronto, chacune sous sa propre Open Government Licence : permis d'affaires.
- © Alberta King's Printer : les courbes de prévision de l'ambiance sonore d'Edmonton, numérisées à partir de l'annexe 2 du règlement sur la zone de protection des abords de l'aéroport international d'Edmonton (Alta Reg 55/2006).
- Copernicus DEM GLO-30, pour les pentes des routes : © DLR e.V. 2010-2014 and © Airbus Defence and Space GmbH 2014-2018 provided under COPERNICUS by the European Union and ESA; all rights reserved.
La liste complète est aussi l'attribution de la fiche de la couche au
catalogue. L'interprétation que PickYourPlace fait de ces niveaux,
comme ses scores et ses comparaisons de quartiers, ne fait pas partie de cette couche.
Couverture et limites
- Six villes, chacune sur sa propre grille modélisée : Calgary (631 986 hexagones en résolution 11), Montréal (623 556), Toronto (582 433), Edmonton (535 841), Québec (465 816) et Vancouver (273 690). Rien en dehors; une nouvelle ville s'ajoute au même module.
- Calgary est la ville la mieux calibrée, avec ses propres comptages de circulation et ses hauteurs de bâtiments lidar. Les cinq autres utilisent des débits par défaut selon la classe de route et la hauteur par défaut de 6 m : l'atténuation derrière les grands immeubles y est sous- estimée, et les niveaux y lisent trop haut.
- Rien n'a calibré le modèle sur des mesures. Comparé aux mesures de Santé publique Toronto, il lit de 3 à 6 dB trop bas selon le type de route.
- Il n'y a pas de plancher de bruit de fond : un hexagone loin de toute source peut lire sous 30 dB.
- Les valeurs sont par hexagone, pas par adresse, et un même profil horaire, tiré des artères de Calgary, sert à toutes les routes de toutes les villes.
- Ce sont des données de dépistage. Elles ne conviennent pas à un usage réglementaire, juridique ou de conformité.
Code client
SDK
@unmap/sdk expose la requête sous unmap.noise.point({ lat, lng }). Elle renvoie
{ data, meta } et lève une NoiseError portant le code de la passerelle : addon_required,
avec le SKU dans addon, sur un 403, et outside_coverage, avec les villes couvertes dans
cities, sur un 422.
import { Unmap, NoiseError } from "@unmap/sdk";
const unmap = new Unmap({ key: "um_sk_live_..." });
try {
const { data } = await unmap.noise.point({ lat: 45.5019, lng: -73.5674 });
if (data.lden === null) console.log("Aucune source modélisée ici");
else console.log(`${data.label} : ${data.lden} dB Lden, ${data.lnight} dB la nuit`);
} catch (error) {
if (error instanceof NoiseError && error.code === "outside_coverage") {
console.log("Couvert :", error.cities?.map((city) => city.name.fr).join(", "));
}
}Bloc de carte du bruit urbain
urban-noise-map est une page entière bâtie à partir du registre : la superposition avec sa
légende, une bascule Jour (Lden) et Nuit (Lnight) pour la coloration, et une fiche pour tout lieu
que vous cliquez ou cherchez, avec son score, ses niveaux comparés aux seuils de l'OMS et une barre
par source. Installez-le comme n'importe quel autre bloc :
npx shadcn@latest registry add @unmap=https://registry.unmap.dev/r/{name}.json
npx shadcn@latest add @unmap/urban-noise-map
npx shadcn-vue@latest add https://registry.unmap.dev/r/vue/urban-noise-map.jsonLes deux premières lignes sont pour React; la troisième est pour Vue et Nuxt, où shadcn-vue prend directement l'URL de l'élément.
Étapes suivantes
- Couches pour la façon dont les superpositions se composent sur un style, et la fiche du catalogue.
- API Cartes pour le style
muted. - Forfaits et limites pour les origines de développement et la mesure de l'usage.