This repository has been archived on 2026-02-15. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
breakpilot-pwa/geo-service/STATUS.md
Benjamin Admin 21a844cb8a fix: Restore all files lost during destructive rebase
A previous `git pull --rebase origin main` dropped 177 local commits,
losing 3400+ files across admin-v2, backend, studio-v2, website,
klausur-service, and many other services. The partial restore attempt
(660295e2) only recovered some files.

This commit restores all missing files from pre-rebase ref 98933f5e
while preserving post-rebase additions (night-scheduler, night-mode UI,
NightModeWidget dashboard integration).

Restored features include:
- AI Module Sidebar (FAB), OCR Labeling, OCR Compare
- GPU Dashboard, RAG Pipeline, Magic Help
- Klausur-Korrektur (8 files), Abitur-Archiv (5+ files)
- Companion, Zeugnisse-Crawler, Screen Flow
- Full backend, studio-v2, website, klausur-service
- All compliance SDKs, agent-core, voice-service
- CI/CD configs, documentation, scripts

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-09 09:51:32 +01:00

6.3 KiB

GeoEdu Service - Implementierungsstatus

Stand: 2026-01-24 Status: Infrastruktur komplett, Downloads ausstehend


Übersicht

Der GeoEdu Service ist eine DSGVO-konforme Erdkunde-Lernplattform mit:

  • Self-Hosted OpenStreetMap Tile Server für Deutschland
  • 3D-Terrain aus Copernicus DEM (Open Data)
  • Unity WebGL Integration für immersive Lernwelten
  • Learning Nodes System für didaktische Inhalte (via Ollama LLM)

Port: 8088


Abgeschlossene Arbeiten

Backend (geo-service/)

Datei Status Beschreibung
Dockerfile Python 3.11 + GDAL + Geo-Libraries
requirements.txt FastAPI, asyncpg, shapely, rasterio, pmtiles
config.py Pydantic Settings
main.py FastAPI App mit allen Routers
api/tiles.py Vector Tile Endpoints
api/terrain.py DEM/Heightmap Endpoints
api/aoi.py AOI Packaging Endpoints
api/learning.py Learning Nodes API
services/tile_server.py PMTiles Reader
services/dem_service.py Copernicus DEM Handler
services/aoi_packager.py Unity Bundle Generator
services/osm_extractor.py OSM Feature Extraction
services/learning_generator.py Ollama LLM Integration
models/aoi.py AOI Pydantic Models
models/learning_node.py Learning Node Models
models/attribution.py License Attribution
utils/geo_utils.py Koordinaten-Transformationen
utils/minio_client.py S3 Client
utils/license_checker.py Lizenz-Validierung
scripts/download_osm.sh Geofabrik Download (NICHT ausgeführt)
scripts/download_dem.sh Copernicus Download (NICHT ausgeführt)
scripts/import_osm.sh osm2pgsql Import
scripts/generate_tiles.sh PMTiles Generation
scripts/init_postgis.sql PostGIS Schema + Tabellen
tests/test_tiles.py API Tests
tests/test_aoi.py AOI + Geo Utils Tests
tests/test_learning.py Learning Generator Tests
.env.example Environment Template

Frontend (studio-v2/)

Datei Status Beschreibung
package.json maplibre-gl Dependency hinzugefügt
app/geo-lernwelt/page.tsx Hauptseite mit Tabs
app/geo-lernwelt/types.ts TypeScript Interfaces
components/geo-lernwelt/AOISelector.tsx MapLibre Polygon-Zeichnung
components/geo-lernwelt/UnityViewer.tsx Unity WebGL Viewer
lib/geo-lernwelt/GeoContext.tsx React Context
lib/geo-lernwelt/mapStyles.ts MapLibre Styles
lib/geo-lernwelt/unityBridge.ts Unity Communication

Docker-Konfiguration

Änderung Status Beschreibung
docker-compose.yml geo-service hinzugefügt
PostgreSQL Image Geändert zu postgis/postgis:16-3.4-alpine
PostGIS Init Script Auto-Setup bei Container-Start
Volumes geo_osm_data, geo_dem_data, geo_tile_cache, geo_aoi_bundles

Ausstehende Arbeiten

Downloads (NICHT automatisch starten!)

Download Größe Script Dauer (~100 Mbit/s)
Germany OSM PBF 4.4 GB scripts/download_osm.sh ~6 Min
Copernicus DEM ~25 GB scripts/download_dem.sh ~35 Min

Generierung (nach Downloads)

Prozess Output Dauer
osm2pgsql Import PostgreSQL DB ~2-4 Stunden
PMTiles (Z0-14) ~200-300 GB ~12-24 Stunden
DEM Tiles ~15 GB ~2-3 Stunden

Gesamtspeicherbedarf nach Setup: ~350 GB


API Endpoints

# Tiles
GET  /api/v1/tiles/{z}/{x}/{y}.pbf     → Vector Tile
GET  /api/v1/tiles/style.json          → MapLibre Style
GET  /api/v1/tiles/metadata            → Tile Metadata
GET  /api/v1/tiles/bounds              → Germany Bounds

# Terrain
GET  /api/v1/terrain/{z}/{x}/{y}.png   → Heightmap (Terrain-RGB)
GET  /api/v1/terrain/hillshade/{z}/{x}/{y}.png → Hillshade
GET  /api/v1/terrain/elevation?lat=&lon= → Point Elevation
GET  /api/v1/terrain/metadata          → DEM Metadata

# AOI (Area of Interest)
POST /api/v1/aoi                       → Create AOI
GET  /api/v1/aoi/{id}                  → Get Status
GET  /api/v1/aoi/{id}/manifest.json    → Unity Manifest
POST /api/v1/aoi/validate              → Validate Polygon
GET  /api/v1/aoi/templates/mainau      → Mainau Demo

# Learning Nodes
POST /api/v1/learning/generate         → Generate with LLM
GET  /api/v1/learning/templates        → Available Themes
GET  /api/v1/learning/{aoi_id}/nodes   → Get Nodes
GET  /api/v1/learning/statistics       → Stats

Nächste Schritte

  1. Container starten (ohne Downloads):

    docker compose up -d geo-service
    
  2. Health Check testen:

    curl http://localhost:8088/health
    
  3. Frontend testen:

    http://localhost:3001/geo-lernwelt
    
  4. Downloads starten (wenn bereit):

    # OSM Download (~6 Min)
    docker exec breakpilot-pwa-geo-service /app/scripts/download_osm.sh
    
    # DEM Download (~35 Min)
    docker exec breakpilot-pwa-geo-service /app/scripts/download_dem.sh
    
  5. Tile-Generierung (nach Downloads):

    # OSM Import (~2-4h)
    docker exec breakpilot-pwa-geo-service /app/scripts/import_osm.sh
    
    # PMTiles Generation (~12-24h)
    docker exec breakpilot-pwa-geo-service /app/scripts/generate_tiles.sh
    

Lizenz-Compliance

Zugelassene Quellen

  • OpenStreetMap (ODbL)
  • Copernicus DEM (Copernicus License)
  • OpenAerialMap (CC-BY 4.0)

VERBOTEN

  • Google Maps/Earth
  • Bing Maps
  • Apple Maps
  • HERE

Wichtige Dateien

Datei Pfad
Haupt-Plan /Users/benjaminadmin/.claude/plans/stateful-hugging-kahan.md
Backend /Users/benjaminadmin/Projekte/breakpilot-pwa/geo-service/
Frontend /Users/benjaminadmin/Projekte/breakpilot-pwa/studio-v2/app/geo-lernwelt/
Docker Config /Users/benjaminadmin/Projekte/breakpilot-pwa/docker-compose.yml

Kontakt bei Fragen

Dieser Service wurde gemäß dem Plan in /Users/benjaminadmin/.claude/plans/stateful-hugging-kahan.md implementiert.