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

Georeferencing-Survey-12d-3 #112

Open
wants to merge 3 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
69 changes: 69 additions & 0 deletions Georeferencing-Survey-12d-3/Georeferencing-Survey-12d-3.ifc
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
ISO-10303-21;
HEADER;
FILE_DESCRIPTION (('ViewDefinition[Ifc4x3NotAssigned]'), '2;1');
FILE_NAME ('Georeferencing-Survey-12d-3.ifc', '2021-04-26T23:34:33', ('ljg'), ('12d Internet NW - Ranch'), 'IFC Engine rev 1257', '12d Model 15.0', '');
FILE_SCHEMA (('IFC4X3_RC3'));
ENDSEC;
DATA;
#1 = IFCPROJECT('2LJesmETv6W9jWXnI$q1Aj', #2, 'Georeferencing-Survey-12d-3', '', $, $, $, (#12), #7);
#2 = IFCOWNERHISTORY(#3, #6, $, .NOCHANGE., $, $, $, 1619444073);
#3 = IFCPERSONANDORGANIZATION(#4, #5, $);
#4 = IFCPERSON($, $, 'ljg', $, $, $, $, $);
#5 = IFCORGANIZATION($, '12d Internet NW - Ranch', '12d Internet NW - Ranch', $, $);
#6 = IFCAPPLICATION(#5, '15.0', '12d Model', '12d Model');
#7 = IFCUNITASSIGNMENT((#8, #9, #10, #11));
#8 = IFCSIUNIT(*, .LENGTHUNIT., $, .METRE.);
#9 = IFCSIUNIT(*, .AREAUNIT., $, .SQUARE_METRE.);
#10 = IFCSIUNIT(*, .VOLUMEUNIT., $, .CUBIC_METRE.);
#11 = IFCSIUNIT(*, .PLANEANGLEUNIT., $, .RADIAN.);
#12 = IFCGEOMETRICREPRESENTATIONCONTEXT($, 'Model', 3, 1.E-6, #14, #18);
#13 = IFCLOCALPLACEMENT($, #14);
#14 = IFCAXIS2PLACEMENT3D(#15, #16, #17);
#15 = IFCCARTESIANPOINT((0., 0., 0.));
#16 = IFCDIRECTION((0., 0., 1.));
#17 = IFCDIRECTION((1., 0., 0.));
#18 = IFCDIRECTION((0., 1.));
#19 = IFCPROJECTEDCRS('EPSG:7856', 'MGA2020 Zone 56 and AHD', 'EPSG:7844', 'EPSG:5711', 'UTM', '56', $);
#20 = IFCMAPCONVERSION(#12, #19, 0., 0., 0., 1., 0., 1., 1., 1.);
#21 = IFCSITE('0cEC8I7n115wd$bDGXiGnK', #2, 'Default Site', 'Description of Default Site', $, #13, $, $, .ELEMENT., $, $, $, $, $);
#22 = IFCRELAGGREGATES('3K7e7XBtz3JOOXMsZJrMxB', #2, 'ProjectContainer', 'ProjectContainer for Sites', #1, (#21));
#23 = IFCFACILITY('0nEAPsbGvABv_85cELtcxf', #2, 'All on string', 'Description of All on string', $, #13, $, $, .ELEMENT.);
#24 = IFCRELAGGREGATES('1qGCqhwJX1cAZqB4Oue1$1', #2, 'SiteContainer', 'SiteContainer For All Models', #21, (#23));
#25 = IFCRELCONTAINEDINSPATIALSTRUCTURE('1fg8xKaRjEDgLMqALe$c84', #2, 'FacilityContainer', 'FacilityContainer for Elements', (#26), #23);
#26 = IFCANNOTATION('1GFw8fpSrCkwvlQELfbWOr', #2, 'SW', $, 'Super', #13, #27, .NOTDEFINED.);
#27 = IFCPRODUCTDEFINITIONSHAPE($, $, (#28));
#28 = IFCSHAPEREPRESENTATION(#12, 'Body', 'GeometricCurveSet', (#29));
#29 = IFCPOLYLINE((#30, #31, #32, #33, #34));
#30 = IFCCARTESIANPOINT((256566.71394629, 7411793.56535756, 38.47979312));
#31 = IFCCARTESIANPOINT((256594.45838039, 7411770.44499658, 39.));
#32 = IFCCARTESIANPOINT((256616.91816057, 7411739.72794533, 39.5));
#33 = IFCCARTESIANPOINT((256634.42357754, 7411711.65322103, 40.));
#34 = IFCCARTESIANPOINT((256656.55306694, 7411674.6606431, 40.5));
#35 = IFCPROPERTYSET('3OnwxMQsjDExWfqhKkm8ZH', #2, 'SW', $, (#36, #37, #38));
#36 = IFCPROPERTYSINGLEVALUE('STRMATERIAL', $, IFCLABEL('RCP'), $);
#37 = IFCPROPERTYSINGLEVALUE('STRSHAPE', $, IFCLABEL('diameter'), $);
#38 = IFCPROPERTYSINGLEVALUE('STRDIAMETER', $, IFCREAL(2.4), $);
#39 = IFCRELDEFINESBYPROPERTIES('34othb4PL1Kg$ksXkccSqd', #2, '12d Model Property Sets', 'Custom String Attributes', (#26), #35);
#40 = IFCPROPERTYSET('2VDPGzO_HDiwXPrNzpMDVT', #2, 'Vertex', $, (#41, #47));
#41 = IFCCOMPLEXPROPERTY('SW', '12d_attribute_group', '12d_attribute_group', (#42, #43, #44, #45, #46));
#42 = IFCPROPERTYSINGLEVALUE('QUALITY LEVEL1', $, IFCLABEL('QL_1'), $);
#43 = IFCPROPERTYSINGLEVALUE('QUALITY LEVEL2', $, IFCLABEL('QL_2'), $);
#44 = IFCPROPERTYSINGLEVALUE('QUALITY LEVEL3', $, IFCLABEL('QL_3'), $);
#45 = IFCPROPERTYSINGLEVALUE('QUALITY LEVEL4', $, IFCLABEL('QL_4'), $);
#46 = IFCPROPERTYSINGLEVALUE('QUALITY LEVEL5', $, IFCLABEL('QL_5'), $);
#47 = IFCCOMPLEXPROPERTY('PT_ID', '12d_attribute_group', '12d_attribute_group', (#48, #49, #50, #51, #52));
#48 = IFCPROPERTYSINGLEVALUE('Point_Id1', $, IFCLABEL('42'), $);
#49 = IFCPROPERTYSINGLEVALUE('Point_Id2', $, IFCLABEL('43'), $);
#50 = IFCPROPERTYSINGLEVALUE('Point_Id3', $, IFCLABEL('44'), $);
#51 = IFCPROPERTYSINGLEVALUE('Point_Id4', $, IFCLABEL('45'), $);
#52 = IFCPROPERTYSINGLEVALUE('Point_Id5', $, IFCLABEL('46'), $);
#53 = IFCRELDEFINESBYPROPERTIES('0COXzjPinAqQnQlbpjPJdf', #2, '12d Model Property Sets', 'Custom String Attributes', (#26), #40);
#54 = IFCPROPERTYSET('0RQ1CujmbD9uARTUDpgX5G', #2, 'Segment', $, (#55));
#55 = IFCCOMPLEXPROPERTY('SW', '12d_attribute_group', '12d_attribute_group', (#56, #57, #58, #59));
#56 = IFCPROPERTYSINGLEVALUE('QUALITY LEVEL1', $, IFCLABEL('QL_A'), $);
#57 = IFCPROPERTYSINGLEVALUE('QUALITY LEVEL2', $, IFCLABEL('QL_B'), $);
#58 = IFCPROPERTYSINGLEVALUE('QUALITY LEVEL3', $, IFCLABEL('QL_C'), $);
#59 = IFCPROPERTYSINGLEVALUE('QUALITY LEVEL4', $, IFCLABEL('QL_D'), $);
#60 = IFCRELDEFINESBYPROPERTIES('01Zpn5brr9SRxdtQKLICQQ', #2, '12d Model Property Sets', 'Custom String Attributes', (#26), #54);
ENDSEC;
END-ISO-10303-21;
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
64 changes: 64 additions & 0 deletions Georeferencing-Survey-12d-3/readme.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@

### Intent

Survey data is collected from the very beginning of a project and the position and elevation of any other data in the project must be tied back to accurate survey.
Survey data starts with points and strings which are an ordered set of points (vertices) vertices connected by segments.
So a survey point is just a survey string with only one vertex.

As well as collecting the (x,y) and sometimes a z for each vertex, surveyors also collect properties for the entire string, properties for each vertex of the string and properties for each segment of the string.
For example when picking up the top of a buried pipe, the Quality level can vary for each vertex and for each segment of the pipe.

However I have no idea how these prperties can be represented in IFC.
So as a start I have mapped the Property set for the vertices and segments to Property Sets for IfcAnnotation with:

- Property sets with properties for the entire string
- Property set Vertex with the properties for each vertex with the property name for a vertex appended by the number for the vertex (starting at 1)
- Property set Segment with the properties for each segment with the property name for a segment appended by the number for the segment (starting at 1)
Comment on lines +11 to +16
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Proposal:

I'd introduce an IfcAnnotation for each individual point, assign the corresponding IfcCartesianPoint as its geometric representation, and assign the corresponding PropSet for each individually.

You can also make use of the IfcRoot.Name attribute (part of the IfcAnnotation) for naming of points / string lines, etc.

NOTE I'd except this text to be part of the pull request in order to discuss in the pull request, not as part of the "finalized" Readme :)

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What about the geometry of the segment between each vertex ?
And the Property Sets that go with each segment ?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That would be another IfcAnnotation with its own geometry (line?) and properties.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A new unit test Georeferencing-Survey-12d-4 as been added with such an alternate structure for the survey string line with string line property sets, vertex property sets and segment property sets.


This encoding is to allow the process to be reversed when read into another software package.

So this scenario covers one simple survey string with property sets for the entire string, property sets for vertex properties and property sets for segment properties

I am definitely happy to hear any suggestions on how slese this could be done.

This IFC file has a survey consisting of:

- one survey string with name "RD ET"
- Property Set "SW" with properties STRMATERIAL, STRSHAPE and STRDIAMETER
- Property Set "Vertex" containing Property sets "SW" and "PT ID"
- Property Set "Segment" containing Property sets "SW"

The coordinates are in Easting, Northing and AHD for the map projection MGA2020 Zone 56.
The Horizontal and Vertical datums, and Map Projection, are specified in IfcProjectedCRS.
IfcMapConversion is a "No Operation" as the data in the file is already in map coordinates and needs no further transformation.

![georefsurvey12d3](../Georeferencing-Survey-12d-3/Georeferencing-Survey-12d-3.png "Simple Survey String with Property Sets")
![georefsurvey12d3RDF](../Georeferencing-Survey-12d-3/Georeferencing-Survey-12d-3-in-RDF-ifcviewer.png "Simple Survey with Property Set in RDF ifcviewer")

The IFC file was written by 12d Model.

### Prerequisites

This scenario builds upon following other scenarios:

- Georeferencing-Survey-12d-2

### Content

This scenario covers the following new concepts and/or IFC entities:

- `IfcComplexProperty`
- `IfcPropertySingleValue` with `IfcPropertySingleValue.Nominalvalue` IFCLABEL
- `IfcPropertySingleValue` with `IfcPropertySingleValue.Nominalvalue` IFCREAL


### Supporting files

Following files correspond to this scenario:

| Filename | Description |
|------------------------------------|------------------------------------|
| `Georeferencing-Survey-12d-3.ifc` | the exported content as IFC document |
| `Georeferencing-Survey-12d-3.png` | screen shot from 12d Model |
| `Georeferencing-Survey-12d-3-RDF-ifcviewer.png` | screen shot from RDF ifcviewer |