20 #include <itksys/SystemTools.hxx> 26 "MITK NavigationDataSet Writer (XML)")
66 stream->precision(10);
72 *stream <<
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>" << std::endl;
75 *stream <<
" " <<
"<Data ToolCount=\"" << data->GetNumberOfTools() <<
"\" version=\"1.0\">" << std::endl;
82 for (
auto it = data->Begin(); it != data->End(); it++)
84 for (std::size_t toolIndex = 0; toolIndex < it->size(); toolIndex++)
86 mitk::NavigationData::Pointer nd = it->at(toolIndex);
87 auto elem =
new TiXmlElement(
"ND");
89 elem->SetDoubleAttribute(
"Time", nd->GetIGTTimeStamp());
91 elem->SetDoubleAttribute(
"Tool", toolIndex);
92 elem->SetDoubleAttribute(
"X", nd->GetPosition()[0]);
93 elem->SetDoubleAttribute(
"Y", nd->GetPosition()[1]);
94 elem->SetDoubleAttribute(
"Z", nd->GetPosition()[2]);
96 elem->SetDoubleAttribute(
"QX", nd->GetOrientation()[0]);
97 elem->SetDoubleAttribute(
"QY", nd->GetOrientation()[1]);
98 elem->SetDoubleAttribute(
"QZ", nd->GetOrientation()[2]);
99 elem->SetDoubleAttribute(
"QR", nd->GetOrientation()[3]);
101 elem->SetDoubleAttribute(
"C00", nd->GetCovErrorMatrix()[0][0]);
102 elem->SetDoubleAttribute(
"C01", nd->GetCovErrorMatrix()[0][1]);
103 elem->SetDoubleAttribute(
"C02", nd->GetCovErrorMatrix()[0][2]);
104 elem->SetDoubleAttribute(
"C03", nd->GetCovErrorMatrix()[0][3]);
105 elem->SetDoubleAttribute(
"C04", nd->GetCovErrorMatrix()[0][4]);
106 elem->SetDoubleAttribute(
"C05", nd->GetCovErrorMatrix()[0][5]);
107 elem->SetDoubleAttribute(
"C10", nd->GetCovErrorMatrix()[1][0]);
108 elem->SetDoubleAttribute(
"C11", nd->GetCovErrorMatrix()[1][1]);
109 elem->SetDoubleAttribute(
"C12", nd->GetCovErrorMatrix()[1][2]);
110 elem->SetDoubleAttribute(
"C13", nd->GetCovErrorMatrix()[1][3]);
111 elem->SetDoubleAttribute(
"C14", nd->GetCovErrorMatrix()[1][4]);
112 elem->SetDoubleAttribute(
"C15", nd->GetCovErrorMatrix()[1][5]);
114 if (nd->IsDataValid())
115 elem->SetAttribute(
"Valid",1);
117 elem->SetAttribute(
"Valid",0);
119 if (nd->GetHasOrientation())
120 elem->SetAttribute(
"hO",1);
122 elem->SetAttribute(
"hO",0);
124 if (nd->GetHasPosition())
125 elem->SetAttribute(
"hP",1);
127 elem->SetAttribute(
"hP",0);
129 *stream <<
" " << *elem << std::endl;
138 *stream <<
"</Data>" << std::endl;
DataCollection - Class to facilitate loading/accessing structured data.
virtual void StreamData(std::ostream *stream, mitk::NavigationDataSet::ConstPointer data)
mitk::NavigationDataSetWriterXML * Clone() const override
Convenience class to temporarily change the current locale.
const BaseData * GetInput() const override
Get the input data set via SetInput().
Data structure which stores streams of mitk::NavigationData for multiple tools.
void Write() override
Write the base data to the specified location or output stream.
std::ostream * GetOutputStream() const override
Get the output stream.
virtual void StreamFooter(std::ostream *stream)
us::ServiceRegistration< IFileWriter > RegisterService(us::ModuleContext *context=us::GetModuleContext())
std::string GetOutputLocation() const override
Get the current output location.
NavigationDataSetWriterXML()
Base class for writing mitk::BaseData objects to files or streams.
virtual void StreamHeader(std::ostream *stream, mitk::NavigationDataSet::ConstPointer data)
~NavigationDataSetWriterXML() override