Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F483
PointSetWriterAndReader.patch
Public
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Authored By
•
vongruen
Mar 22 2010, 10:27 AM
2010-03-22 10:27:24 (UTC+1)
Size
7 KB
Referenced Files
None
Subscribers
None
PointSetWriterAndReader.patch
View Options
Index: mitkPointSetReader.cpp
===================================================================
--- mitkPointSetReader.cpp (revision 21795)
+++ mitkPointSetReader.cpp (working copy)
@@ -17,10 +17,11 @@
#include "mitkPointSetReader.h"
-#include "vtkPointSetXMLParser.h"
-#include "vtkSmartPointer.h"
+//#include "vtkPointSetXMLParser.h"
+//#include "vtkSmartPointer.h"
#include <iostream>
#include <fstream>
+#include <tinyxml.h>
mitk::PointSetReader::PointSetReader()
{
@@ -46,27 +47,71 @@
return ;
}
- vtkSmartPointer< vtkPointSetXMLParser > parser = vtkPointSetXMLParser::New();
- parser->SetFileName( m_FileName.c_str() );
+ TiXmlDocument doc(m_FileName.c_str());
+ bool loadOkay = doc.LoadFile();
+ if (loadOkay)
+ {
+ mitk::PointSet::Pointer newPointSet = mitk::PointSet::New();
+
+ TiXmlHandle docHandle( &doc );
- if ( parser->Parse() == 0 ) //Parse returns zero as error indicator
- {
- itkWarningMacro( << "Sorry, an error occurred during parsing!" );
- return ;
- }
- mitk::vtkPointSetXMLParser::PointSetList pointSetList = parser->GetParsedPointSets();
- this->ResizeOutputs( pointSetList.size() );
+ unsigned int pointSetCounter(0);
+ for( TiXmlElement* currentPointSetElement = docHandle.FirstChildElement("point_set_file").FirstChildElement( "point_set" ).ToElement();
+ currentPointSetElement != NULL; currentPointSetElement = currentPointSetElement->NextSiblingElement())
+ {
+ mitk::PointSet::Pointer newPointSet = mitk::PointSet::New();
- unsigned int i = 0;
- for ( mitk::vtkPointSetXMLParser::PointSetList::iterator it = pointSetList.begin(); it != pointSetList.end(); ++it, ++i )
- {
- this->SetNthOutput( i, *it );
- }
+ for( TiXmlElement* currentTimeSeries = currentPointSetElement->FirstChildElement("time_series")->ToElement();
+ currentTimeSeries != NULL; currentTimeSeries = currentTimeSeries->NextSiblingElement())
+ {
+ unsigned int currentTimeStep(0);
+ TiXmlElement* currentTimeSeriesID = currentTimeSeries->FirstChildElement("time_series_id");
+ currentTimeStep = atoi(currentTimeSeriesID->GetText());
+
+ for( TiXmlElement* currentPoint = currentTimeSeries->FirstChildElement("point")->ToElement();
+ currentPoint != NULL; currentPoint = currentPoint->NextSiblingElement())
+ {
+ unsigned int id(0);
+ mitk::PointSpecificationType spec;
+ int x(0);
+ int y(0);
+ int z(0);
+ id = atoi(currentPoint->FirstChildElement("id")->GetText());
+ spec = (mitk::PointSpecificationType) atoi(currentPoint->FirstChildElement("specification")->GetText());
+ x = atoi(currentPoint->FirstChildElement("x")->GetText());
+ y = atoi(currentPoint->FirstChildElement("y")->GetText());
+ z = atoi(currentPoint->FirstChildElement("z")->GetText());
+
+ mitk::Point3D point;
+ mitk::FillVector3D(point, x, y, z);
+
+ newPointSet->SetPoint(id, point, spec, currentTimeStep);
+ MITK_INFO << "PointSet " << id << " " << x << " " << y << " " << currentTimeStep;
+ }
+ }
+
+ this->SetNthOutput( pointSetCounter, newPointSet );
+ pointSetCounter++;
+ }
+
+ }
+ else
+ {
+ MITK_WARN << "Cannot load XML file!";
+ }
+
+ //this->ResizeOutputs( pointSetList.size() );
+
+ //unsigned int i = 0;
+ //for ( mitk::vtkPointSetXMLParser::PointSetList::iterator it = pointSetList.begin(); it != pointSetList.end(); ++it, ++i )
+ //{
+ // this->SetNthOutput( i, *it );
+ //}
+
m_Success = true;
}
-
void mitk::PointSetReader::GenerateOutputInformation()
{
}
Index: mitkPointSetWriter.cpp
===================================================================
--- mitkPointSetWriter.cpp (revision 21795)
+++ mitkPointSetWriter.cpp (working copy)
@@ -32,10 +32,16 @@
const char* mitk::PointSetWriter::XML_POINT_SET = "point_set" ;
+const char* mitk::PointSetWriter::XML_TIME_SERIES = "time_series";
+
+const char* mitk::PointSetWriter::XML_TIME_SERIES_ID = "time_series_id";
+
const char* mitk::PointSetWriter::XML_POINT = "point" ;
const char* mitk::PointSetWriter::XML_ID = "id" ;
+const char* mitk::PointSetWriter::XML_SPEC = "specification" ;
+
const char* mitk::PointSetWriter::XML_X = "x" ;
const char* mitk::PointSetWriter::XML_Y = "y" ;
@@ -134,30 +140,46 @@
WriteStartElement( XML_POINT_SET, out );
mitk::PointSet::PointsContainer* pointsContainer = pointSet->GetPointSet()->GetPoints();
mitk::PointSet::PointsContainer::Iterator it;
- for ( it = pointsContainer->Begin(); it != pointsContainer->End(); ++it )
+
+ for(unsigned int i=0; i< pointSet->GetTimeSteps(); i++)
{
- WriteStartElement( XML_POINT, out );
+ WriteStartElement( XML_TIME_SERIES, out );
+
+ WriteStartElement( XML_TIME_SERIES_ID, out );
+ WriteCharacterData( ConvertToString( i ).c_str() , out );
+ WriteEndElement( XML_TIME_SERIES_ID, out, false );
- WriteStartElement( XML_ID, out );
- WriteCharacterData( ConvertToString( it->Index() ).c_str() , out );
- WriteEndElement( XML_ID, out, false );
+ for ( it = pointsContainer->Begin(); it != pointsContainer->End(); ++it )
+ {
+ WriteStartElement( XML_POINT, out );
- mitk::PointSet::PointType point = it->Value();
+ WriteStartElement( XML_ID, out );
+ WriteCharacterData( ConvertToString( it->Index() ).c_str() , out );
+ WriteEndElement( XML_ID, out, false );
- WriteStartElement( XML_X, out );
- WriteCharacterData( ConvertToString( point[ 0 ] ).c_str(), out );
- WriteEndElement( XML_X, out, false );
+ mitk::PointSet::PointType point = it->Value();
- WriteStartElement( XML_Y, out );
- WriteCharacterData( ConvertToString( point[ 1 ] ).c_str(), out );
- WriteEndElement( XML_Y, out, false );
+ WriteStartElement( XML_SPEC, out );
+ WriteCharacterData( ConvertToString( pointSet->GetSpecificationTypeInfo(it->Index(), i) ).c_str() , out );
+ WriteEndElement( XML_SPEC, out, false );
- WriteStartElement( XML_Z, out );
- WriteCharacterData( ConvertToString( point[ 2 ] ).c_str(), out );
- WriteEndElement( XML_Z, out, false );
+ WriteStartElement( XML_X, out );
+ WriteCharacterData( ConvertToString( point[ 0 ] ).c_str(), out );
+ WriteEndElement( XML_X, out, false );
- WriteEndElement( XML_POINT, out );
+ WriteStartElement( XML_Y, out );
+ WriteCharacterData( ConvertToString( point[ 1 ] ).c_str(), out );
+ WriteEndElement( XML_Y, out, false );
+
+ WriteStartElement( XML_Z, out );
+ WriteCharacterData( ConvertToString( point[ 2 ] ).c_str(), out );
+ WriteEndElement( XML_Z, out, false );
+
+ WriteEndElement( XML_POINT, out );
+ }
+ WriteEndElement( XML_TIME_SERIES, out, false );
}
+
WriteEndElement( XML_POINT_SET, out );
}
Index: mitkPointSetWriter.h
===================================================================
--- mitkPointSetWriter.h (revision 21795)
+++ mitkPointSetWriter.h (working copy)
@@ -233,12 +233,18 @@
static const char* XML_POINT_SET;
+ static const char* XML_TIME_SERIES;
+
+ static const char* XML_TIME_SERIES_ID;
+
static const char* XML_POINT_SET_FILE;
static const char* XML_FILE_VERSION;
static const char* XML_POINT;
+ static const char* XML_SPEC;
+
static const char* XML_ID;
static const char* XML_X;
File Metadata
Details
Attached
Mime Type
text/plain
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
463
Default Alt Text
PointSetWriterAndReader.patch (7 KB)
Attached To
Mode
T3415: 4D PointSet Writer and Loader does ignore Point specification
Attached
Detach File
Event Timeline
•
vongruen
added a comment.
Mar 22 2010, 10:27 AM
2010-03-22 10:27:24 (UTC+1)
Comment Actions
The final version of the modified files
Log In to Comment