GeoIntel release gates / Compile, test, contracts and builds (push) Successful in 1m49s
GeoIntel release gates / Python and npm vulnerability policy (push) Successful in 21s
GeoIntel release gates / Production AI image, SBOM and container scan (push) Successful in 5m39s
GeoIntel release gates / Deploy exact gated revision to Unraid (push) Failing after 58m43s
149 lines
2.5 KiB
Markdown
149 lines
2.5 KiB
Markdown
# Architecture
|
|
|
|
## 1. Overzicht
|
|
|
|
GeoIntel bestaat uit:
|
|
|
|
- React/TypeScript frontend
|
|
- FastAPI backend
|
|
- PostgreSQL/PostGIS database
|
|
- background job queue
|
|
- file/object storage
|
|
- GIS processing services
|
|
- AI inference services
|
|
|
|
## 2. Hoofdcomponenten
|
|
|
|
```text
|
|
Frontend
|
|
↓ REST/WebSocket
|
|
FastAPI Backend
|
|
↓
|
|
PostgreSQL + PostGIS
|
|
↓
|
|
Storage: uploads, processed rasters, tiles, masks, exports
|
|
↓
|
|
Workers: GIS processing, AI inference, QA/QC, export
|
|
```
|
|
|
|
## 3. Frontend
|
|
|
|
Aanbevolen stack:
|
|
|
|
- React
|
|
- TypeScript
|
|
- MapLibre GL
|
|
- Deck.gl
|
|
- Tailwind
|
|
- TanStack Query
|
|
- Zustand of vergelijkbare lichte state store
|
|
- Recharts voor eenvoudige grafieken
|
|
|
|
Belangrijke principes:
|
|
|
|
- kaart centraal, maar analysepanelen even belangrijk
|
|
- labs per workflow
|
|
- duidelijke jobstatus
|
|
- outputs altijd exporteerbaar
|
|
- geen verborgen mockgedrag
|
|
|
|
## 4. Backend
|
|
|
|
Aanbevolen stack:
|
|
|
|
- FastAPI
|
|
- SQLAlchemy 2.x
|
|
- GeoAlchemy2
|
|
- Alembic
|
|
- Pydantic
|
|
- RQ/Celery
|
|
- Rasterio
|
|
- GeoPandas
|
|
- Shapely
|
|
- PyProj
|
|
- NumPy
|
|
- OpenCV
|
|
- Ultralytics/PyTorch
|
|
|
|
## 5. Database
|
|
|
|
PostgreSQL met PostGIS is verplicht voor:
|
|
|
|
- projectgebieden
|
|
- vectorfeatures
|
|
- detectiepolygonen
|
|
- segmentatiepolygonen
|
|
- spatial joins
|
|
- intersects
|
|
- IoU berekeningen
|
|
- bounds queries
|
|
|
|
## 6. Storage
|
|
|
|
Bewaar grote bestanden niet in de database.
|
|
|
|
Opslagcategorieën:
|
|
|
|
- originele uploads
|
|
- verwerkte rasters
|
|
- raster tiles
|
|
- masks
|
|
- model outputs
|
|
- exports
|
|
- rapporten
|
|
|
|
Database bewaart metadata en paden.
|
|
|
|
## 7. Jobs
|
|
|
|
Langlopende processen moeten via background jobs:
|
|
|
|
- raster metadata extraction
|
|
- raster clipping
|
|
- raster tiling
|
|
- vector import
|
|
- AI inference
|
|
- segmentation polygonize
|
|
- QA/QC
|
|
- change detection
|
|
- export generation
|
|
|
|
## 8. AI Inference
|
|
|
|
Inference pipeline:
|
|
|
|
```text
|
|
Raster dataset
|
|
→ clip to area
|
|
→ tile raster
|
|
→ normalize/preprocess
|
|
→ model inference
|
|
→ convert pixel coords to geospatial coords
|
|
→ merge/filter outputs
|
|
→ save detections/segmentations
|
|
→ expose as map layer
|
|
```
|
|
|
|
## 9. CRS-regels
|
|
|
|
- Alle interne geometrieën worden opgeslagen in PostGIS met bekende SRID.
|
|
- Voor metrische berekeningen wordt een geschikte projectie gebruikt.
|
|
- API-output naar frontend mag in EPSG:4326 of WebMercator-compatible formaat.
|
|
- Elke dataset zonder CRS krijgt status `needs_crs_review`.
|
|
|
|
## 10. Developmentstrategie
|
|
|
|
Bouwvolgorde:
|
|
|
|
1. backend foundation
|
|
2. database schema
|
|
3. project/area API
|
|
4. dataset upload en metadata
|
|
5. frontend workspace en kaart
|
|
6. vector import
|
|
7. raster import
|
|
8. processing jobs
|
|
9. detection lab
|
|
10. QA/QC
|
|
11. export
|