/** * Georeferencing Extractor * * Extracts IFC georeferencing information for coordinate system transformations. * * IFC georeferencing concepts: * - IfcMapConversion: Transformation from local engineering CRS to map CRS * - IfcProjectedCRS: Target coordinate reference system (e.g., UTM, State Plane) * - IfcGeometricRepresentationContext: Context with coordinate system info * * This enables: * - Converting IFC coordinates to real-world coordinates (lat/lon or projected) * - Integration with GIS systems * - Multi-model coordination (ensuring models align in real-world space) */ import type { IfcEntity } from './entity-extractor.js'; export interface MapConversion { id: number; sourceCRS: number; targetCRS: number; eastings: number; northings: number; orthogonalHeight: number; xAxisAbscissa?: number; xAxisOrdinate?: number; scale?: number; } /** * Compute angle to grid north from XAxisAbscissa and XAxisOrdinate (in degrees). * Returns the counterclockwise angle from map X to the IFC local X-axis. * With IfcMapConversion this is represented as cos/sin, so: * - XAxisAbscissa = cos(angle) * - XAxisOrdinate = sin(angle) */ export declare function computeAngleToGridNorth(xAxisAbscissa?: number, xAxisOrdinate?: number): number | null; export interface ProjectedCRS { id: number; name: string; description?: string; geodeticDatum?: string; verticalDatum?: string; mapProjection?: string; mapZone?: string; mapUnit?: string; /** * Scale factor to convert MapConversion values to metres. * Derived from IfcProjectedCRS.MapUnit (e.g. 0.001 for mm, 1 for m). * If undefined, the project's length unit applies (IFC spec default). */ mapUnitScale?: number; } export interface GeoreferenceInfo { hasGeoreference: boolean; mapConversion?: MapConversion; projectedCRS?: ProjectedCRS; source?: 'mapConversion' | 'ePSetMapConversion' | 'siteLocation'; transformMatrix?: number[]; } /** * Extract georeferencing information from IFC entities */ export declare function extractGeoreferencing(entities: Map, entitiesByType: Map): GeoreferenceInfo; /** * Transform a point from local to world coordinates */ export declare function transformToWorld(localPoint: [number, number, number], georef: GeoreferenceInfo): [number, number, number] | null; /** * Transform a point from world to local coordinates */ export declare function transformToLocal(worldPoint: [number, number, number], georef: GeoreferenceInfo): [number, number, number] | null; /** * Get coordinate system description */ export declare function getCoordinateSystemDescription(georef: GeoreferenceInfo): string; //# sourceMappingURL=georef-extractor.d.ts.map