Webbasierte Analyse- und Visualisierungsplattform zur bevölkerungsbezogenen Erreichbarkeit zentraler Alltagsfunktionen im Sinne der x-Minuten-Stadt, umgesetzt am Beispiel der Stadt Remscheid.
Das Projekt entstand im Rahmen einer Bachelorarbeit im Studiengang Geoinformatik.
🔗 Live-Demo: https://x-min-city.com
Die Webanwendung ist unter dieser URL öffentlich erreichbar.
- ⏱️ Zeitbasierte Erreichbarkeitsanalyse
- 🚶♂️🚴 Aktive Mobilität: Fuß- und Radverkehr
- 👥 Bevölkerungsgewichtete Kennzahlen (Zensus 2022)
- 🗺️ Stadtweite & quartiersbezogene Auswertung
- 🧩 Interaktive Szenarien (POIs hinzufügen/entfernen)
- 📊 Zwei zentrale Indikatoren:
- Bevölkerungsabdeckung (%)
- Mediane Reisezeit (Minuten)
Frontend (React + Vite)
│
│ HTTP / JSON
▼
Backend (FastAPI)
│
│ R5Py
▼
Routing & Accessibility (R5)
- Python 3.11
- Node.js ≥ 18
- Java (für R5)
Für den Betrieb des Backends werden vorbereitete Daten (OSM-PBF, Höhenmodell, Zensusdaten, Stadtteilgrenzen) benötigt.
Diese sind nicht im Repository enthalten und müssen vor dem Start manuell bereitgestellt werden:
-
Lade den
data/-Ordner von folgender Seite herunter:
https://uni-muenster.sciebo.de/s/AojxcsryCw49gLP -
Kopiere den kompletten Ordner in das Backend-Verzeichnis, sodass folgende Struktur entsteht:
backend/
├── app.py
├── core/
├── routes/
├── services/
├── data/
│ ├── duesseldorf-regbez-250910.osm.pbf
│ ├── hoehenmodell.tif
│ ├── census_100m_with_district.csv
│ ├── districts.shp
│ ├── districts.dbf
│ ├── districts.shx
│ └── ...
cd backend
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements.txt
uvicorn app:app --reloadcd frontend
npm install
npm run devx-minute-city/
├── backend/
│ ├── app.py # FastAPI App Entry Point
│ ├── requirements.txt
│ ├── core/
│ │ ├── config.py # Zentrale Konfiguration
│ │ ├── schemas.py # Pydantic-Modelle
│ │ └── state.py # Globaler Analyse-/App-State
│ ├── routes/ # API-Endpunkte
│ │ ├── cityscope.py # Stadtweite Erreichbarkeitsanalyse
│ │ ├── districts.py # Stadtteil-Aggregationen
│ │ ├── grid.py # Zensuszellen-Logik
│ │ ├── isochrone.py # Isochronenberechnung
│ │ └── pois.py # POI-Endpunkte
│ ├── services/ # Fachlogik / Datenzugriff
│ │ ├── routing.py # R5Py-Routing & Reisezeiten
│ │ ├── overpass.py # OSM-POI-Abfragen
│ │ ├── zensus.py # Bevölkerungsdaten
│ │ └── districts.py # Bezirksverarbeitung
│ └── data/ # OSM, Höhenmodell, Bezirke
│
├── frontend/
│ ├── index.html
│ ├── vite.config.js
│ ├── package.json
│ ├── public/
│ │ └── images/
│ │ └── cityscope-preview.png
│ └── src/
│ ├── App.jsx
│ ├── main.jsx
│ ├── App.css
│ ├── tagConfig.js # POI-Kategorien & Labels
│ └── components/
│ ├── CityScopeComponents/
│ ├── css/
│ ├── CategorySidebar.jsx
│ ├── CityScope.jsx
│ ├── Header.jsx
│ ├── Impressum.jsx
│ ├── Landingpage.jsx
│ ├── LoadingOverlay.jsx
│ ├── ReachMap.jsx
│ ├── Sidebar.jsx
│ └── Tooltip.jsx
│
├── scripts/ # Hilfsskripte
├── .gitignore
└── README.md
MIT License – siehe LICENSE