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 via IfcSite and IfcProjectedCRS (IFC 4.3) #159

Open
matgitbac opened this issue Jul 3, 2024 · 12 comments
Open

Georeferencing via IfcSite and IfcProjectedCRS (IFC 4.3) #159

matgitbac opened this issue Jul 3, 2024 · 12 comments

Comments

@matgitbac
Copy link

Hi
Problem
In relation to my recent post in the General usability issues of docs #371 forum, I would like to understand how to properly georeference multiple small, distant (>5km distances, same Projected CRS) sites in one project.
I do not use IfcMapConversion, because a single set of transformation parameters would not be accurate enough for the large area.

Solution(s)
My present approach is that I define multiple sites and each site is defined by local placement (IFCAXIS2PLACEMENT3D, IFCCARTESIANPOINT and IFCDIRECTION).
In IfcCartesianPoint the coordinates are defined in the Gauß Krüger coordinate system and rotational angle to true north is defined in IfcDirection.
This way, the local 3D model coordinates need to be defined only once and can be reused in the sites.

However, as IfcProjectedCRS links only with IfcMapconversion, does it still make sense to include these to indicate that the site offsets are Gauß Krüger coordinates?

Is this the correct approach for georeferencing multiple distant sites in one project or is there a better “best practice” approach?
If there is a different approach to commonly apply, please provide some concrete examples with real data.
Thank you!

Cheers
Matthias

Require schema changes?

  • no

Require documentation changes?

  • no

Rule required

  • don't know
@matgitbac matgitbac changed the title Georeferencing via IfcSite and IfcProjectedCRS Georeferencing via IfcSite and IfcProjectedCRS (IFC 4.3) Jul 3, 2024
@michelangelo-acca
Copy link
Collaborator

It would be nice if you can share the IFC model to have a look. AFAIK the IFC Tunnel Project was addressing such issues more specifically, but I may be wrong here. Pinging @SergejMuhic.

@matgitbac
Copy link
Author

matgitbac commented Jul 5, 2024

Hi, thanks for the response. I pasted the IFC4.3 example below.

cheers
Matthias

ISO-10303-21;
HEADER;
FILE_DESCRIPTION (('ViewDefinition of a railway'), '2;1');
FILE_NAME ('7_RailSignalschild', '2024-06-29T19:55:58', ('Company'), ('Company','UUID: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX','LOD: 108'), 'Processor version 0.0.0.8', 'IfcApi', 'Company');
FILE_SCHEMA (('IFC4X3_ADD2'));
ENDSEC;
DATA;
#1=IFCGEOMETRICREPRESENTATIONCONTEXT('mainGeometricRepresentationContext_ident','model',3,1.E-05,#2,$);
#2=IFCAXIS2PLACEMENT3D(#3,$,#4);
#3=IFCCARTESIANPOINT((0.,0.,0.));
#4=IFCDIRECTION((0.,0.));
#5=IFCPROJECTEDCRS('EPSG:31256','Austria Gauss-Kruger East False Northing -5000 False Easting 750','EPSG:31256 Greenwich',$,'Gauss-Krueger','M34',$);
#6=IFCMAPCONVERSION(#1,#5,12835.1387,344033.811,0.,0.00074421594019598,-0.999999723071279,1.);
#7=IFCOWNERHISTORY(#10,#11,.READWRITE.,.ADDED.,1719690960,#10,#11,1719690958);
#8=IFCPERSON($,'Name','Name',$,$,$,(#13),(#12));
#9=IFCORGANIZATION($,'Company',$,(#13),(#12));
#10=IFCPERSONANDORGANIZATION(#8,#9,(#13));
#11=IFCAPPLICATION(#9,'0.0.0.8','Soft','Soft');
#12=IFCPOSTALADDRESS(.OFFICE.,'The postal address of Company','Address',$,'Address','Address','Address','Address','Address');
#13=IFCACTORROLE(.ARCHITECT.,'Developer','Developer');
#14=IFCPROJECT('7464ce09-6966-4510-9374-1211b892c801',#7,'name','desc',$,'long_name','phase',(#1),#186);
#115=IFCLOCALPLACEMENT($,#116);
#116=IFCAXIS2PLACEMENT3D(#117,$,#118);
#117=IFCCARTESIANPOINT((500.,500.,500.));
#118=IFCDIRECTION((0.,1.,2.));
#119=IFCSIGNALTYPE('328248ed-6d45-4299-bbeb-cc69842316b8',#7,'signal type','Defines the the type of a signal',$,$,$,$,'signal',.VISUAL.);
#120=IFCSIGNAL('5850c4ee-618f-4114-876d-a61734152392',#7,'1','2','signal',#115,#121,'signal',$);
#121=IFCPRODUCTDEFINITIONSHAPE('name','desc',(#122));
#122=IFCSHAPEREPRESENTATION(#123,'1','2',(#124));
#123=IFCGEOMETRICREPRESENTATIONSUBCONTEXT('signal_geo_sc_ident','model',*,*,*,*,#1,0.,.USERDEFINED.,'UserDefinedTargetView');
#124=IFCFACETEDBREP(#125);
#125=IFCCLOSEDSHELL((#126,#133,#140,#147,#154,#161));
#126=IFCFACE((#127));
#127=IFCFACEOUTERBOUND(#128,.T.);
#128=IFCPOLYLOOP((#129,#130,#131,#132));
#129=IFCCARTESIANPOINT((0.,0.,0.));
#130=IFCCARTESIANPOINT((100.,0.,0.));
#131=IFCCARTESIANPOINT((100.,0.,200.));
#132=IFCCARTESIANPOINT((0.,0.,200.));
#133=IFCFACE((#134));
#134=IFCFACEOUTERBOUND(#135,.T.);
#135=IFCPOLYLOOP((#136,#137,#138,#139));
#136=IFCCARTESIANPOINT((100.,0.,200.));
#137=IFCCARTESIANPOINT((100.,0.,0.));
#138=IFCCARTESIANPOINT((100.,100.,0.));
#139=IFCCARTESIANPOINT((100.,100.,200.));
#140=IFCFACE((#141));
#141=IFCFACEOUTERBOUND(#142,.T.);
#142=IFCPOLYLOOP((#143,#144,#145,#146));
#143=IFCCARTESIANPOINT((100.,100.,200.));
#144=IFCCARTESIANPOINT((100.,100.,0.));
#145=IFCCARTESIANPOINT((0.,100.,0.));
#146=IFCCARTESIANPOINT((0.,100.,200.));
#147=IFCFACE((#148));
#148=IFCFACEOUTERBOUND(#149,.T.);
#149=IFCPOLYLOOP((#150,#151,#152,#153));
#150=IFCCARTESIANPOINT((0.,100.,200.));
#151=IFCCARTESIANPOINT((0.,100.,0.));
#152=IFCCARTESIANPOINT((0.,0.,0.));
#153=IFCCARTESIANPOINT((0.,0.,200.));
#154=IFCFACE((#155));
#155=IFCFACEOUTERBOUND(#156,.T.);
#156=IFCPOLYLOOP((#157,#158,#159,#160));
#157=IFCCARTESIANPOINT((0.,0.,0.));
#158=IFCCARTESIANPOINT((0.,100.,0.));
#159=IFCCARTESIANPOINT((100.,100.,0.));
#160=IFCCARTESIANPOINT((100.,0.,0.));
#161=IFCFACE((#162));
#162=IFCFACEOUTERBOUND(#163,.T.);
#163=IFCPOLYLOOP((#164,#165,#166,#167));
#164=IFCCARTESIANPOINT((100.,0.,200.));
#165=IFCCARTESIANPOINT((100.,100.,200.));
#166=IFCCARTESIANPOINT((0.,100.,200.));
#167=IFCCARTESIANPOINT((0.,0.,200.));
#168=IFCRELDEFINESBYTYPE('c8654e72-ea79-4d0e-95d7-d87e2cc1d2db',#7,'signaltype link','links the ifcsignaltype to the ifcsignal',(#120),#119);
#169=IFCRELDEFINESBYPROPERTIES('d30d4b99-ffba-4114-b3a5-b9f47830903a',#7,$,$,(#120),#21);
#170=IFCRELDEFINESBYPROPERTIES('623a1dbb-830c-47ea-a971-06866d33fd62',#7,$,$,(#120),#24);
#171=IFCRELDEFINESBYPROPERTIES('c420366f-6940-45a2-ab25-fedf4a042857',#7,$,$,(#120),#28);
#172=IFCRELDEFINESBYPROPERTIES('0c141bac-8549-4b2c-b6c2-39478efd3058',#7,$,$,(#120),#31);
#173=IFCRELDEFINESBYPROPERTIES('b3c5788b-5157-4701-b44c-b7793d91122a',#7,$,$,(#120),#34);
#174=IFCRELDEFINESBYPROPERTIES('a7ec3e8a-d790-43c3-94aa-319c583adc40',#7,$,$,(#120),#41);
#175=IFCRELDEFINESBYPROPERTIES('183284ac-033f-40e7-9f79-088a4effb6d3',#7,$,$,(#120),#43);
#176=IFCRELDEFINESBYPROPERTIES('4604482a-28e8-4276-bbec-5764987fe555',#7,$,$,(#120),#48);
#177=IFCRELDEFINESBYPROPERTIES('f31128d5-f0d6-4ad9-b73a-1bc814bd309c',#7,$,$,(#120),#70);
#178=IFCRELDEFINESBYPROPERTIES('f7e336b8-e90c-4066-b484-e9b0562e9b32',#7,$,$,(#120),#79);
#179=IFCRELDEFINESBYPROPERTIES('1498800a-0f63-494b-9a5c-ea80af6c6688',#7,$,$,(#120),#101);
#180=IFCRELDEFINESBYPROPERTIES('e9a378be-2bc6-4d46-a50c-c33a75e64555',#7,$,$,(#120),#105);
#181=IFCRELDEFINESBYPROPERTIES('561b8035-1d91-4199-851a-fc7219458089',#7,$,$,(#120),#109);
#182=IFCRELDEFINESBYPROPERTIES('dc865253-5ef1-4aae-bcce-ec10324a0717',#7,$,$,(#120),#111);
#183=IFCRELDEFINESBYPROPERTIES('0e10e67a-948c-4ce6-b317-e3b466439283',#7,$,$,(#120),#113);
#184=IFCRELCONTAINEDINSPATIALSTRUCTURE('4713dec1-2d8a-4d5a-ac09-1944eaf62b01',#7,$,$,(#120),#114);
#185=IFCRELAGGREGATES('a34dfff6-998a-485a-a6d6-9d98ca5d5c4c',#7,$,$,#14,(#114));
#186=IFCUNITASSIGNMENT((#40,#47,#53,#58,#66));


#187=IFCSITE('1b87bf55-be31-4a7f-8f15-842619fe2333',#7,'RailSignalschildSite2','The site2','Railway',#115,$,'Site 2',.ELEMENT.,(0),(0),0.,$,#12);
#188=IFCRELCONTAINEDINSPATIALSTRUCTURE('4713dec1-2d8a-4d5a-ac09-1944eaf62ccc',#7,$,$,(#189),#187);
#189=IFCSIGNAL('5850c4ee-618f-4114-876d-a61734152aaa',#7,'1','2','3',#190,#121,'signal2',$);
#190=IFCLOCALPLACEMENT($,#191);
#191=IFCAXIS2PLACEMENT3D(#192,$,#193);
#192=IFCCARTESIANPOINT((800.,800.,500.));
#193=IFCDIRECTION((0.,1.,2.));

ENDSEC;
END-ISO-10303-21;

@michelangelo-acca
Copy link
Collaborator

test_geo

At first look, your model gets localized near Vienna, but it contains some errors (invalid guids, non normalized directions, etc.).

Also, there is only 1 site in the model, and not multiple ones!

@SergejMuhic
Copy link

Hello, there are two operations for maps available:

  • IfcMapConversion - if you have your model in local engineering coordinates (not map coordinates). It implies that the conversion of coordinates still has to be done.
  • IfcRigidOperation - if your model is in map coordinates.

We have dealt with this problem in Tunnel, yes. We have prepared two (even three to be precise) concept templates for usages in the IFC spec. These draft templates provide the idea:
IfcRigidOperation on maps
IfcRigidOperation on IfcGeographicCRS
And the template from IFC4 where the receiving software has to deal with converting coordinates with IfcMapConversion

@matgitbac
Copy link
Author

Hi
thanks @michelangelo-acca this shows that the georeferencing should work. However when I'm trying the code I posted, my origin appears somewhere in croatia/bosnia. Which codelines did you "repair" to show the IFC in the geotwin map?
The missing site was my mistake.

Below my new try. I tried to avoid the IfcMapConversion by directly placing the sites in GK coordinates. If there are errors in the code which cause wrong georeferencing or not proper construction of the models, please specify them as I'm new to this.

@SergejMuhic Thanks for your response. I have identified IfcRigidOperation as possible option (4.10.6 Project Global Positioning Mapped) . I'd try it next if this approach does not work out.

thanks
cheers Matthias


ISO-10303-21;
HEADER;
FILE_DESCRIPTION (('ViewDefinition of a railway'), '2;1');
FILE_NAME ('0_Signalschild_single_ifc_0.1.2.0_Ifc4x3.ifc', '2024-07-08T15:57:36', ('Company'), ('Company','UUID: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX','LOD: 100','CRS: 31256'), 'Processor version 0.0.1.2', 'IfcApi', 'Company');
FILE_SCHEMA (('IFC4X3_ADD2'));
ENDSEC;
DATA;
#1=IFCGEOMETRICREPRESENTATIONCONTEXT('mainGeometricRepresentationContext_ident','Model',3,1.E-05,#2,$);
#2=IFCAXIS2PLACEMENT3D(#3,$,#4);
#3=IFCCARTESIANPOINT((0.,0.,0.));
#4=IFCDIRECTION((0.,0.));
#5=IFCPROJECTEDCRS('EPSG:31256','Austria Gauss-Kruger East False Northing -5000 False Easting 750','EPSG:31256 Greenwich','None','Gauss-Krueger','M34',#6);
#6=IFCSIUNIT(*,.LENGTHUNIT.,$,.METRE.);
#7=IFCMAPCONVERSION(#1,#5,0.,0.,0.,$,$,1.);
#8=IFCOWNERHISTORY(#11,#12,.READWRITE.,.ADDED.,1720454260,#11,#12,1720454256);
#9=IFCPERSON($,'name','name',$,$,$,(#14),(#13));
#10=IFCORGANIZATION($,'Organisation',$,(#14),(#13));
#11=IFCPERSONANDORGANIZATION(#9,#10,(#14));
#12=IFCAPPLICATION(#10,'0.0.1.2','sw','sw');
#13=IFCPOSTALADDRESS(.OFFICE.,'The postal address of Company','',$,'','','','','');
#14=IFCACTORROLE(.ARCHITECT.,'Developer','Developer');
#15=IFCPROJECT('2gYoICns98B8nxveHQeNdh',#8,'sw',$,$,'sw',$,(#1),#316);

#103=IFCPROPERTYSINGLEVALUE('RailwaySignalType','',IFCLABEL('Other'),$);
#104=IFCPROPERTYSINGLEVALUE('IsHighType','',IFCBOOLEAN(.T.),$);
#105=IFCPROPERTYSINGLEVALUE('SignalIndicatorType','',IFCLABEL('Other'),$);
#106=IFCPROPERTYSET('0aeX88zIH0wv4dm7zCp9Wg',#8,'Pset_RailwaySignalType',$,(#103,#104,#105));
#107=IFCPROPERTYSINGLEVALUE('SignalAspectSymbol','',IFCLABEL('UNSET'),$);
#108=IFCPROPERTYSINGLEVALUE('SignalAspectType','',IFCLABEL('3-display'),$);
#109=IFCPROPERTYSINGLEVALUE('SignLegend','',IFCLABEL(''),$);
#110=IFCPROPERTYSET('3O1HxLUFH2OOIf3YsaEf99',#8,'Pset_RailwaySignalAspect',$,(#107,#108,#109));
#111=IFCPROPERTYSINGLEVALUE('SignalFrameType','',IFCLABEL('Main Frame'),$);
#112=IFCPROPERTYSET('3JVQcazez2cwj4Q5Qo2_FS',#8,'Pset_SignalFrame',$,(#111));
#114=IFCPROPERTYSET('2LD8uTgdL8Ifa5lP5elrRf',#8,'Pset_ElectricalDeviceCommon',$,(#113));
#115=IFCSITE('1co7KCFBD3LuqYQfpIBNSH',#8,'Site0','The site for the element Signalschild','Model',#116,$,'Site0',.ELEMENT.,$,$,$,$,#13);
#116=IFCLOCALPLACEMENT($,#117);
#117=IFCAXIS2PLACEMENT3D(#118,$,$);
#118=IFCCARTESIANPOINT((11124.5638,343909.436,1000.));
#119=IFCSIGNALTYPE('0boTQjAbjBpP73A7KgzwL3',#8,'signal type','Defines the the type of a signal',$,$,$,$,'signal0',.VISUAL.);
#120=IFCSIGNAL('3BdlXdx_T1L8G145FHMWjw',#8,'Signal0','signal0','signal0',#121,#125,'signal0',$);
#121=IFCLOCALPLACEMENT(#116,#122);
#122=IFCAXIS2PLACEMENT3D(#123,#124,$);
#123=IFCCARTESIANPOINT((0.,0.,0.));
#124=IFCDIRECTION((0.5,0.5,0.5));
#125=IFCPRODUCTDEFINITIONSHAPE('name','desc',(#126));
#126=IFCSHAPEREPRESENTATION(#127,'ident','type',(#128));
#127=IFCGEOMETRICREPRESENTATIONSUBCONTEXT('ident','Model',*,*,*,*,#1,1.,.USERDEFINED.,'UserDefinedTargetView');
#128=IFCFACETEDBREP(#129);
#129=IFCCLOSEDSHELL((#130,#137,#144,#151,#158,#165));
#130=IFCFACE(((#700),#131));

#700=IFCSTYLEDITEM($,(#701),$);
#701=IFCSURFACESTYLE($,.BOTH.,(#702));
#702=IFCSURFACESTYLERENDERING(#703,$,$,$,$,$,$,$,.MATT.);
#703=IFCCOLOURRGB($,0.6,0.7,0.8);

#131=IFCFACEOUTERBOUND(#132,.T.);
#132=IFCPOLYLOOP((#133,#134,#135,#136));
#133=IFCCARTESIANPOINT((0.,0.,0.));
#134=IFCCARTESIANPOINT((100.,0.,0.));
#135=IFCCARTESIANPOINT((100.,0.,200.));
#136=IFCCARTESIANPOINT((0.,0.,200.));
#137=IFCFACE((#138));
#138=IFCFACEOUTERBOUND(#139,.T.);
#139=IFCPOLYLOOP((#140,#141,#142,#143));
#140=IFCCARTESIANPOINT((100.,0.,200.));
#141=IFCCARTESIANPOINT((100.,0.,0.));
#142=IFCCARTESIANPOINT((100.,100.,0.));
#143=IFCCARTESIANPOINT((100.,100.,200.));
#144=IFCFACE((#145));
#145=IFCFACEOUTERBOUND(#146,.T.);
#146=IFCPOLYLOOP((#147,#148,#149,#150));
#147=IFCCARTESIANPOINT((100.,100.,200.));
#148=IFCCARTESIANPOINT((100.,100.,0.));
#149=IFCCARTESIANPOINT((0.,100.,0.));
#150=IFCCARTESIANPOINT((0.,100.,200.));
#151=IFCFACE((#152));
#152=IFCFACEOUTERBOUND(#153,.T.);
#153=IFCPOLYLOOP((#154,#155,#156,#157));
#154=IFCCARTESIANPOINT((0.,100.,200.));
#155=IFCCARTESIANPOINT((0.,100.,0.));
#156=IFCCARTESIANPOINT((0.,0.,0.));
#157=IFCCARTESIANPOINT((0.,0.,200.));
#158=IFCFACE((#159));
#159=IFCFACEOUTERBOUND(#160,.T.);
#160=IFCPOLYLOOP((#161,#162,#163,#164));
#161=IFCCARTESIANPOINT((0.,0.,0.));
#162=IFCCARTESIANPOINT((0.,100.,0.));
#163=IFCCARTESIANPOINT((100.,100.,0.));
#164=IFCCARTESIANPOINT((100.,0.,0.));
#165=IFCFACE((#166));
#166=IFCFACEOUTERBOUND(#167,.T.);
#167=IFCPOLYLOOP((#168,#169,#170,#171));
#168=IFCCARTESIANPOINT((100.,0.,200.));
#169=IFCCARTESIANPOINT((100.,100.,200.));
#170=IFCCARTESIANPOINT((0.,100.,200.));
#171=IFCCARTESIANPOINT((0.,0.,200.));
#172=IFCRELDEFINESBYTYPE('0UwMg7nkn5u9N7CjI07xw1',#8,'signaltype link','links the ifcsignaltype to the ifcsignal',(#120),#119);
#173=IFCRELDEFINESBYPROPERTIES('1F28jmvYT5o8uoEWoeCsR9',#8,$,$,(#120),#22);
#174=IFCRELDEFINESBYPROPERTIES('0iSykRTOn8oRGXHMerzcFi',#8,$,$,(#120),#25);
#175=IFCRELDEFINESBYPROPERTIES('1Pv7qBImr6fObOAjNVQGan',#8,$,$,(#120),#29);
#176=IFCRELDEFINESBYPROPERTIES('2TEGPzv358gAR3wtQ5l2z9',#8,$,$,(#120),#32);
#177=IFCRELDEFINESBYPROPERTIES('1K423Ae39ALAmazXlpAXl4',#8,$,$,(#120),#35);
#178=IFCRELDEFINESBYPROPERTIES('2gaRB1vsf9owsF7XHjDJZ4',#8,$,$,(#120),#42);
#179=IFCRELDEFINESBYPROPERTIES('2WBNagg9X5eP_On0S4eZl9',#8,$,$,(#120),#44);
#180=IFCRELDEFINESBYPROPERTIES('3lW_hDXwfDkP0XHMvd3_$a',#8,$,$,(#120),#49);
#181=IFCRELDEFINESBYPROPERTIES('1NtaBGMY55pew5g$Tla6H_',#8,$,$,(#120),#71);
#182=IFCRELDEFINESBYPROPERTIES('2$ECoCbG98OxmwxQWSiS0O',#8,$,$,(#120),#80);
#183=IFCRELDEFINESBYPROPERTIES('04k6kfvV18pOzg11XJs35u',#8,$,$,(#120),#102);
#184=IFCRELDEFINESBYPROPERTIES('0oXqOz8OHAThc3OwCQZRXB',#8,$,$,(#120),#106);
#185=IFCRELDEFINESBYPROPERTIES('224as3MjPBsRRzVBt4Xmhd',#8,$,$,(#120),#110);
#186=IFCRELDEFINESBYPROPERTIES('0NheKtGG151vwY4kVAgUKA',#8,$,$,(#120),#112);
#187=IFCRELDEFINESBYPROPERTIES('0oFCTFGKP8Ih9p_rBoXhnh',#8,$,$,(#120),#114);
#188=IFCRELCONTAINEDINSPATIALSTRUCTURE('2wb3w4O4b9VAGCz9FFVmiu',#8,$,$,(#120),#115);

#276=IFCPROPERTYSINGLEVALUE('RailwaySignalType','',IFCLABEL('Other'),$);
#277=IFCPROPERTYSINGLEVALUE('IsHighType','',IFCBOOLEAN(.T.),$);
#278=IFCPROPERTYSINGLEVALUE('SignalIndicatorType','',IFCLABEL('Other'),$);
#279=IFCPROPERTYSET('17n2Dsw2L8ARDxyTMksB6s',#8,'Pset_RailwaySignalType',$,(#276,#277,#278));
#280=IFCPROPERTYSINGLEVALUE('SignalAspectSymbol','',IFCLABEL('UNSET'),$);
#281=IFCPROPERTYSINGLEVALUE('SignalAspectType','',IFCLABEL('2-display'),$);
#282=IFCPROPERTYSINGLEVALUE('SignLegend','',IFCLABEL('2'),$);
#283=IFCPROPERTYSET('2cCFn9qNv139fc53lZv3SG',#8,'Pset_RailwaySignalAspect',$,(#280,#281,#282));
#284=IFCPROPERTYSINGLEVALUE('SignalFrameType','',IFCLABEL('Main Frame'),$);
#285=IFCPROPERTYSET('1xJto1dcH5Kvfo51sRQvrO',#8,'Pset_SignalFrame',$,(#284));

#288=IFCSITE('24agONSE5FIBZ6mK_N1n$0',#8,'Site1','The site for the element Signalschild','Model',#289,$,'Site1',.ELEMENT.,$,$,$,$,#13);
#289=IFCLOCALPLACEMENT($,#290);
#290=IFCAXIS2PLACEMENT3D(#291,$,$);
#291=IFCCARTESIANPOINT((12865.1387,344053.811,1000.));
#292=IFCSIGNALTYPE('15BhLfG0TB2xR6ncQ2Uq8A',#8,'signal type','Defines the the type of a signal',$,$,$,$,'signal1',.VISUAL.);
#293=IFCSIGNAL('3o44tfvM5FYAWbSEEZXOei',#8,'Signal1','signal1','signal1',#294,#125,'signal1',$);
#294=IFCLOCALPLACEMENT(#289,#295);
#295=IFCAXIS2PLACEMENT3D(#296,#297,$);
#296=IFCCARTESIANPOINT((0.,0.,0.));
#297=IFCDIRECTION((0.,0.,0.));
#298=IFCRELDEFINESBYTYPE('3ZQASsmlr93u0LJyItZGa1',#8,'signaltype link','links the ifcsignaltype to the ifcsignal',(#293),#292);
#299=IFCRELDEFINESBYPROPERTIES('3PLma3sNvBlRKt3QaoQ0MP',#8,$,$,(#293),#195);
#300=IFCRELDEFINESBYPROPERTIES('0A8Xk1V7rBx8wefQKqaM5o',#8,$,$,(#293),#198);
#301=IFCRELDEFINESBYPROPERTIES('0RLMeK7mr10QFxC2G8OAu0',#8,$,$,(#293),#202);
#302=IFCRELDEFINESBYPROPERTIES('0NJfpstB18HhDES18NyZ17',#8,$,$,(#293),#205);
#303=IFCRELDEFINESBYPROPERTIES('3IxTp6_8z2zA5DsMKbLSSd',#8,$,$,(#293),#208);
#304=IFCRELDEFINESBYPROPERTIES('1KWywuqqTC6vlcvdhmraQG',#8,$,$,(#293),#215);
#305=IFCRELDEFINESBYPROPERTIES('2nAK_2wMjA59KsQb3IRG4i',#8,$,$,(#293),#217);
#306=IFCRELDEFINESBYPROPERTIES('2$sU_je75D5RrkynrgU9aW',#8,$,$,(#293),#222);
#307=IFCRELDEFINESBYPROPERTIES('3Xww1OMCbDGhqTLQ76aP0n',#8,$,$,(#293),#244);
#308=IFCRELDEFINESBYPROPERTIES('1umDZ2Unr6IuYBBXsFr5DA',#8,$,$,(#293),#253);
#309=IFCRELDEFINESBYPROPERTIES('1d2RGN8wnEHgjUOcs37H8V',#8,$,$,(#293),#275);
#310=IFCRELDEFINESBYPROPERTIES('0aca9A$p1CLflzqyvD5bU7',#8,$,$,(#293),#279);
#311=IFCRELDEFINESBYPROPERTIES('1zves1rQb3FR23ponGS0x6',#8,$,$,(#293),#283);
#312=IFCRELDEFINESBYPROPERTIES('2ZJsJHBlDANh_KA4FUZOLR',#8,$,$,(#293),#285);
#313=IFCRELDEFINESBYPROPERTIES('2gQ8EGXeXD3v_uIonCXj24',#8,$,$,(#293),#287);
#314=IFCRELCONTAINEDINSPATIALSTRUCTURE('1PF6oRk$94yAzFBYscQTvI',#8,$,$,(#293),#288);
#315=IFCRELAGGREGATES('1VltZ4zyzBnf_QUP4l$_Lm',#8,$,$,#15,(#115,#288));
#316=IFCUNITASSIGNMENT((#6,#41,#48,#54,#59,#67,#214,#221,#227,#240));
ENDSEC;
END-ISO-10303-21;

@michelangelo-acca
Copy link
Collaborator

test_geo_2
test_geo_2_b

We still get the model near Vienna, we have double checked the EPSG and this seems correct...can you double check?

The first screen is for the first signal, the second one is for the position of the second signal.

The file is better but still contains errors (IfcDirections, non existing IfcProperties,...) you can use the bSI Validation Service to have it checked...

...in the meantime, let's wait for the experts of this topic if they have something to say!

@matgitbac
Copy link
Author

matgitbac commented Jul 12, 2024

Hi @michelangelo-acca,
thanks again. I think I finally managed to operate the digital twin viewer correctly :)
The results show now that the sites seem properly georefrenced in "BIM-Layer" but the structures are positioned in Rome. :)

Sites
Structures

The question is: Why are the IfcSites properly georeferenced east of Vienna, but the IfcSignal relative displaced (0,0,0) to the site is in Rome?

ISO-10303-21; HEADER; FILE_DESCRIPTION (('redacted'), '2;1'); FILE_NAME ('redacted', '2024-07-12T14:40:28', ('redacted'), ('redacted','',''), 'redacted', 'redacted', 'redacted'); FILE_SCHEMA (('IFC4X3_ADD2')); ENDSEC; DATA; #1=IFCOWNERHISTORY(#4,#5,.READWRITE.,.ADDED.,1720795228,#4,#5,1720795228); #2=IFCPERSON($,'redacted','',$,$,$,(#7),(#6)); #3=IFCORGANIZATION($,'redacted',$,(#7),(#6)); #4=IFCPERSONANDORGANIZATION(#2,#3,(#7)); #5=IFCAPPLICATION(#3,'0.2.3.0','redacted','redacted'); #6=IFCPOSTALADDRESS(.OFFICE.,'redacted','redacted','redacted',$,'redacted','redacted','redacted','redacted','redacted'); #7=IFCACTORROLE(.ARCHITECT.,'Developer','Developer'); #8=IFCPROJECT('1BaL05mqDDBx5uyVEPkV65',#1,'redacted',$,$,'redacted',$,$,#90); #9=IFCGEOMETRICREPRESENTATIONCONTEXT('mainGeometricRepresentationContext_ident','Model',3,0.,#10,$); #10=IFCAXIS2PLACEMENT3D(#11,$,$); #11=IFCCARTESIANPOINT((0.,0.,0.)); #12=IFCPROJECTEDCRS('EPSG:31256','Gauss-Kruger East False Northing -5000 False Easting 750','EPSG:31256 Greenwich','None','Gauss-Krueger','M34',$); #13=IFCMAPCONVERSION(#9,#12,0.,0.,0.,$,$,1.); #14=IFCSITE('1GpU6BxyL2bQ3OWs45GFh2',#1,'Site0','redacted','Model',#15,$,'Site0',.ELEMENT.,$,$,$,$,#6); #15=IFCLOCALPLACEMENT($,#16); #16=IFCAXIS2PLACEMENT3D(#17,$,$); #17=IFCCARTESIANPOINT((11124.5638,343909.436,0.)); #18=IFCSIGNALTYPE('2o5YGjj7P5u9TJAPZGOlJA',#1,'signal type','Defines the type of a signal',$,$,$,$,'signal',.VISUAL.); #19=IFCSIGNAL('33u6QapK1AkQMaiaR3k3He',#1,'signal','redacted','signal',#20,#23,'0 generated signal',$); #20=IFCLOCALPLACEMENT(#15,#21); #21=IFCAXIS2PLACEMENT3D(#22,$,$); #22=IFCCARTESIANPOINT((0.,0.,0.)); #23=IFCPRODUCTDEFINITIONSHAPE('name','desc',(#24)); #24=IFCSHAPEREPRESENTATION(#25,'ident','type',(#26)); #25=IFCGEOMETRICREPRESENTATIONSUBCONTEXT('ident','Model',*,*,*,*,#9,1.,.USERDEFINED.,'UserDefinedTargetView'); #26=IFCFACETEDBREP(#27); #27=IFCCLOSEDSHELL((#28,#35,#42,#49,#56,#63)); #28=IFCFACE((#29)); #29=IFCFACEOUTERBOUND(#30,.T.); #30=IFCPOLYLOOP((#31,#32,#33,#34)); #31=IFCCARTESIANPOINT((0.,0.,0.)); #32=IFCCARTESIANPOINT((1000.,0.,0.)); #33=IFCCARTESIANPOINT((1000.,0.,2000.)); #34=IFCCARTESIANPOINT((0.,0.,2000.)); #35=IFCFACE((#36)); #36=IFCFACEOUTERBOUND(#37,.T.); #37=IFCPOLYLOOP((#38,#39,#40,#41)); #38=IFCCARTESIANPOINT((1000.,0.,2000.)); #39=IFCCARTESIANPOINT((1000.,0.,0.)); #40=IFCCARTESIANPOINT((1000.,1000.,0.)); #41=IFCCARTESIANPOINT((1000.,1000.,2000.)); #42=IFCFACE((#43)); #43=IFCFACEOUTERBOUND(#44,.T.); #44=IFCPOLYLOOP((#45,#46,#47,#48)); #45=IFCCARTESIANPOINT((1000.,1000.,2000.)); #46=IFCCARTESIANPOINT((1000.,1000.,0.)); #47=IFCCARTESIANPOINT((0.,1000.,0.)); #48=IFCCARTESIANPOINT((0.,1000.,2000.)); #49=IFCFACE((#50)); #50=IFCFACEOUTERBOUND(#51,.T.); #51=IFCPOLYLOOP((#52,#53,#54,#55)); #52=IFCCARTESIANPOINT((0.,1000.,2000.)); #53=IFCCARTESIANPOINT((0.,1000.,0.)); #54=IFCCARTESIANPOINT((0.,0.,0.)); #55=IFCCARTESIANPOINT((0.,0.,2000.)); #56=IFCFACE((#57)); #57=IFCFACEOUTERBOUND(#58,.T.); #58=IFCPOLYLOOP((#59,#60,#61,#62)); #59=IFCCARTESIANPOINT((0.,0.,0.)); #60=IFCCARTESIANPOINT((0.,1000.,0.)); #61=IFCCARTESIANPOINT((1000.,1000.,0.)); #62=IFCCARTESIANPOINT((1000.,0.,0.)); #63=IFCFACE((#64)); #64=IFCFACEOUTERBOUND(#65,.T.); #65=IFCPOLYLOOP((#66,#67,#68,#69)); #66=IFCCARTESIANPOINT((1000.,0.,2000.)); #67=IFCCARTESIANPOINT((1000.,1000.,2000.)); #68=IFCCARTESIANPOINT((0.,1000.,2000.)); #69=IFCCARTESIANPOINT((0.,0.,2000.)); #70=IFCRELDEFINESBYTYPE('1lHgsvjGX4CwEiJwv1iWv6',#1,'signaltype link','links the ifcsignaltype to the ifcsignal',(#19),#18); #71=IFCRELCONTAINEDINSPATIALSTRUCTURE('1wIU018TfECRthfixMFxNo',#1,$,$,(#19),#14); #72=IFCSITE('1xEf6iBYX0GRxxv8wpzUl5',#1,'Site1','The site for the element Signalschild','Model',#73,$,'Site1',.ELEMENT.,$,$,$,$,#6); #73=IFCLOCALPLACEMENT($,#74); #74=IFCAXIS2PLACEMENT3D(#75,$,$); #75=IFCCARTESIANPOINT((12865.1387,344053.811,0.)); #76=IFCSIGNALTYPE('0Oa4RL3zfBUeCqw1Yk_EGe',#1,'signal type','Defines the type of a signal',$,$,$,$,'signal',.VISUAL.); #77=IFCSIGNAL('3tXgHUSx14pAD11dhATTvA',#1,'signal','parsed from file \\ifcapi\\Dispatcher\\inputData\\1_empty_signalschild.xemf','signal',#78,#83,'1 generated signal',$); #78=IFCLOCALPLACEMENT(#73,#79); #79=IFCAXIS2PLACEMENT3D(#80,#81,#82); #80=IFCCARTESIANPOINT((0.,0.,0.)); #81=IFCDIRECTION((0.,0.,1.)); #82=IFCDIRECTION((1.,0.,0.)); #83=IFCPRODUCTDEFINITIONSHAPE('name','desc',(#84)); #84=IFCSHAPEREPRESENTATION(#85,'ident','type',(#26)); #85=IFCGEOMETRICREPRESENTATIONSUBCONTEXT('ident','Model',*,*,*,*,#9,1.,.USERDEFINED.,'UserDefinedTargetView'); #86=IFCRELDEFINESBYTYPE('1cdxkMpfLDye6OW9a4ssuz',#1,'signaltype link','links the ifcsignaltype to the ifcsignal',(#77),#76); #87=IFCRELCONTAINEDINSPATIALSTRUCTURE('3oRrWBcXL3vxh4FATOxj$v',#1,$,$,(#77),#72); #88=IFCSIUNIT(*,.LENGTHUNIT.,$,.METRE.); #89=IFCSIUNIT(*,.TIMEUNIT.,$,.SECOND.); #90=IFCUNITASSIGNMENT((#88,#89)); #91=IFCRELAGGREGATES('2nfvxNfH11gP0n7E4i5oQo',#1,$,$,#8,(#14,#72)); ENDSEC; END-ISO-10303-21;

Thanks :)

@evandroAlfieri
Copy link
Contributor

@matgitbac can you wrap your IFC snippet as code?

Like this

Otherwise the # points to all existing issue in this repository. Thanks

@matgitbac
Copy link
Author

I wrapped it, but it messes up the layout.

@evandroAlfieri
Copy link
Contributor

If you prefer, you can submit a pull request with your file (we have a Files folder). Then, just keep updating that file, or submit others. And then use the GitHub issue for discussion, just pointing at the file. This not only is the recommended workflow, but would also make the issue more readable for yourself and others. I can help if you need assistance

@hadxp
Copy link

hadxp commented Jul 12, 2024

nice on the eyes, wrapped version:

ISO-10303-21;
HEADER;
FILE_DESCRIPTION (('redacted'), '2;1');
FILE_NAME ('redacted', '2024-07-12T14:40:28', ('redacted'), ('redacted','',''), 'redacted', 'redacted', 'redacted');
FILE_SCHEMA (('IFC4X3_ADD2'));
ENDSEC;
DATA;
#1=IFCOWNERHISTORY(#4,#5,.READWRITE.,.ADDED.,1720795228,#4,#5,1720795228);
#2=IFCPERSON($,'redacted','',$,$,$,(#7),(#6));
#3=IFCORGANIZATION($,'redacted',$,(#7),(#6));
#4=IFCPERSONANDORGANIZATION(#2,#3,(#7));
#5=IFCAPPLICATION(#3,'0.2.3.0','redacted','redacted');
#6=IFCPOSTALADDRESS(.OFFICE.,'redacted','redacted','redacted',$,'redacted','redacted','redacted','redacted','redacted');
#7=IFCACTORROLE(.ARCHITECT.,'Developer','Developer');
#8=IFCPROJECT('1BaL05mqDDBx5uyVEPkV65',#1,'redacted',$,$,'redacted',$,$,#90);
#9=IFCGEOMETRICREPRESENTATIONCONTEXT('mainGeometricRepresentationContext_ident','Model',3,0.,#10,$);
#10=IFCAXIS2PLACEMENT3D(#11,$,$);
#11=IFCCARTESIANPOINT((0.,0.,0.));
#12=IFCPROJECTEDCRS('EPSG:31256','Gauss-Kruger East False Northing -5000 False Easting 750','EPSG:31256 Greenwich','None','Gauss-Krueger','M34',$);
#13=IFCMAPCONVERSION(#9,#12,0.,0.,0.,$,$,1.);
#14=IFCSITE('1GpU6BxyL2bQ3OWs45GFh2',#1,'Site0','redacted','Model',#15,$,'Site0',.ELEMENT.,$,$,$,$,#6);
#15=IFCLOCALPLACEMENT($,#16);
#16=IFCAXIS2PLACEMENT3D(#17,$,$);
#17=IFCCARTESIANPOINT((11124.5638,343909.436,0.));
#18=IFCSIGNALTYPE('2o5YGjj7P5u9TJAPZGOlJA',#1,'signal type','Defines the type of a signal',$,$,$,$,'signal',.VISUAL.);
#19=IFCSIGNAL('33u6QapK1AkQMaiaR3k3He',#1,'signal','redacted','signal',#20,#23,'0 generated signal',$);
#20=IFCLOCALPLACEMENT(#15,#21);
#21=IFCAXIS2PLACEMENT3D(#22,$,$);
#22=IFCCARTESIANPOINT((0.,0.,0.));
#23=IFCPRODUCTDEFINITIONSHAPE('name','desc',(#24));
#24=IFCSHAPEREPRESENTATION(#25,'ident','type',(#26));
#25=IFCGEOMETRICREPRESENTATIONSUBCONTEXT('ident','Model',*,*,*,*,#9,1.,.USERDEFINED.,'UserDefinedTargetView');
#26=IFCFACETEDBREP(#27);
#27=IFCCLOSEDSHELL((#28,#35,#42,#49,#56,#63));
#28=IFCFACE((#29));
#29=IFCFACEOUTERBOUND(#30,.T.);
#30=IFCPOLYLOOP((#31,#32,#33,#34));
#31=IFCCARTESIANPOINT((0.,0.,0.));
#32=IFCCARTESIANPOINT((1000.,0.,0.));
#33=IFCCARTESIANPOINT((1000.,0.,2000.));
#34=IFCCARTESIANPOINT((0.,0.,2000.));
#35=IFCFACE((#36));
#36=IFCFACEOUTERBOUND(#37,.T.);
#37=IFCPOLYLOOP((#38,#39,#40,#41));
#38=IFCCARTESIANPOINT((1000.,0.,2000.));
#39=IFCCARTESIANPOINT((1000.,0.,0.));
#40=IFCCARTESIANPOINT((1000.,1000.,0.));
#41=IFCCARTESIANPOINT((1000.,1000.,2000.));
#42=IFCFACE((#43));
#43=IFCFACEOUTERBOUND(#44,.T.);
#44=IFCPOLYLOOP((#45,#46,#47,#48));
#45=IFCCARTESIANPOINT((1000.,1000.,2000.));
#46=IFCCARTESIANPOINT((1000.,1000.,0.));
#47=IFCCARTESIANPOINT((0.,1000.,0.));
#48=IFCCARTESIANPOINT((0.,1000.,2000.));
#49=IFCFACE((#50));
#50=IFCFACEOUTERBOUND(#51,.T.);
#51=IFCPOLYLOOP((#52,#53,#54,#55));
#52=IFCCARTESIANPOINT((0.,1000.,2000.));
#53=IFCCARTESIANPOINT((0.,1000.,0.));
#54=IFCCARTESIANPOINT((0.,0.,0.));
#55=IFCCARTESIANPOINT((0.,0.,2000.));
#56=IFCFACE((#57));
#57=IFCFACEOUTERBOUND(#58,.T.);
#58=IFCPOLYLOOP((#59,#60,#61,#62));
#59=IFCCARTESIANPOINT((0.,0.,0.));
#60=IFCCARTESIANPOINT((0.,1000.,0.));
#61=IFCCARTESIANPOINT((1000.,1000.,0.));
#62=IFCCARTESIANPOINT((1000.,0.,0.));
#63=IFCFACE((#64));
#64=IFCFACEOUTERBOUND(#65,.T.);
#65=IFCPOLYLOOP((#66,#67,#68,#69));
#66=IFCCARTESIANPOINT((1000.,0.,2000.));
#67=IFCCARTESIANPOINT((1000.,1000.,2000.));
#68=IFCCARTESIANPOINT((0.,1000.,2000.));
#69=IFCCARTESIANPOINT((0.,0.,2000.));
#70=IFCRELDEFINESBYTYPE('1lHgsvjGX4CwEiJwv1iWv6',#1,'signaltype link','links the ifcsignaltype to the ifcsignal',(#19),#18);
#71=IFCRELCONTAINEDINSPATIALSTRUCTURE('1wIU018TfECRthfixMFxNo',#1,$,$,(#19),#14);
#72=IFCSITE('1xEf6iBYX0GRxxv8wpzUl5',#1,'Site1','redacted','Model',#73,$,'Site1',.ELEMENT.,$,$,$,$,#6);
#73=IFCLOCALPLACEMENT($,#74);
#74=IFCAXIS2PLACEMENT3D(#75,$,$);
#75=IFCCARTESIANPOINT((12865.1387,344053.811,0.));
#76=IFCSIGNALTYPE('0Oa4RL3zfBUeCqw1Yk_EGe',#1,'signal type','Defines the type of a signal',$,$,$,$,'signal',.VISUAL.);
#77=IFCSIGNAL('3tXgHUSx14pAD11dhATTvA',#1,'signal','redacted','signal',#78,#83,'1 generated signal',$);
#78=IFCLOCALPLACEMENT(#73,#79);
#79=IFCAXIS2PLACEMENT3D(#80,#81,#82);
#80=IFCCARTESIANPOINT((0.,0.,0.));
#81=IFCDIRECTION((0.,0.,1.));
#82=IFCDIRECTION((1.,0.,0.));
#83=IFCPRODUCTDEFINITIONSHAPE('name','desc',(#84));
#84=IFCSHAPEREPRESENTATION(#85,'ident','type',(#26));
#85=IFCGEOMETRICREPRESENTATIONSUBCONTEXT('ident','Model',*,*,*,*,#9,1.,.USERDEFINED.,'UserDefinedTargetView');
#86=IFCRELDEFINESBYTYPE('1cdxkMpfLDye6OW9a4ssuz',#1,'signaltype link','links the ifcsignaltype to the ifcsignal',(#77),#76);
#87=IFCRELCONTAINEDINSPATIALSTRUCTURE('3oRrWBcXL3vxh4FATOxj$v',#1,$,$,(#77),#72);
#88=IFCSIUNIT(*,.LENGTHUNIT.,$,.METRE.);
#89=IFCSIUNIT(*,.TIMEUNIT.,$,.SECOND.);
#90=IFCUNITASSIGNMENT((#88,#89));
#91=IFCRELAGGREGATES('2nfvxNfH11gP0n7E4i5oQo',#1,$,$,#8,(#14,#72));
ENDSEC;
END-ISO-10303-21;

@michelangelo-acca
Copy link
Collaborator

image

Can you check that in the top right area, this is the situation that you have on the Georeferencing Tab? It is the last one...if it is set to Manual, switch to Georeferenced and the Signals should appear near Vienna automatically!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants