尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗Eine interaktive Web-Anwendung zur Visualisierung von Routen mit mehreren Startpunkten zu einem Zielpunkt. Die Anwendung nutzt die GraphHopper Routing API, um Routen zu berechnen und bietet verschiedene Visualisierungs- und Analyseoptionen.
#zoom/lat/lng)edge_id (kein Geometrie-Matching), Farbcodierung über wählbare Colormaps (viridis, plasma, inferno, magma)sidewalk, bicycle_infra, max_speed …); Klick auf eine Linie zeigt die Infrastruktur des Abschnitts — Details in docs/INFRA_ANSICHT.mdcount) plus Aufschlüsselung nach Verkehrsmittel (count_foot, …) und Quelle (count_residential/count_transit); einzeln mit profile und startSource je Routetrips, trips_<modus> und Metadaten); Konzept in docs/ANALYSE_MODUS_KONZEPT.mdDie Anwendung ist verfügbar unter: https://vizsim.github.io/routing_bulk/
npm install # einmalig
npm run dev # Dev-Server mit Auto-Reload (Vite)
npm run build # Produktions-Build nach dist/
npm test # Unit-Tests (node --test)
Ohne eigenen Routing-Server: node tools/mock-graphhopper.mjs startet einen
Mock-GraphHopper auf Port 8989 (siehe docs/INFRA_ANSICHT.md).
Das Deployment auf GitHub Pages läuft automatisch: Jeder Push auf main baut
und deployt über die GitHub Action (.github/workflows/deploy.yml).
routing_bulk/
├── index.html # Einstiegspunkt (ein ES-Module-Script)
├── style.css # Stylesheet (Designtokens wie die Unfallkarte, Mobile-Query ≤ 640 px)
├── vite.config.js # Vite (base './', MapLibre-Worker)
├── package.json # Scripts + Dependencies (maplibre-gl, pmtiles, pbf)
├── .github/workflows/ # GitHub-Pages-Deployment (Vite-Build)
│
├── docs/ # Dokumentation
│ ├── routing_bulk_review.md # Review, Plan & Umsetzungsstand
│ ├── AGGREGATION_PROBLEM.md # (historisch) Geometrie-Aggregation
│ ├── INFRA_ANSICHT.md # Infrastruktur-Ansicht (v1)
│ └── ...
│
├── tests/ # Unit-Tests (node --test)
├── tools/ # mock-graphhopper.mjs (lokaler Test-Server)
│
└── src/
├── core/ # Konfiguration, State, Event-Bus, Utils
├── domain/ # Geo-Funktionen, Verteilungen, GraphHopper-API,
│ # infra.js: Infrastruktur-Klassen, Labels, Farben
├── services/ # Business-Logik
│ ├── route-service.js # Routen-Berechnung (Pool, Abbruch, Profile)
│ ├── demand-service.js # Nachfragemodell (Kapazität, unter-18, ÖPNV-Mix)
│ ├── population-service.js # Zensus-/PMTiles-Reader (Tiles direkt lesen)
│ ├── aggregation-service.js # exakte Kanten-Aggregation (edge_id)
│ ├── target-service.js # Zielpunkt-Verwaltung
│ └── export-service.js # GeoJSON-Export
├── visualization/ # MapLibre-Rendering
│ ├── map-renderer.js # Karte, Layer (Routen, Schulen, ÖPNV, Zensus), Kontextmenü
│ ├── route-renderer.js # Routen als GeoJSON-Sources (data-driven Styling)
│ ├── visualization.js # Orchestrierung, Marker (Start/Ziel)
│ ├── marker-manager.js # Ziel-Marker-Verwaltung
│ ├── histogram-renderer.js # Histogramm (Canvas)
│ └── colormap-utils.js # Colormap-Berechnungen
├── ui/ # Panel-Komponenten
│ ├── accordion.js # einklappbare Bereiche (mit localStorage)
│ ├── demand-selector.js # Bereich "Nachfragedetails"
│ ├── infra-controls.js # Färben nach / Modus / Merkmal + Legende
│ ├── segment-panel.js # Infopanel beim Klick auf ein Segment
│ ├── mobile-layout.js # Auf-/Zuklappen, Bottom-Sheet am Handy, Lupen-Suche, Fußzeile
│ ├── draw-bar.js / polygon-draw.js # Bereich zeichnen (Gebietsanalyse)
│ ├── info-hints.js # ⓘ-Tooltips (fixed, Viewport-Klemmung)
│ ├── targets-list.js / config-helpers.js / distribution-selector.js
│ └── colormap-selector.js / route-warning.js
├── handlers/ # Event-Handler (Routen berechnet/progressiv)
├── utils/ # Geocoder (Adresssuche)
└── app.js # Haupt-Orchestrierung
edge_id-Path-Details)Die Hauptkonfiguration befindet sich in src/core/config.js:
export const CONFIG = {
GH_ROUTE_URL: "https://ghroute.vizsim.de/route",
BASEMAP_STYLE_URL: "https://tiles.openfreemap.org/styles/positron",
PROFILE: "foot",
N: 10,
RADIUS_M: 2000,
ROUTE_CONCURRENCY: 12,
// PMTiles-Quellen: POPULATION_*, SCHOOLS_*, PLATFORMS_*
// Nachfragemodell: DEMAND_BASIS, DEMAND_TRANSIT_SHARE, DEMAND_TRANSIT_STOPS
};
Die Aggregation zählt exakt pro Kante des Straßengraphen: GraphHopper liefert
per Path Detail edge_id, welche Kanten jede Route benutzt — zwei Routen teilen
sich ein Segment genau dann, wenn sie dieselbe Kanten-ID haben. Kein
Geometrie-Matching, keine Toleranzen. Die früheren geometrischen Methoden und
ihr Grundproblem sind historisch dokumentiert in
docs/AGGREGATION_PROBLEM.md; Plan und
Umsetzungsstand in docs/routing_bulk_review.md.
Die Anwendung folgt einer modularen Architektur mit klarer Trennung von Concerns:
visualization.js: Orchestrierung und Marker (Start/Ziel)map-renderer.js: MapLibre-Karte, Sources/Layer, Kontextmenü, Legendenroute-renderer.js: Routen und Aggregation als GeoJSON-Featurescolormap-utils.js: Colormap-Berechnungenhistogram-renderer.js: Histogramm-Visualisierungmarker-manager.js: Ziel-Marker-VerwaltungDie Kommunikation zwischen Modulen erfolgt über einen Event-Bus (EventBus), was eine lose Kopplung und einfache Erweiterbarkeit ermöglicht.
Der Kern-Use-Case ist die Modellierung von Schulwegen. Zwei der drei dafür nötigen Bausteine sind inzwischen umgesetzt:
Nachfrage (Schülerinnen und Schüler) — ✅ umgesetzt:
Einwohner und Unter18 als PMTilesBushaltestellen und Fußverkehr — ✅ umgesetzt:
/plan); die Aggregation zählt
dort pro Linie und Ein-/Ausstiegspaar — siehe docs/routing_bulk_review.mdEinzugsbereiche der Schulen — offen:
| Bezirk | Format | Beschreibung | Link |
|---|---|---|---|
| Treptow-Köpenick | PDF Karte | Einschulungsbereiche als PDF-Karte verfügbar | Link |
| Neukölln | Digital(?) | Einschulungsbereiche in digitaler Form verfügbar, aber nicht öffentlich nutzbar (kein echtes WMS) | Link |
| Steglitz-Zehlendorf | PDF mit Karte und Adressen | Einschulungsbereiche als PDF mit Karte und Adressliste | Link |
| Mitte | PDF mit Karte und Adressliste | Einschulungsbereiche als PDF mit Karte und Adressliste | Link |
Die Integration dieser Datenquellen würde es ermöglichen:
Dieses Projekt steht unter der MIT-Lizenz. Siehe LICENSE für Details.