Issue accessing Wellbore Trajectory Representation in RESQML 2.0.1 file

We have a RESQML 2.0.1 file exported by other vendor software containing Wellbore Trajectories.
Resqml Validator table view screenshot attached.
Using fesapi 1.2.3.0 APIs we are not able to get WellboreTrajectoryRepresentation object.

DataObjectRepository::getWellboreTrajectoryRepresentationSet() call is returning vector of size 0.

Could you please comment on this ? Isn’t this method supposed to return WellboreTrajectoryRepresentation present in the RESQML file ?

Thanks,
Shakir

HI @shakirhusain

It looks strange and potentially as a bug.
If you can share the EPC+H5 (with dummy data if needed), it would help debugging.

Some questions which could lead to a better diagnosis :

  • Do you have some warnings at deserialization time? Meaning if EpcDocument:deserializeInto method returns an empty string or not?

  • Can you get the WellboreFeature using DataObjectRepository::getWellboreSet() method?

  • If yes, could you try the following code (C++ but it would be similar in other languages) please

      vector<WellboreTrajectoryRepresentation *> result;
      const std::vector<RESQML2_0_1_NS::WellboreFeature*> wellboreSet = getWellboreSet();
    
      for (size_t featureIndex = 0; featureIndex < wellboreSet.size(); ++featureIndex) {
      	const std::vector<RESQML2_NS::AbstractFeatureInterpretation *> interpSet = wellboreSet[featureIndex]->getInterpretationSet();
      	for (size_t interpIndex = 0; interpIndex < interpSet.size(); ++interpIndex) {
      		const std::vector<RESQML2_NS::AbstractRepresentation *> repSet = interpSet[interpIndex]->getRepresentationSet();
      		for (size_t repIndex = 0; repIndex < repSet.size(); ++repIndex) {
      			if (repSet[repIndex]->getGsoapType() == SOAP_TYPE_gsoap_resqml2_0_1_resqml20__obj_USCOREWellboreTrajectoryRepresentation) { // use intanceof in java instead of gsoaptype.
      				result.push_back(static_cast<WellboreTrajectoryRepresentation *>(repSet[repIndex]));
      			}
      		}
      	}
      }
    
      return result;
    

This code shows how DataObjectRepository::getWellboreTrajectoryRepresentationSet() works in 1.2.3.0. Then we could better understand what and where the problem is.

Thanks for your response Philippe,

At this point we have only files from clients, which I am hesitant to share.
Once we start producing our own files, I will generate some with synthetic data and share with you.

Thanks,
Shakir

Ok Shakir, I understand about sharing the file.

FYI, I just ran my Java example test again fesapi/FesapiJavaExample.java at v1.2.3.0 · F2I-Consulting/fesapi · GitHub (which goes in fesapi-1.2.3.0\java\example\FesapiJavaExample.java at FESAPI build time) and could successfully got the two wellbore trajectories using DataObjectRepository::getWellboreTrajectoryRepresentationSet() at line 606
Still fyi, in this example, the wb trajectories are written starting line 138 especially line 147.

It might help you to tweak this example to reproduce the bug. Or to try to run line 606 on your problematic epc.