buildingSMART / buildingSMART/IFC4.x-development

HasCoordinateOperation constraint to all contexts cannot be satisfied

Open
#317 12 comments 0 reactions 0 assignees View on GitHub
allocated allocated-core allocated-infra ifc-update-out
Dominant language
Python
Stars
234
Forks
123
Avg merge
15h 4m
Merged PRs (30d)
5

Description

Original issue: https://forums.buildingsmart.org/t/hascoordinateoperation-constraint-to-all-contexts-cannot-be-satisfied/3502

The docs state:

> Indicates conversion between coordinate systems. In particular it refers to an [IfcCoordinateOperation](http://localhost:8001/schema/ifcrepresentationresource/lexical/ifccoordinateoperation.htm) between a Geographic map coordinate reference system, and the engineering coordinate system of this construction project. If there is more then one IfcGeometricRepresentationContext provided to the [IfcProject](http://localhost:8001/schema/ifckernel/lexical/ifcproject.htm) then **all contexts shall have an identical instance of [IfcCoordinateOperation](http://localhost:8001/schema/ifcrepresentationresource/lexical/ifccoordinateoperation.htm) as *HasCoordinateOperation* refering to the same instance of [IfcCoordinateReferenceSystem](http://localhost:8001/schema/ifcrepresentationresource/lexical/ifccoordinatereferencesystem.htm)**.

HasCoordinateOperation is an inverse attribute, which points to an `IfcCoordinateOperation` (i.e. an `IfcMapConversion`. Specifically, the `SourceCRS` refers to the `IfcGeometricRepresentationContext`, and the `TargetCRS` refers to the `IfcProjectedCRS`.

Therefore, it is impossible to have an _identical instance_ of IfcCoordinateOperation. You will need a new`IfcMapConversion` per context. This is, well, not very good. All contexts should have the same map conversion, unless you want users brains to explode :slight_smile:

An additional impact of this is that it becomes mandatory to have an IfcMapConversion, otherwise your IfcProjectedCRS is not going to be linked to your context. (Note: technically speaking you could have an IfcProjectedCRS without an IfcMapConversion but the entity is unrelated, which is also pretty poor). Some might argue that this is not quite correct, as in theory you might want a situation where you have an IfcProjectedCRS without any conversion (i.e. your geometric context is already in the map CRS). This happens a lot of civil / infrastructure projects, I would imagine.

Funnily enough, it is also exactly in this scenario which makes the true north attribute a bit meaningless, since it is no longer clear which easting / northing is being specified. Related to #315.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.