Initial GeoIntel V1 foundation
This commit is contained in:
@@ -0,0 +1,233 @@
|
||||
# Database Schema v1.0
|
||||
|
||||
Doel: PostGIS-first schema dat projecten, gebieden, datasets, analyses, AI-resultaten, QA/QC en exports ondersteunt.
|
||||
|
||||
## 1. projects
|
||||
|
||||
```sql
|
||||
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
|
||||
|
||||
```sql
|
||||
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
|
||||
|
||||
```sql
|
||||
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
|
||||
|
||||
```sql
|
||||
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
|
||||
|
||||
```sql
|
||||
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
|
||||
|
||||
```sql
|
||||
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
|
||||
|
||||
```sql
|
||||
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
|
||||
|
||||
```sql
|
||||
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
|
||||
|
||||
```sql
|
||||
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
|
||||
|
||||
```sql
|
||||
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
|
||||
|
||||
```sql
|
||||
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
|
||||
|
||||
```sql
|
||||
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
|
||||
|
||||
```sql
|
||||
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
|
||||
|
||||
```sql
|
||||
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
|
||||
|
||||
```sql
|
||||
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
|
||||
|
||||
```sql
|
||||
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.
|
||||
Reference in New Issue
Block a user