ifc-georef
Georeferencing: map conversion, coordinate reference systems, site placement.
| Status | Partial |
| Latest release | 0.4.0 (2026-09-29) |
| Registries | crates.io ifc-georef |
| Via the facade | openbim-ifc feature georef |
| API documentation | rustdoc · docs.rs |
| Source | crates/ifc-georef/ |
Overview
IFC project-to-map coordinate operations.
This crate resolves IFC references, units, axis defaults, and CRS metadata, then emits a format-neutral axiolid_core::Transform3. It does not place products, reproject coordinates, or select a geometry backend.
Depends on
Changes
Latest release, 0.4.0 (2026-09-29):
Added
ProjectedCrs.well_known_text: the OGC WKT literal of the one IFC4X3IfcWellKnownTextdefining the CRS, verbatim (#142).GeorefError::RuleViolation { entity, rule }for a schema WHERE rule or inverse cardinality a record breaks.
Changed (breaking)
ProjectedCrs.nameisOption<String>(#142). IFC4X3 declaresIfcCoordinateReferenceSystem.Name : OPTIONAL IfcLabelwithWHERE NameOrWKT : (HIINDEX(WellKnownText) = 1) OR EXISTS(Name): under an IFC4X3 header an unnamed CRS defined by exactly oneIfcWellKnownTextnow reads, one with neither is refused with the newGeorefError::RuleViolation { rule: "NameOrWKT" }, and two definitions for one CRS (the inverse isSET [0:1]) are refused too. IFC4, or a missing or ambiguous header, keeps requiring the name (MissingAttribute), sonameis alwaysSomethere. Migrate withcrs.name.as_deref().- The authoring drafts
ProjectedCrsDraft,GeographicCrsDraftandMapConversionDraftare#[non_exhaustive]: build them withProjectedCrsDraft::new(name),GeographicCrsDraft::new()orMapConversionDraft::new(source_crs, target_crs, eastings, northings, orthogonal_height)and a setter named after each optional field (.map_unit(unit),.x_axis((abscissa, ordinate)),.scale(s)). Fields stay public. - The read-side
ProjectToMapandProjectedCrsare#[non_exhaustive]; they can no longer be built with a struct literal outside the crate.
Changed
- Depends on
ifc-schemawith its default features named explicitly (every bundled release), now that the workspace dependency turns them off for the facade's per-release features (#112). - A model whose header declares
IFC4X1orIFC4X2is refused with the existing unsupported-schema error.ifc-schemanow bundles both releases, but no layout here is verified against them, so they are never read as IFC4 or IFC4X3.
Full history: crates/ifc-georef/CHANGELOG.md