Easy-to-manage touch screens
Free, open-source touch screens. Guided USB setup, a drag-and-drop editor and local control. Made for Home Assistant.
翻訳待ち
An open, curated atlas of the world's public hot springs. Temperature, price, clothing policy and hours — clearly labelled, including when we don't know.
翻訳待ち
暮らしJavaScript · TypeScriptGitHub @BoringEnergyオンライン所有者未確認
Have you tried it? One tap is enough. No sign-in needed.
An open, curated atlas of the world's public hot springs. Unknown is a value; hidden local springs are deliberately excluded.
翻訳待ち
Loading the full README. The saved excerpt is shown below.
An open, curated atlas of the world's public and semi-public hot springs.
There is no maintained, global, machine-readable tracker of hot springs. The
data that exists is scattered across national tourism boards, a 1965 USGS
survey, forum posts, and OpenStreetMap tags that nobody has ever normalised.
This repository is an attempt to fix that, in public, with the provenance
attached.Read the full README ↗An open, curated atlas of the world's public and semi-public hot springs.
There is no maintained, global, machine-readable tracker of hot springs. The data that exists is scattered across national tourism boards, a 1965 USGS survey, forum posts, and OpenStreetMap tags that nobody has ever normalised. This repository is an attempt to fix that, in public, with the provenance attached.
7,130 hot-spring features at 4,462 sites across 126 countries in the current build. A feature is what a mapper drew: a vent, a pool, a spring. A site is the features within 500 m of one another, the place a visitor means by "a hot spring". Both are a floor of what is publicly mapped, not a census: in Japan, where the government counts, the atlas holds 812 sites beside 2,839 official hot-spring localities (how the atlas counts).
v1 — 2026-09-11. The atlas meets every success criterion in SPEC.md §9. Coverage is a description of what public data exists, not a backlog: 19% of these springs have a recorded temperature because 81% of them have never had one published, and the card says so on every one. Corrections are welcome; the data campaign is closed.
Every release is archived on Zenodo. The DOI above always resolves to the latest version:
Hudson R&D. World Hot Springs [Data set]. Zenodo. https://doi.org/10.5281/zenodo.22800996
Cite the version you actually used: each version has its own DOI, listed on the Zenodo page, and the records can change from one version to the next. CITATION.cff carries the same metadata for citation managers, and DATA.md sets out the attribution every reuse owes.
This is not the first global compilation of thermal springs and does not claim to be. Gerald Ashley Waring's Thermal Springs of the United States and Other Countries of the World (USGS Professional Paper 492, 1965) is the ancestor of every list since, and it was digitised into a global point dataset published in Nature Communications 13, 6378 (2022) — roughly 6,000 spring areas covering some 12,500 individual springs across more than 100 countries. NOAA NCEI's Thermal Springs List (1981) is the authoritative US compilation and is an upstream here.
Anyone who tells you no global hot springs dataset exists has not looked. What
does not exist — and what this project is — is a maintained, machine-readable
atlas with provenance attached to every field, a stated position on what it
refuses to publish, and an explicit null where the world has no answer.
Those prior compilations are static academic snapshots of a 1965 survey; this
one is rebuilt from live upstreams, says on each card which source placed the
pin and how precisely, and can be argued with one record at a time.
Unknown is a value. Temperature, price, clothing policy and opening hours
are first-class fields. When we don't know one, the record stores null and the
UI renders Unknown. We never invent a plausible number, and we never leave a
field blank in a way that reads like an answer.
That honesty is the whole product, because the real numbers are humbling:
| Field | Known |
|---|---|
| Temperature | 19% |
| Price | 12% |
| Hours | 7% |
| Clothing policy | 1% |
Four springs in five have no recorded temperature. Most that carry a
temperature tag say hot, which is not a temperature — so we store that
separately and the card says described as hot, no measurement recorded. Any
hot spring site showing you a confident number for every entry is making most
of them up.
That figure is lopsided, and the lopsidedness matters more than the average. A 1981 federal compilation covers the United States, where 1,132 of 2,832 springs carry a temperature. Everywhere else it is 258 of 4,298 — under 7%, about one spring in seventeen. The American records say so on their own cards: unverified, dated 1981, and warned as historical.
We deliberately leave springs out. See PRIVACY.md. Truly hidden local springs are not on this map and there is no mode, login, or request form that reveals them. This is the point of the project, not a limitation of it.
The dataset is ours and it is versioned. Every record carries its sources, its provenance, a completeness score, and the date it was last touched. You can check us on any spring.
We show our working, including the awkward parts. The first build ranked
Iraq as the second most hot-spring-rich country on earth, because someone
bulk-imported a water-point dataset into OpenStreetMap under
natural=hot_spring years ago. The obvious automated fix flagged 1,957 of
Yellowstone's real springs as fake, so we didn't ship it. What we shipped
instead is a reviewed, public, arguable list in
data/known-bad-imports.json, and the excluded
records are quarantined rather than deleted. The whole story is in
docs/DATA.md.
npm install
npm run data:all # fetch from OpenStreetMap, then build the curated dataset
npm run dev
data:all is two stages and they are separable:
npm run data:fetch # pull raw Overpass responses into data/raw/ (resumable)
npm run data:build # normalise, dedupe, apply the privacy filter, write outputs
The fetch is tiled and resumable — every tile is cached to data/raw/osm/, so
an interrupted run costs nothing and re-running only fetches what is missing.
This is the beginning of the README. Read the rest at the original. Read the full README ↗