Skip to content

Commit

Permalink
Complete WITSML trajectory model
Browse files Browse the repository at this point in the history
  • Loading branch information
Jan Burak committed Sep 2, 2022
1 parent 8202f33 commit b3e7a40
Show file tree
Hide file tree
Showing 13 changed files with 7,604 additions and 52 deletions.
7,372 changes: 7,372 additions & 0 deletions Resources/Xsd/enumValues.xml

Large diffs are not rendered by default.

7 changes: 4 additions & 3 deletions Src/Witsml/Data/WitsmlLocation.cs
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
using System.Xml;
using System.Xml.Serialization;

using Witsml.Data.Measures;

namespace Witsml.Data
{
public class WitsmlLocation
{
[XmlAttribute("uid")] public string Uid { get; set; }
[XmlElement("wellCRS")] public string WellCrs { get; set; }
[XmlElement("wellCRS")] public WitsmlObjectReference WellCrs { get; set; }
[XmlElement("latitude")] public Measure Latitude { get; set; }
[XmlElement("longitude")] public Measure Longitude { get; set; }
[XmlElement("easting")] public Measure Easting { get; set; }
Expand All @@ -23,8 +24,8 @@ public class WitsmlLocation
[XmlElement("original")]
public string OriginalText
{
get { return Original.HasValue ? XmlConvert.ToString(Original.Value) : null; }
set { Original = !string.IsNullOrEmpty(value) ? bool.Parse(value) : default(bool?); }
get => Original.HasValue ? XmlConvert.ToString(Original.Value) : null;
set => Original = !string.IsNullOrEmpty(value) ? bool.Parse(value) : default(bool?);
}
[XmlElement("description")] public string Description { get; set; }

Expand Down
13 changes: 13 additions & 0 deletions Src/Witsml/Data/WitsmlRefWellboreTrajectory.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
using System.Xml.Serialization;

namespace Witsml.Data
{
public class WitsmlRefWellboreTrajectory
{
[XmlElement("trajectoryReference")]
public WitsmlObjectReference TrajectoryReference { get; set; }

[XmlElement("wellboreParent")]
public WitsmlObjectReference WellboreParent { get; set; }
}
}
4 changes: 2 additions & 2 deletions Src/Witsml/Data/WitsmlRefWellboreTrajectoryStation.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ namespace Witsml.Data
public class WitsmlRefWellboreTrajectoryStation
{
[XmlElement("stationReference")] public string StationReference { get; set; }
[XmlElement("trajectoryParent")] public string TrajectoryParent { get; set; }
[XmlElement("wellboreParent")] public string WellboreParent { get; set; }
[XmlElement("trajectoryParent")] public WitsmlObjectReference TrajectoryParent { get; set; }
[XmlElement("wellboreParent")] public WitsmlObjectReference WellboreParent { get; set; }
}
}
6 changes: 3 additions & 3 deletions Src/Witsml/Data/WitsmlTrajectory.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,11 @@ public override WitsmlTrajectories AsSingletonWitsmlList()
[XmlElement("objectGrowing")]
public string ObjectGrowingText
{
get { return ObjectGrowing.HasValue ? XmlConvert.ToString(ObjectGrowing.Value) : null; }
set { ObjectGrowing = !string.IsNullOrEmpty(value) ? bool.Parse(value) : default(bool?); }
get => ObjectGrowing.HasValue ? XmlConvert.ToString(ObjectGrowing.Value) : null;
set => ObjectGrowing = !string.IsNullOrEmpty(value) ? bool.Parse(value) : default(bool?);
}

[XmlElement("parentTrajectory")] public WitsmlWellboreTrajectory ParentTrajectory { get; set; }
[XmlElement("parentTrajectory")] public WitsmlRefWellboreTrajectory ParentTrajectory { get; set; }
[XmlElement("dTimTrajStart")] public string DTimTrajStart { get; set; }
[XmlElement("dTimTrajEnd")] public string DTimTrajEnd { get; set; }
[XmlElement("mdMn")] public WitsmlMeasuredDepthCoord MdMin { get; set; }
Expand Down
40 changes: 21 additions & 19 deletions Src/Witsml/Data/WitsmlTrajectoryStation.cs
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
using System.Collections.Generic;
using System.Xml;
using System.Xml.Serialization;

using Witsml.Data.Measures;

namespace Witsml.Data
{
public class WitsmlTrajectoryStation
{
[XmlElement("target")] public WitsmlObjectReference Target { get; set; }
[XmlAttribute("uid")] public string Uid { get; set; }
[XmlElement("dTimStn")] public string DTimStn { get; set; }
[XmlElement("typeTrajStation")] public string TypeTrajStation { get; set; }
Expand All @@ -27,7 +29,7 @@ public class WitsmlTrajectoryStation
[XmlElement("mdDelta")] public WitsmlLengthMeasure MdDelta { get; set; }
[XmlElement("tvdDelta")] public WitsmlLengthMeasure TvdDelta { get; set; }
[XmlElement("modelToolError")] public string ModelToolError { get; set; }
[XmlElement("iscwsaToolErrorModel")] public string IscwsaToolErrorModel { get; set; }
[XmlElement("iscwsaToolErrorModel")] public WitsmlObjectReference IscwsaToolErrorModel { get; set; }
[XmlElement("gravTotalUncert")] public Measure GravTotalUncert { get; set; }
[XmlElement("dipAngleUncert")] public Measure DipAngleUncert { get; set; }
[XmlElement("magTotalUncert")] public Measure MagTotalUncert { get; set; }
Expand All @@ -38,53 +40,53 @@ public class WitsmlTrajectoryStation
[XmlElement("magXAxialCorUsed")]
public string MagXAxialCorUsedText
{
get { return MagXAxialCorUsed.HasValue ? XmlConvert.ToString(MagXAxialCorUsed.Value) : null; }
set { MagXAxialCorUsed = !string.IsNullOrEmpty(value) ? bool.Parse(value) : default(bool?); }
get => MagXAxialCorUsed.HasValue ? XmlConvert.ToString(MagXAxialCorUsed.Value) : null;
set => MagXAxialCorUsed = !string.IsNullOrEmpty(value) ? bool.Parse(value) : default(bool?);
}

[XmlIgnore]
public bool? SagCorUsed { get; set; }
[XmlElement("sagCorUsed")]
public string SagCorUsedText
{
get { return (SagCorUsed.HasValue) ? XmlConvert.ToString(SagCorUsed.Value) : null; }
set { SagCorUsed = !string.IsNullOrEmpty(value) ? bool.Parse(value) : default(bool?); }
get => SagCorUsed.HasValue ? XmlConvert.ToString(SagCorUsed.Value) : null;
set => SagCorUsed = !string.IsNullOrEmpty(value) ? bool.Parse(value) : default(bool?);
}

[XmlIgnore]
public bool? MagDrlstrCorUsed { get; set; }
[XmlElement("magDrlstrCorUsed")]
public string MagDrlstrCorUsedText
{
get { return (MagDrlstrCorUsed.HasValue) ? XmlConvert.ToString(MagDrlstrCorUsed.Value) : null; }
set { MagDrlstrCorUsed = !string.IsNullOrEmpty(value) ? bool.Parse(value) : default(bool?); }
get => MagDrlstrCorUsed.HasValue ? XmlConvert.ToString(MagDrlstrCorUsed.Value) : null;
set => MagDrlstrCorUsed = !string.IsNullOrEmpty(value) ? bool.Parse(value) : default(bool?);
}

[XmlIgnore]
public bool? InfieldRefCorUsed { get; set; }
[XmlElement("infieldRefCorUsed")]
public string InfieldRefCorUsedText
{
get { return (InfieldRefCorUsed.HasValue) ? XmlConvert.ToString(InfieldRefCorUsed.Value) : null; }
set { InfieldRefCorUsed = !string.IsNullOrEmpty(value) ? bool.Parse(value) : default(bool?); }
get => InfieldRefCorUsed.HasValue ? XmlConvert.ToString(InfieldRefCorUsed.Value) : null;
set => InfieldRefCorUsed = !string.IsNullOrEmpty(value) ? bool.Parse(value) : default(bool?);
}

[XmlIgnore]
public bool? InterpolatedInfieldRefCorUsed { get; set; }
[XmlElement("interpolatedInfieldRefCorUsed")]
public string InterpolatedInfieldRefCorUsedText
{
get { return (InterpolatedInfieldRefCorUsed.HasValue) ? XmlConvert.ToString(InterpolatedInfieldRefCorUsed.Value) : null; }
set { InterpolatedInfieldRefCorUsed = !string.IsNullOrEmpty(value) ? bool.Parse(value) : default(bool?); }
get => InterpolatedInfieldRefCorUsed.HasValue ? XmlConvert.ToString(InterpolatedInfieldRefCorUsed.Value) : null;
set => InterpolatedInfieldRefCorUsed = !string.IsNullOrEmpty(value) ? bool.Parse(value) : default(bool?);
}

[XmlIgnore]
public bool? InHoleRefCorUsed { get; set; }
[XmlElement("inHoleRefCorUsed")]
public string InHoleRefCorUsedText
{
get { return (InHoleRefCorUsed.HasValue) ? XmlConvert.ToString(InHoleRefCorUsed.Value) : null; }
set { InHoleRefCorUsed = !string.IsNullOrEmpty(value) ? bool.Parse(value) : default(bool?); }
get => InHoleRefCorUsed.HasValue ? XmlConvert.ToString(InHoleRefCorUsed.Value) : null;
set => InHoleRefCorUsed = !string.IsNullOrEmpty(value) ? bool.Parse(value) : default(bool?);
}

[XmlIgnore]
Expand All @@ -93,26 +95,26 @@ public string InHoleRefCorUsedText
[XmlElement("axialMagInterferenceCorUsed")]
public string AxialMagInterferenceCorUsedText
{
get { return (AxialMagInterferenceCorUsed.HasValue) ? XmlConvert.ToString(AxialMagInterferenceCorUsed.Value) : null; }
set { AxialMagInterferenceCorUsed = !string.IsNullOrEmpty(value) ? bool.Parse(value) : default(bool?); }
get => AxialMagInterferenceCorUsed.HasValue ? XmlConvert.ToString(AxialMagInterferenceCorUsed.Value) : null;
set => AxialMagInterferenceCorUsed = !string.IsNullOrEmpty(value) ? bool.Parse(value) : default(bool?);
}

[XmlIgnore]
public bool? CosagCorUsed { get; set; }
[XmlElement("cosagCorUsed")]
public string CosagCorUsedText
{
get { return (CosagCorUsed.HasValue) ? XmlConvert.ToString(CosagCorUsed.Value) : null; }
set { CosagCorUsed = !string.IsNullOrEmpty(value) ? bool.Parse(value) : default(bool?); }
get => CosagCorUsed.HasValue ? XmlConvert.ToString(CosagCorUsed.Value) : null;
set => CosagCorUsed = !string.IsNullOrEmpty(value) ? bool.Parse(value) : default(bool?);
}

[XmlIgnore]
public bool? MsaCorUsed { get; set; }
[XmlElement("MSACorUsed")]
public string MsaCorUsedText
{
get { return (MsaCorUsed.HasValue) ? XmlConvert.ToString(MsaCorUsed.Value) : null; }
set { MsaCorUsed = !string.IsNullOrEmpty(value) ? bool.Parse(value) : default(bool?); }
get => MsaCorUsed.HasValue ? XmlConvert.ToString(MsaCorUsed.Value) : null;
set => MsaCorUsed = !string.IsNullOrEmpty(value) ? bool.Parse(value) : default(bool?);
}

[XmlElement("gravTotalFieldReference")] public Measure GravTotalFieldReference { get; set; }
Expand Down
13 changes: 0 additions & 13 deletions Src/Witsml/Data/WitsmlWellboreTrajectory.cs

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -115,11 +115,7 @@ private static WitsmlTrajectories GetSourceTrajectories()
NameWellbore = "",
Name = "",
ObjectGrowing = null,
ParentTrajectory = new WitsmlWellboreTrajectory
{
TrajectoryReference = "",
WellboreParent = ""
},
ParentTrajectory = null,
DTimTrajStart = "",
DTimTrajEnd = "",
MdMin = new WitsmlMeasuredDepthCoord(),
Expand Down
133 changes: 133 additions & 0 deletions Tests/WitsmlExplorer.IntegrationTests/Resources/trajectory.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,133 @@
<trajectorys version="1.4.1.1" xmlns="http://www.witsml.org/schemas/1series">
<trajectory uidWell="8c77de13-4fad-4b2e-ba3d-7e6b0e35a394" uidWellbore="44e7a064-c2f2-4a3a-9259-5ab92085e110" uid="integration_test">
<nameWell>0/1-2-3 SAS</nameWell>
<nameWellbore>jan_test</nameWellbore>
<name>integration_test</name>
<objectGrowing>false</objectGrowing>
<parentTrajectory>
<trajectoryReference uidRef="1">bob</trajectoryReference>
<wellboreParent uidRef="2">bob 2</wellboreParent>
</parentTrajectory>
<dTimTrajStart>2001-10-31T08:15:00.000Z</dTimTrajStart>
<dTimTrajEnd>2001-11-03T16:30:00.000Z</dTimTrajEnd>
<mdMn uom="ft">0</mdMn>
<mdMx uom="ft">0</mdMx>
<serviceCompany>Anadrill</serviceCompany>
<magDeclUsed uom="dega">-4.038</magDeclUsed>
<gridCorUsed uom="dega">0.99961</gridCorUsed>
<gridConUsed uom="dega">0.9</gridConUsed>
<aziVertSect uom="dega">82.7</aziVertSect>
<dispNsVertSectOrig uom="ft">0</dispNsVertSectOrig>
<dispEwVertSectOrig uom="ft">0</dispEwVertSectOrig>
<definitive>true</definitive>
<memory>true</memory>
<finalTraj>true</finalTraj>
<aziRef>grid north</aziRef>
<trajectoryStation uid="34ht5">
<target uidRef="3">helo</target>
<dTimStn>2001-10-21T08:15:00.000Z</dTimStn>
<typeTrajStation>tie in point</typeTrajStation>
<typeSurveyTool>magnetic MWD</typeSurveyTool>
<calcAlgorithm>constant tool face</calcAlgorithm>
<md uom="ft">0</md>
<tvd uom="ft">0</tvd>
<incl uom="dega">0</incl>
<azi uom="dega">47.3</azi>
<mtf uom="dega">47.3</mtf>
<gtf uom="dega">0</gtf>
<dispNs uom="ft">0</dispNs>
<dispEw uom="ft">0</dispEw>
<vertSect uom="ft">0</vertSect>
<dls uom="dega/ft">0</dls>
<rateTurn uom="dega/ft">0</rateTurn>
<rateBuild uom="dega/ft">0</rateBuild>
<mdDelta uom="ft">0</mdDelta>
<tvdDelta uom="ft">0</tvdDelta>
<modelToolError>good gyro</modelToolError>
<iscwsaToolErrorModel uidRef="4">hello</iscwsaToolErrorModel>
<gravTotalUncert uom="m/s2">0</gravTotalUncert>
<dipAngleUncert uom="dega">0</dipAngleUncert>
<magTotalUncert uom="nT">0</magTotalUncert>
<gravAccelCorUsed>false</gravAccelCorUsed>
<magXAxialCorUsed>false</magXAxialCorUsed>
<sagCorUsed>false</sagCorUsed>
<magDrlstrCorUsed>false</magDrlstrCorUsed>
<infieldRefCorUsed>true</infieldRefCorUsed>
<interpolatedInfieldRefCorUsed>true</interpolatedInfieldRefCorUsed>
<inHoleRefCorUsed>false</inHoleRefCorUsed>
<axialMagInterferenceCorUsed>false</axialMagInterferenceCorUsed>
<cosagCorUsed>true</cosagCorUsed>
<MSACorUsed>true</MSACorUsed>
<gravTotalFieldReference uom="m/s2">6.6</gravTotalFieldReference>
<magTotalFieldReference uom="T">5.5</magTotalFieldReference>
<magDipAngleReference uom="dega">0.9</magDipAngleReference>
<magModelUsed>one</magModelUsed>
<magModelValid>two</magModelValid>
<geoModelUsed>three</geoModelUsed>
<statusTrajStation>position</statusTrajStation>
<rawData>
<gravAxialRaw uom="ft/s2">0.116</gravAxialRaw>
<gravTran1Raw uom="ft/s2">-0.168</gravTran1Raw>
<gravTran2Raw uom="ft/s2">-1654</gravTran2Raw>
<magAxialRaw uom="nT">22.77</magAxialRaw>
<magTran1Raw uom="nT">22.5</magTran1Raw>
<magTran2Raw uom="nT">27.05</magTran2Raw>
</rawData>
<corUsed>
<gravAxialAccelCor uom="ft/s2">0.11</gravAxialAccelCor>
<gravTran1AccelCor uom="ft/s2">0.14</gravTran1AccelCor>
<gravTran2AccelCor uom="ft/s2">0.13</gravTran2AccelCor>
<magAxialDrlstrCor uom="nT">0.17</magAxialDrlstrCor>
<magTran1DrlstrCor uom="nT">0.16</magTran1DrlstrCor>
<magTran2DrlstrCor uom="nT">0.24</magTran2DrlstrCor>
<magTran1MSACor uom="nT">7.7</magTran1MSACor>
<magTran2MSACor uom="nT">8.8</magTran2MSACor>
<magAxialMSACor uom="nT">9.9</magAxialMSACor>
<sagIncCor uom="dega">0</sagIncCor>
<sagAziCor uom="dega">0</sagAziCor>
<stnMagDeclUsed uom="dega">-4.038</stnMagDeclUsed>
<stnGridCorUsed uom="dega">-0.4917</stnGridCorUsed>
<stnGridConUsed uom="dega">11.11</stnGridConUsed>
<dirSensorOffset uom="ft">48.3</dirSensorOffset>
</corUsed>
<valid>
<magTotalFieldCalc uom="nT">51.19</magTotalFieldCalc>
<magDipAngleCalc uom="dega">41.5</magDipAngleCalc>
<gravTotalFieldCalc uom="ft/s2">0.999</gravTotalFieldCalc>
</valid>
<matrixCov>
<varianceNN uom="ft2">0.005236</varianceNN>
<varianceNE uom="ft2">0.005236</varianceNE>
<varianceNVert uom="ft2">2.356194</varianceNVert>
<varianceEE uom="ft2">0.005236</varianceEE>
<varianceEVert uom="ft2">0.005236</varianceEVert>
<varianceVertVert uom="ft2">0.785398</varianceVertVert>
<biasN uom="ft">0</biasN>
<biasE uom="ft">0</biasE>
<biasVert uom="ft">0</biasVert>
</matrixCov>
<location uid="loc-1">
<wellCRS uidRef="geog1">ED50</wellCRS>
<latitude uom="dega">59.7553</latitude>
<longitude uom="dega">1.71347417</longitude>
</location>
<location uid="loc-2">
<wellCRS uidRef="proj1">ED50 / UTM Zone 31N</wellCRS>
<easting uom="m">427710.69</easting>
<northing uom="m">6625015.54</northing>
</location>
<sourceStation>
<stationReference>hello2</stationReference>
<trajectoryParent uidRef="15">gob</trajectoryParent>
<wellboreParent uidRef="27">gob 2</wellboreParent>
</sourceStation>
<commonData>
<sourceName>hello</sourceName>
</commonData>
</trajectoryStation>
<commonData>
<itemState>plan</itemState>
<comments>These are the comments associated with the trajectory data object.</comments>
</commonData>
</trajectory>
</trajectorys>
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
using System;
using System.IO;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
Expand Down Expand Up @@ -37,8 +36,8 @@ public async Task GetBhaRunSerializesCorrectly()
WitsmlBhaRuns serverBhaRun = await _client.GetFromStoreAsync(queryExisting, new OptionsIn(ReturnElements.All));
string serverBhaRunXml = XmlHelper.Serialize(serverBhaRun);
//disregard commonData times as they are handled by the Witsml Server
serverBhaRunXml = Regex.Replace(serverBhaRunXml, "<dTimCreation>.+<\\/dTimCreation>", "");
serverBhaRunXml = Regex.Replace(serverBhaRunXml, "<dTimLastChange>.+<\\/dTimLastChange>", "");
serverBhaRunXml = Regex.Replace(serverBhaRunXml, "<dTimCreation>.+?<\\/dTimCreation>", "");
serverBhaRunXml = Regex.Replace(serverBhaRunXml, "<dTimLastChange>.+?<\\/dTimLastChange>", "");

string fileBhaRunXml = File.ReadAllText(Path.Combine(Directory.GetCurrentDirectory(), "../../../Resources/bhaRun.xml"));
//handle whitespace
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,8 @@ public async Task GetRigSerializesCorrectly()
WitsmlRigs serverRig = await _client.GetFromStoreAsync(queryExisting, new OptionsIn(ReturnElements.All));
string serverRigXml = XmlHelper.Serialize(serverRig);
//disregard commonData times as they are handled by the Witsml Server
serverRigXml = Regex.Replace(serverRigXml, "<dTimCreation>.+<\\/dTimCreation>", "");
serverRigXml = Regex.Replace(serverRigXml, "<dTimLastChange>.+<\\/dTimLastChange>", "");
serverRigXml = Regex.Replace(serverRigXml, "<dTimCreation>.+?<\\/dTimCreation>", "");
serverRigXml = Regex.Replace(serverRigXml, "<dTimLastChange>.+?<\\/dTimLastChange>", "");

string fileRigXml = File.ReadAllText(Path.Combine(Directory.GetCurrentDirectory(), "../../../Resources/rig.xml"));
//handle whitespace
Expand Down
Loading

0 comments on commit b3e7a40

Please sign in to comment.