Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MapConversion or RigidOperation, when no transformation/translation are required? #19

Closed
evandroAlfieri opened this issue Dec 21, 2022 · 5 comments
Labels
agreement help wanted Extra attention is needed

Comments

@evandroAlfieri
Copy link
Contributor

evandroAlfieri commented Dec 21, 2022

There is the need to agree on the best pair of IFC entities to be used for the following scenario:

  • All data in the IFC file is in map coordinates and map meters
  • The target CS is a projected CS
  • but no coordinate operation (not transformation, nor translation) is required

Option 1
Use IfcRigidOperation with its attributes FirstCoordinate, SecondCoordinate, Height set to 0.

Example

#904 = IFCRIGIDOPERATION(#13, #905, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(0.), 0.);
#905 = IFCPROJECTEDCRS('EPSG:6174', $, $, $, $, $, $);
#13 = IFCGEOMETRICREPRESENTATIONCONTEXT($, 'Model', 3, 1.E-4, #14, #16);
#14 = IFCAXIS2PLACEMENT3D(#15, $, $);
#15 = IFCCARTESIANPOINT((0., 0., 0.));
#16 = IFCDIRECTION((0., 1.));

Option 2
Use IfcMapConversion with its attributes Eastings, Northings, OrthogonalHeight set to 0, and its Scale set to 1

Example

#904 = IFCMAPCONVERSION(#13, #905, 0., 0., 0., 1., 0., 1.);
#905 = IFCPROJECTEDCRS('EPSG:6174', $, $, $, $, $, $);
#13 = IFCGEOMETRICREPRESENTATIONCONTEXT($, 'Model', 3, 1.E-4, #14, #16);
#14 = IFCAXIS2PLACEMENT3D(#15, $, $);
#15 = IFCCARTESIANPOINT((0., 0., 0.));
#16 = IFCDIRECTION((0., 1.));

@LeeGregory12d @pjanck @SergejMuhic what would be the best option in this scenario?

NOTE: For simplicity, I've made the example using EPSG code to define the CS, but as you know IfcWellKnownText could have been used. That does not affect the scenario.

@evandroAlfieri evandroAlfieri added help wanted Extra attention is needed agreement labels Dec 21, 2022
@SergejMuhic
Copy link

If you have to convert the coordinates IfcMapConversion, if not then IfcRigidOperation.

When you say map meters, you probably mean projected coordinates from a curved surface to a circular plane i.e. map, right? In that case no conversion is required and IfcRigidOperation is what should be used.

Curious, if this is the understanding of the rest of the group. 😄

@LeeGregory12d
Copy link
Collaborator

Sorry but I have been out of action for a while.

I agree with Sergej that it is option 1.

The data is already in map metres (that is, Eastings and Northings) and so IfcMapConversion should not be used.

@LeeGregory12d
Copy link
Collaborator

LeeGregory12d commented Jan 11, 2023

Another question - edge cases

(a) Data already in map coordinates and map metres
In option 1, is it necessary to have

#904 = IFCRIGIDOPERATION(#13, #905, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(0.), 0.)

when it is only a zero translation?

Or can IfcRigidOperation be left out?
Or is that asking for trouble?

(b) IfcMapConversion and IfcMapConversion when it is just a unit operation. That is, scales all one, zero rotation and translation
In this case I believe you MUST have the IfcMapConversion/IfcMapConversionScaled because IfcMapConversion/IfcMapConfversionScaled tells you that the data has come from a local engineering coordinate system.

This is extremely important because one has to be aware that the data will be inaccurate if the length covered is too large.
"Too large" would be dependent on the projection, the relationship between the data to the project, accuracy required etc.
This would be project dependent but the existence of IfcMapConversion/IfcMapConversionScaled warns the receiver to be wary.

EDIT: Markdown syntax.

@pjanck
Copy link
Collaborator

pjanck commented Feb 27, 2023

+1 for option 1.

This was referenced Apr 15, 2023
@evandroAlfieri
Copy link
Contributor Author

Option1 it is. Thanks all

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
agreement help wanted Extra attention is needed
Projects
Status: Done
Development

No branches or pull requests

4 participants