Files
geointel/docs/DATABASE_SCHEMA.md
T
Jens faeb58ef6d
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
Initial public release
2026-08-31 21:56:53 +02:00

4.7 KiB

Database Schema v1.0

Doel: PostGIS-first schema dat projecten, gebieden, datasets, analyses, AI-resultaten, QA/QC en exports ondersteunt.

1. projects

id UUID PRIMARY KEY
name TEXT NOT NULL
description TEXT
region TEXT DEFAULT 'Kempen'
created_at TIMESTAMP NOT NULL
updated_at TIMESTAMP NOT NULL

2. areas

id UUID PRIMARY KEY
project_id UUID REFERENCES projects(id)
name TEXT NOT NULL
geometry GEOMETRY(POLYGON, 4326) NOT NULL
area_m2 DOUBLE PRECISION
crs TEXT DEFAULT 'EPSG:4326'
created_at TIMESTAMP NOT NULL

3. datasets

id UUID PRIMARY KEY
project_id UUID REFERENCES projects(id)
name TEXT NOT NULL
dataset_type TEXT NOT NULL -- raster, vector, lidar, reference, model_output
source TEXT -- upload, GRB, OSM, Sentinel, DHMV
original_path TEXT
processed_path TEXT
crs TEXT
srid INTEGER
bounds GEOMETRY(POLYGON, 4326)
metadata_json JSONB
status TEXT NOT NULL
created_at TIMESTAMP NOT NULL
updated_at TIMESTAMP NOT NULL

4. dataset_versions

id UUID PRIMARY KEY
dataset_id UUID REFERENCES datasets(id)
version_label TEXT
path TEXT
metadata_json JSONB
created_at TIMESTAMP NOT NULL

5. vector_features

id UUID PRIMARY KEY
dataset_id UUID REFERENCES datasets(id)
source_feature_id TEXT
feature_type TEXT
properties JSONB
geometry GEOMETRY(GEOMETRY, 4326)
created_at TIMESTAMP NOT NULL

Spatial index required on geometry.

6. raster_assets

id UUID PRIMARY KEY
dataset_id UUID REFERENCES datasets(id)
asset_type TEXT -- original, clipped, tile, preview, index, mask
path TEXT NOT NULL
bounds GEOMETRY(POLYGON, 4326)
metadata_json JSONB
created_at TIMESTAMP NOT NULL

7. analysis_runs

id UUID PRIMARY KEY
project_id UUID REFERENCES projects(id)
area_id UUID REFERENCES areas(id)
analysis_type TEXT NOT NULL -- detection, segmentation, qaqc, change, raster_index
status TEXT NOT NULL
parameters_json JSONB
started_at TIMESTAMP
finished_at TIMESTAMP
error_message TEXT
created_at TIMESTAMP NOT NULL

8. detections

id UUID PRIMARY KEY
analysis_run_id UUID REFERENCES analysis_runs(id)
class_name TEXT NOT NULL
confidence DOUBLE PRECISION
bbox_json JSONB
source_tile_path TEXT
geometry GEOMETRY(POLYGON, 4326)
metadata_json JSONB
created_at TIMESTAMP NOT NULL

Spatial index required on geometry.

9. segmentations

id UUID PRIMARY KEY
analysis_run_id UUID REFERENCES analysis_runs(id)
class_name TEXT NOT NULL
confidence DOUBLE PRECISION
area_m2 DOUBLE PRECISION
raster_mask_path TEXT
geometry GEOMETRY(GEOMETRY, 4326)
metadata_json JSONB
created_at TIMESTAMP NOT NULL

10. metrics

id UUID PRIMARY KEY
analysis_run_id UUID REFERENCES analysis_runs(id)
metric_key TEXT NOT NULL
metric_value DOUBLE PRECISION
unit TEXT
metadata_json JSONB
created_at TIMESTAMP NOT NULL

11. quality_checks

id UUID PRIMARY KEY
analysis_run_id UUID REFERENCES analysis_runs(id)
reference_dataset_id UUID REFERENCES datasets(id)
check_type TEXT NOT NULL
score DOUBLE PRECISION
findings_json JSONB
created_at TIMESTAMP NOT NULL

12. quality_findings

id UUID PRIMARY KEY
quality_check_id UUID REFERENCES quality_checks(id)
finding_type TEXT NOT NULL -- false_positive, false_negative, low_iou, matched
class_name TEXT
score DOUBLE PRECISION
geometry GEOMETRY(GEOMETRY, 4326)
metadata_json JSONB
created_at TIMESTAMP NOT NULL

13. annotations

id UUID PRIMARY KEY
project_id UUID REFERENCES projects(id)
dataset_id UUID REFERENCES datasets(id)
class_name TEXT NOT NULL
annotation_type TEXT -- bbox, polygon, mask
geometry GEOMETRY(GEOMETRY, 4326)
metadata_json JSONB
created_at TIMESTAMP NOT NULL

14. model_registry

id UUID PRIMARY KEY
name TEXT NOT NULL
model_type TEXT -- yolo, sam, unet, custom_pytorch
version TEXT
artifact_path TEXT
classes_json JSONB
metrics_json JSONB
created_at TIMESTAMP NOT NULL

15. exports

id UUID PRIMARY KEY
project_id UUID REFERENCES projects(id)
analysis_run_id UUID REFERENCES analysis_runs(id)
export_type TEXT NOT NULL -- geojson, yolo, coco, mask, report
path TEXT NOT NULL
metadata_json JSONB
created_at TIMESTAMP NOT NULL

16. jobs

id UUID PRIMARY KEY
job_type TEXT NOT NULL
status TEXT NOT NULL
payload_json JSONB
result_json JSONB
error_message TEXT
created_at TIMESTAMP NOT NULL
started_at TIMESTAMP
finished_at TIMESTAMP

Indexen

  • areas.geometry GIST
  • datasets.bounds GIST
  • vector_features.geometry GIST
  • detections.geometry GIST
  • segmentations.geometry GIST
  • quality_findings.geometry GIST
  • annotations.geometry GIST

Belangrijke regels

  • Grote bestanden nooit in database opslaan.
  • Geometrieën altijd met SRID opslaan.
  • Iedere modeloutput moet gekoppeld zijn aan een analysis_run.
  • Iedere analysis_run moet parameters opslaan voor reproduceerbaarheid.