An open API service indexing awesome lists of open source software.

https://github.com/ivorforce/wohnortatlas

Source code for wohnortatlas.de, a website that scores personalized liveability across germany
https://github.com/ivorforce/wohnortatlas

data-visualization deckgl geospatial germany gtfs h3 housing interactive-map liveability maplibre open-data openstreetmap python quality-of-life

Last synced: about 7 hours ago
JSON representation

Source code for wohnortatlas.de, a website that scores personalized liveability across germany

Awesome Lists containing this project

README

          

# Deutscher Wohnortatlas

A Germany-wide livability map. **→ [wohnortatlas.de](https://wohnortatlas.de)**

The pipeline scores H3 (resolution 8) hexes across the German mainland on a few
dozen livability layers — rent, commute, daily-needs access, leisure, quiet,
green, flood risk, and more. The static web map then re-scores everything
**client-side** against a user's own preferences. What each layer
measures, how, and where it falls short is documented on the site's
[method page](https://wohnortatlas.de/method.html).

## Repository layout

| Path | What |
| --- | --- |
| `scripts/` | the pipeline — numbered `NN_*.py` stages, run in order by the Makefile |
| `wohnen/` | shared library code (config, I/O, routing, scoring helpers) |
| `web/` | the static map (`index.html` + `decode.js`, no build step) and its assets |
| `Makefile` | build targets with file-based caching |

The input data (`data/`), the built map bundle (`web/data.bin`), and the routing
caches (`web/reach/`) are **not** tracked — they are downloaded and generated by
the build. A clone is the source, not a ready-to-serve site.

## Build / reproduce

Prerequisites (developed on macOS; the Makefile assumes Homebrew):

- [Poetry](https://python-poetry.org/) (Python ≥ 3.12)
- `osmium-tool` and `openjdk@21` — the routing (r5py) needs JDK 21
(`brew install osmium-tool openjdk@21`)
- ~25 GB free disk for the raw downloads and intermediate layers

```sh
poetry install
make check-env # verifies osmium, JDK 21, and the Python deps
make download # fetches the open datasets (large; cached under data/raw/)
make web # runs the full pipeline → web/data.bin
```

Then serve the `web/` directory over HTTP and open it — it fetches `data.bin`, so
it will **not** work from a `file://` URL:

```sh
cd web && python3 -m http.server # → http://localhost:8000
```

The job-market ("Branche") commute targets are optional and need a free
[regionalstatistik.de](https://www.regionalstatistik.de/) account: set
`GENESIS_USER` / `GENESIS_PASS`, then `make jobs && make web`.

Gotcha worth knowing:

- The free **GTFS feed expires ~7 days** after download; an expired feed makes the
router silently fall back to walk/bike times. `make freshness` shows the age;
re-`make download` and rerun the routing stages to refresh.

## License

The project's own code is [MIT](LICENSE). The bundled browser libraries, the map
and geocoding services used at runtime, and the input datasets each keep their own
licenses — see [THIRD-PARTY-LICENSES.md](THIRD-PARTY-LICENSES.md) and the sources
list on the [method page](https://wohnortatlas.de/method.html).

Contributions are welcome where they fit the project.