一個開放、精選的全球公共溫泉圖集。溫度、價格、著裝規定與營業時間——清楚標示,即使資訊不明亦如是。
AI 翻譯
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上線中營運者未確認
試用過了嗎? 點一下就好,不需要登入。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證一個開放、精選的全球公共溫泉圖集。未知的資訊視為一種值;故意排除未公開的在地溫泉。
AI 翻譯
An open, curated atlas of the world's public hot springs. Unknown is a value; hidden local springs are deliberately excluded.
取自儲存庫 README
正在載入完整 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.檢視完整 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.
| File | What it is |
|---|---|
data/hot-springs.json | Full HotSpring records. The source of truth. |
data/hot-springs.geojson | The same records as a FeatureCollection, with license metadata. |
data/summary.json | Counts, per-country totals, and field coverage. |
data/suspect.json | Quarantined records with full provenance — kept out of the atlas, not deleted. |
public/data/ | Copies the web app fetches at runtime. |
Defined in src/lib/types.ts. Every field, the reasoning
behind each OSM tag mapping, and the deliberate deviations from the original
spec are documented in docs/DATA.md.
Vite + React + TypeScript, MapLibre GL (globe projection — no API key, no token), Tailwind, Zustand. The basemap is CARTO's keyless dark style. The whole app is static and deploys anywhere.
Five upstreams. DATA.md names each one, what it gave, and the
terms it comes under, and the same list travels with the data in
data/hot-springs.geojson under metadata.sources.
| Source | Gave | Licence |
|---|---|---|
| OpenStreetMap | the base layer and most pins | ODbL 1.0 |
| NOAA NCEI (1981) | 1,023 US pins | CC0 1.0 |
| AIST / GSJ | Japanese temperature and chemistry | CC BY 4.0-compatible, attribution required |
| Water Quality Portal | US temperatures | US federal, public domain |
| Nevada Bureau of Mines and Geology | NV and CO chemistry | public domain |
Map data © OpenStreetMap contributors. Basemap © CARTO.
Code is MIT. The dataset is ODbL 1.0 with attribution — ODbL because it is share-alike and OpenStreetMap is in here, so the derived database inherits the strictest term rather than the most convenient one.
Corrections and new public springs are welcome — see CONTRIBUTING.md. Submissions that would expose a spring the local community wants left alone are rejected, respectfully and permanently.
Geothermal water scalds. Undeveloped sources have no staff and no rescue, and temperatures shift with rainfall and season. Every reading here is a starting point, not a guarantee. Test the water before you get in.