Spatial Intelligence: Three dimensions for every observation

- Semantic: What is the object?
- Spatial: Exactly where?
- Temporal: When observed and how changed?

Rich geometry support from start:
- SpatialContext: facade, floor, zone, height, lane, direction
- Geometry: point, polygon, line with coordinates
- CameraPose: position, heading, pitch, roll

Precision in 4 steps: GPS -> triangulation -> 3D -> history

Stronger Decision Cases with exact location

Vision: Continuously updated georeferenced knowledge model

Next: Pilot 001
This commit is contained in:
Bernt
2026-07-02 17:21:31 +00:00
parent 167def5a61
commit 9883b2c787
2 changed files with 145 additions and 0 deletions
@@ -9,6 +9,35 @@
import { ObservationId, MissionId, ArtifactId } from '../common/ids';
import { GeoLocation, Confidence, BoundingBox } from '../common/value-objects';
/**
* Spatial Intelligence — Three Dimensions
*
* Semantic: What is the object? (crack, sign, manhole)
* Spatial: Exactly where is it? (east facade, floor 3, 4.2m above ground)
* Temporal: When observed and how has it changed? (2026-07-02, increased 12% since 2026-06-15)
*/
export interface SpatialContext {
readonly facade?: string; // 'north' | 'south' | 'east' | 'west'
readonly floor?: number; // 3
readonly zone?: string; // 'N-3-14'
readonly height?: number; // 4.2 (meters above ground)
readonly lane?: string; // 'left' | 'right'
readonly direction?: string; // 'northbound'
}
export interface Geometry {
readonly type: 'point' | 'polygon' | 'line';
readonly coordinates: number[] | number[][] | number[][][];
}
export interface CameraPose {
readonly position: GeoLocation;
readonly heading?: number; // degrees
readonly pitch?: number; // degrees
readonly roll?: number; // degrees
}
export interface Observation {
readonly id: ObservationId;
readonly missionId: MissionId;
@@ -18,6 +47,9 @@ export interface Observation {
readonly location: GeoLocation;
readonly confidence: Confidence;
readonly boundingBox?: BoundingBox;
readonly spatialContext?: SpatialContext; // Rich geometry support
readonly geometry?: Geometry; // Polygon, line, point
readonly cameraPose?: CameraPose; // Camera position and orientation
readonly createdAt: Date;
}
@@ -30,6 +62,9 @@ export interface CreateObservationParams {
readonly location: GeoLocation;
readonly confidence: Confidence;
readonly boundingBox?: BoundingBox;
readonly spatialContext?: SpatialContext;
readonly geometry?: Geometry;
readonly cameraPose?: CameraPose;
}
export class ObservationFactory {