Files
geointel/README.md
T
Jens 0cd84fa5c5
GeoIntel release gates / Compile, test, contracts and builds (push) Canceled after 0s
GeoIntel release gates / Python and npm vulnerability policy (push) Canceled after 0s
GeoIntel release gates / GIS image, SBOM and container scan (push) Canceled after 0s
Complete GeoIntel visual system and portfolio case study
2026-07-28 11:10:35 +02:00

218 lines
7.2 KiB
Markdown

# GeoIntel
<p align="center">
<img src="frontend/public/geointel-icon.png" width="92" alt="GeoIntel logo">
</p>
<p align="center"><strong>Evidence-first GeoAI voor België en de Belgische Noordzee.</strong></p>
GeoIntel is een kaartgerichte GeoAI-workbench waarin officiële databronnen,
ruimtelijke analyse, PyTorch-computervisie, QA/QC en export samenkomen. Het
platform bewaart niet alleen een resultaat, maar ook de bron, ruimtelijke
context, modelversie en het bewijs waarmee dat resultaat gecontroleerd kan
worden.
> **Data → ruimtelijke verwerking → AI-resultaat → kwaliteitsbewijs → export**
![GeoIntel landingspagina](docs/assets/portfolio/geointel-landing-hero.png)
## Waarom GeoIntel?
Veel geoportalen tonen lagen. GeoIntel ondersteunt een volledige,
controleerbare analyseketen:
- selecteer een officiële grens of teken een eigen Area of Interest;
- combineer vector-, raster- en historische bronnen met expliciete dekking;
- voer GIS- en CUDA-versnelde beeldanalyse uit;
- vergelijk kandidaatresultaten met referentiedata;
- inspecteer false positives, false negatives, overlap en provenance;
- exporteer alleen wat als reproduceerbaar resultaat is vastgelegd.
Mol en de Kempen blijven de gouden regressiegebieden. De productgrens is heel
België plus de juridisch benoemde Belgische maritieme zones.
## Product in beeld
### Interactieve projectketen
De landingspagina vertaalt de technische keten naar vier interactieve
schakels. De illustratie reageert op selectie, bronnen, analyse en bewijs en
respecteert automatisch `prefers-reduced-motion`.
![Interactieve GeoIntel-projectketen](docs/assets/portfolio/geointel-interactive-story.png)
![Geanimeerde GeoIntel-projectketen](docs/assets/portfolio/geointel-interactive-project-chain.gif)
### Kaart als werkruimte
De kaart blijft het primaire werkblad. Thema, broncontext, selectie en
resultaten zijn vanuit dezelfde ruimtelijke context bereikbaar.
![GeoIntel kaartwerkruimte](docs/assets/portfolio/geointel-workbench-map.png)
### Kwaliteit vóór resultaat
QA/QC is een eerste-klas workflow. Bewaarde controles koppelen scores aan
objectbewijs, kandidaat- en referentielagen en technische provenance.
![GeoIntel kwaliteitscontrole](docs/assets/portfolio/geointel-workbench-quality.png)
## Kernmogelijkheden
| Domein | Mogelijkheden |
| --- | --- |
| Werkgebieden | Officiële grenzen, vrije AOI-selectie, clipping en buffering |
| Bronnen | GeoJSON, vector, raster, orthofoto, historische en regionale catalogi |
| GIS | CRS-normalisatie, spatial joins, rasterstatistiek, tile- en selectieanalyse |
| GeoAI | PyTorch, Ultralytics YOLO en SAM-compatibele abstrahering |
| Tijd | Immutable DatasetVersions en vergelijking van ruimtelijke snapshots |
| QA/QC | Precision, recall, F1, IoU, false-positive/-negative evidence en reviews |
| Export | Reproduceerbare GeoJSON- en artefactexports met provenance |
| Runtime | DockerMan-native Unraid-container met PostGIS, Redis, backend en frontend |
## Architectuur
```mermaid
flowchart LR
UI["React + MapLibre workbench"] --> API["FastAPI contracts"]
API --> GIS["GeoPandas / Shapely / Rasterio"]
API --> JOBS["Redis + RQ"]
JOBS --> AI["PyTorch / YOLO / SAM"]
GIS --> DB[("PostgreSQL + PostGIS")]
AI --> DB
DB --> QA["QA/QC + provenance"]
QA --> UI
QA --> EXPORT["GeoJSON / artifacts"]
```
De publieke endpoints volgen [docs/API_CONTRACTS.md](docs/API_CONTRACTS.md).
PostGIS en de persistentieregels volgen
[docs/DATABASE_IMPLEMENTATION_PLAN.md](docs/DATABASE_IMPLEMENTATION_PLAN.md).
## Stack
- **Frontend:** React 18, TypeScript, MapLibre GL, Lucide en Vite
- **Backend:** FastAPI en Python
- **Spatial:** GeoPandas, Shapely, Rasterio, PyProj en GDAL
- **AI:** PyTorch, Ultralytics YOLO en SAM-compatibele segmentatie
- **Data:** PostgreSQL/PostGIS, lokale artefactopslag en immutable versions
- **Jobs:** Redis en RQ
- **Deployment:** één DockerMan-native Unraid-container
## Lokaal starten
Vereisten: Python 3.11+, Node 20.19+ of 22.12+, PostgreSQL/PostGIS en Redis.
```bash
python -m pip install -e backend/.[dev]
cd frontend
npm install
npm run start
```
Voor de volledige lokale stack:
```bash
docker compose up --build
```
Open daarna `http://localhost:1202`.
### Gastdemo
Met `GEOINTEL_GUEST_ACCESS_ENABLED=true` biedt de toegangspagina een
kortlevende, alleen-lezen demosessie. Die toont uitsluitend het ingestelde
demoproject en bewaard kwaliteitsbewijs; dit is geen multi-user- of
tenantisolatie.
## NVIDIA/CUDA
Productie-AI gebruikt de NVIDIA GPU van de server. De runtime faalt gesloten
wanneer CUDA vereist maar niet beschikbaar is; ontbrekende modelconfiguratie
wordt als `not_configured` getoond en nooit als geslaagde inferentie.
Controleer GPU-zichtbaarheid in de container met:
```bash
docker exec geointel nvidia-smi
```
![PyTorch- en NVIDIA-analysekten](docs/assets/portfolio/geointel-ai-pytorch-pipeline.png)
## Portfolio case study
De presentatieklare case study combineert productvraag, interface, PyTorch- en
NVIDIA-keten, architectuur en resultaten in één visueel document:
- [GeoIntel case study PDF](output/pdf/geointel-case-study.pdf)
- [Donkere cover in hoge resolutie](frontend/public/portfolio/geointel-dark-case-study-cover.png)
- [Architectuurvisual](docs/assets/portfolio/geointel-architecture.png)
De PDF kan reproduceerbaar opnieuw worden opgebouwd met:
```bash
python scripts/create_portfolio_case_study.py
```
## Kwaliteitscontrole
```bash
# Backend
python -m compileall backend/app
cd backend && python -m pytest
# Frontend
cd frontend
npm run typecheck
npm run test:unit
npm run build
```
Een wijziging is pas afgerond wanneer de toepasselijke criteria uit
[docs/DEFINITION_OF_DONE.md](docs/DEFINITION_OF_DONE.md) aantoonbaar zijn
afgevinkt.
## Tower / Unraid deploy
De canonieke checkout op Tower staat in `/mnt/user/appdata/geointel`. Gebruik
de releasewrapper; de productiecontainer wordt niet met een alternatieve
Compose-checkout vervangen.
```powershell
powershell -ExecutionPolicy Bypass -File scripts/deploy_tower.ps1 `
-RemoteHost root@<tower-ip> `
-RemotePath /mnt/user/appdata/geointel `
-RemoteBranch main `
-FrontendUrl http://<tower-ip>:1202
```
Zie [deploy/unraid/README.md](deploy/unraid/README.md) en
[docs/RELEASE_RUNBOOK.md](docs/RELEASE_RUNBOOK.md) voor configuratie,
healthchecks en rollback.
## Documentatiekaart
- [Start hier](docs/00-start/START_HERE.md)
- [Belgium/North Sea scope freeze](docs/RC_SCOPE_FREEZE_BELGIUM_NORTH_SEA.md)
- [API-contracten](docs/API_CONTRACTS.md)
- [Database-implementatieplan](docs/DATABASE_IMPLEMENTATION_PLAN.md)
- [Bekende beperkingen](docs/KNOWN_LIMITATIONS.md)
- [Release-runbook](docs/RELEASE_RUNBOOK.md)
## Portfolio-assets
De map [`docs/assets/portfolio`](docs/assets/portfolio) bevat presentatieklare
screenshots, de geanimeerde projectketen, architectuur- en AI-visuals. De drie
originele campagnebeelden staan in
[`frontend/public/portfolio`](frontend/public/portfolio). Geoptimaliseerde
WebP-varianten worden door de applicatie gebruikt; de PNG-bronnen blijven
beschikbaar voor drukwerk en portfolio-opmaak.
![GeoIntel mobiele landingspagina](docs/assets/portfolio/geointel-landing-mobile.png)
## Status
Actieve mijlpaal: **v1.0.0 — Belgium and Belgian North Sea**.
GeoIntel is een project van Jens / ITWorx.tech.