Browser-based acoustic mapping tool — visualize sound-level surveys and simulate point-source propagation (ISO 9613-2) with Maekawa diffraction on real OpenStreetMap building geometry.
Strumento browser di mappatura acustica — visualizza rilievi fonometrici e simula la propagazione da sorgente puntuale (ISO 9613-2) con diffrazione Maekawa su edifici reali OpenStreetMap.
A single-file, dependency-light demonstrative tool that runs entirely
in the browser. No backend, no installation, no telemetry — open
index.html and you have a working acoustic mapping environment.
Status: working proto v0.5. Demonstrative, not certified for legal use. See Limitations before considering anything beyond education and exploration.
- ✅ Measure mode — load a CSV survey (
lat, lon, leq): color-coded markers, kernel-density heatmap, optional IDW interpolated isolines, aggregate statistics, DPCM 14/11/1997 acoustic class limits (Italian classes I–VI), and a spherical propagation halo on every measure point (visualA_divreference) with an on-map halo legend note - ✅ Predict mode — place a point source, ISO 9613-2 propagation per third-octave band (63 Hz – 8 kHz) with Maekawa diffraction over the first OpenStreetMap building intercepted on the source→receiver path; OSM building geometry auto-fetched via the Overpass API
- ✅ Building data transparency — estimated-height buildings
flagged (dashed border + counter); >70% estimated triggers a
warning banner; click any building for a drawer with used height,
height source (
heighttag /building:levels × 3m/ default), OSM tags and a link to the building's OSM page; permanent height labels at high zoom - ✅ IT / EN UI toggle — full runtime language switch (complete string dictionary; labels, tooltips, alerts, validation table, drawer, docs and disclaimer all re-render)
- ✅ Unified loading popup — one consistent overlay for CSV / Overpass / propagation operations
- ✅ Screenshot PNG export — composite map + legend + results,
html2canvaslazy-loaded on first use - ✅ Exports — GeoJSON and cleaned CSV (measure mode)
- ✅ Light + dark theme —
html[data-theme], persisted, with theme-aware re-render of buildings / halo / heatmap - ✅ Fully client-side — your data never leaves the page
The project is a static site: one index.html, the JS lives under
js/. No build, no bundler, no backend.
git clone https://github.com/stefanofante/acmap.git
cd acmapPredict mode performs fetch() calls to the Overpass API, and most
browsers block fetch() from file:// origins. Serve the folder
from any HTTP server on localhost. Pick whichever is already
installed on your machine:
# Python 3 (cross-platform, no install needed on most systems)
python3 -m http.server 8000
# Windows: py -3 -m http.server 8000
# Node.js (one-shot, no global install)
npx --yes http-server -p 8000 -c-1
# PHP
php -S localhost:8000
# VS Code: install the "Live Server" extension and click "Go Live"Then open http://localhost:8000 in a modern browser.
Measure mode (CSV-only workflow) also works by double-clicking
index.html; only Predict mode strictly requires the server because of the Overpassfetch().
First load needs an internet connection: the CDN libraries (Leaflet, leaflet-heat, PapaParse, d3-contour, html2canvas), the OpenStreetMap tiles, and the Overpass API are all fetched online.
acmap/
├── index.html # markup, styles, CDN <script> tags
├── js/
│ └── acmap.js # full application logic (commented, English-only)
├── examples/ # sample CSV survey
├── docs/ # physics + usage notes
└── vendor/ # placeholder for offline-vendored libs (optional)
This is a demonstrative tool, deliberately limited in scope to remain understandable, fast, and honest. Be aware of these limits before drawing conclusions.
- Point source only. No line sources (roads), no area sources, no source directivity.
- Single diffraction. Only the first building intercepted on the source→receiver path is considered. Multi-building diffraction in cascade (common in dense urban canyons) is not modeled — the tool underestimates attenuation behind rows of buildings.
- Diffraction over only. No lateral diffraction around building edges; only the vertical (over-the-top) path is modeled.
- No reflections. Sound reflecting off façades to amplify street-canyon levels is not modeled.
- No meteorological profiles. No wind/temperature gradient; standard atmosphere assumed.
- Simplified ground. Generic broadband G-factor method (§7.3.2), not the frequency-dependent region method (§7.3.1).
- No CNOSSOS-EU / NMPB-Routes-2008.
- OSM building heights are often missing. Even in major Italian
cities the
heighttag is rare. The tool falls back tobuilding:levels × 3m, then to a user-configurable default (9m). Estimated heights are shown with dashed borders. Validate before trusting numbers for a specific area. - No address/CAD validation. Geometry is OSM as-is. Legal use needs surveyed CAD data, not crowdsourced footprints.
- No version pinning of OSM data. Each fetch hits live Overpass; results change as OSM changes.
The built-in validation table compares output against a simple literature test case (point source Lw=100 dB(A) flat broadband, soft ground, standard atmosphere). Not ISO-certified validation.
Do not use this tool for legal acoustic assessments, environmental impact studies, building-permit applications, or any decision where inaccuracy carries consequences. For those use a certified tool (CadnaA, SoundPLAN, Predictor-LimA), a maintained open-source tool with full CNOSSOS-EU support (NoiseModelling), or a registered "Tecnico Competente in Acustica" (Italy: ENTECA).
- Leaflet 1.9.4 — map rendering
- leaflet-heat 0.2.0 — kernel-density heatmap
- PapaParse 5.4.1 — CSV parsing
- d3-contour 4.0.2 — propagation isolines
- html2canvas 1.4.1 — composite screenshot (lazy-loaded on first use)
- OpenStreetMap tiles + Overpass API — building geometry
- Vanilla JavaScript (ES2020+), single HTML file, no build step
- Acoustic model: ISO 9613-2:1996 (§7.1 divergence, §7.3.2 ground, §7.4 screening) + ISO 9613-1 atmospheric absorption + Maekawa (1968) diffraction
The physics, OSM-fetch and screenshot code is extracted verbatim from the shared ST-LINE site modules; the standalone tool is a single self-contained file that drops anywhere and runs.
| Version | Status | Features |
|---|---|---|
| v0.1 | shipped | Static wireframe, no real physics |
| v0.2 | shipped | Real ISO 9613-2, atmospheric absorption, ground |
| v0.3 | shipped | OSM buildings, Maekawa diffraction, data transparency |
| v0.4 | shipped | EN i18n toggle, spherical halo, screenshot export, unified loading popup, fluid layout |
| v0.5 | current | Results explainer + per-stat sublabels (measure-mode survey clarity), OSM building tooltip offset |
| v0.6 | planned | Robustness: Overpass mirror fallback, embedded offline dataset |
| v0.7 | planned | Comparison mode (measured vs predicted, RMSE/bias) |
The roadmap is opportunistic, not a set of commitments. Maintained as a hobby project parallel to commercial work on Acustica Pro.
Contributions are welcome. Read CONTRIBUTING.md. By submitting a contribution you agree it is licensed under Apache-2.0. Help is particularly welcome on validation against documented test cases, mobile performance, and multi-diffraction.
Maintained by Stefano Fante, founder of ST-LINE S.r.l. (Treviso, Italy). ST-LINE is an electronic-design firm with a complementary practice in environmental acoustics; this tool is part of its Open Lab initiative — open-source artifacts the firm uses internally, published in public.
This tool is part of the development road toward Acustica Pro, ST-LINE's upcoming professional software for environmental acoustics analysis.
noise-barrier-calc— companion tool for noise-barrier attenuation, sharing the same physics engine- stline.it/open-lab — full list of ST-LINE Open Lab projects
Licensed under the Apache License, Version 2.0. See LICENSE for details, NOTICE for third-party attributions.