Initial public release
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

This commit is contained in:
Jens
2026-08-31 21:56:53 +02:00
commit faeb58ef6d
1386 changed files with 263203 additions and 0 deletions
+162
View File
@@ -0,0 +1,162 @@
# GeoIntel Kempen — Vector Operations Specification v1.0
Vector operations are implemented with GeoPandas/Shapely in the backend and optionally accelerated through PostGIS.
## Global requirements
- Always validate CRS before spatial operations.
- Use metric CRS for area, length and distance calculations.
- Repair invalid geometries before operations.
- Return operation metadata with input dataset ids and parameters.
- Persist important outputs as derived layers.
## Required V1 operations
## 1. Metadata extraction
Input: vector dataset.
Output:
```json
{
"feature_count": 1234,
"geometry_types": ["Polygon"],
"crs": "EPSG:31370",
"bounds": [xmin, ymin, xmax, ymax],
"columns": [{"name":"type","dtype":"str"}]
}
```
## 2. Reproject
Input:
- vector dataset
- target CRS
Output:
- reprojected layer
- operation log
## 3. Clip
Input:
- vector dataset
- area polygon
Output:
- clipped layer
- metrics: before/after feature count, retained area/length
## 4. Buffer
Input:
- vector dataset
- distance in meters
- dissolve boolean
Output:
- buffer polygon layer
## 5. Intersect
Input:
- layer A
- layer B
Output:
- intersection layer
- area/length metrics
## 6. Difference
Input:
- layer A
- layer B
Output:
- geometries in A not covered by B
Use case: changed features, missing reference coverage.
## 7. Spatial join
Input:
- target layer
- join layer
- predicate: intersects, within, contains, nearest
Output:
- joined attributes
- match count
## 8. Dissolve
Input:
- vector layer
- optional group field
Output:
- dissolved geometries
Use case: combine green patches, merge detection masks.
## 9. Polygonize from raster mask
Input:
- binary or class raster mask
Output:
- polygon layer with class values
This is technically raster-to-vector but must produce vector layers compatible with all vector operations.
## API shape
Vector operations should be available as jobs:
```http
POST /vector/operations/clip
POST /vector/operations/buffer
POST /vector/operations/intersect
POST /vector/operations/difference
POST /vector/operations/spatial-join
POST /vector/operations/dissolve
```
Each returns a job id and later a derived dataset/layer id.
## Error handling
Return clear validation errors for:
- missing CRS
- unsupported geometry type
- invalid geometry repair failure
- empty output after clipping
- projection failure
## Test fixtures
Create small fixture GeoJSON files for:
- building polygons
- road lines
- area polygon
- reference/prediction polygons for QA