Skip to content
Snippets Groups Projects
Commit 811fb626 authored by Julien Malik's avatar Julien Malik
Browse files

MRG

parents 0d74f626 f8b3609d
No related branches found
No related tags found
No related merge requests found
......@@ -613,7 +613,7 @@ unsigned int OGRIOHelper<TVectorData>
for (typename ChildrenListType::iterator it = children.begin(); it != children.end(); ++it)
{
DataNodePointerType dataNode = (*it)->Get();
otbMsgDevMacro(<< "Type of node " << dataNode->GetNodeType() << " id" << dataNode->GetNodeId());
//otbMsgDevMacro(<< "Type of node " << dataNode->GetNodeType() << " id " << dataNode->GetNodeId());
++m_Kept;
// Get the kwl
......@@ -621,6 +621,7 @@ unsigned int OGRIOHelper<TVectorData>
itk::ExposeMetaData<VectorDataKeywordlist>(dataNode->GetMetaDataDictionary(),
MetaDataKey::VectorDataKeywordlistKey,
kwl);
// Create the field once
if (ogrCurrentLayer != NULL && ogrCurrentLayer->GetFeatureCount() == 0)
{
......@@ -628,11 +629,15 @@ unsigned int OGRIOHelper<TVectorData>
// vectordatakeywordlist
for (unsigned int fieldIdx = 0; fieldIdx < kwl.GetNumberOfFields(); fieldIdx++)
{
if (ogrCurrentLayer->CreateField(kwl.GetNthField(fieldIdx).first) != OGRERR_NONE )
{
itkExceptionMacro(<< "Failed to create Field "<<kwl.GetNthField(fieldIdx).first->GetNameRef());
}
}
if ( std::string(kwl.GetNthField(fieldIdx).first->GetNameRef()) != "FID" )
{
otbMsgDevMacro(<< " CreateField " << kwl.GetNthField(fieldIdx).first);
if (ogrCurrentLayer->CreateField(kwl.GetNthField(fieldIdx).first) != OGRERR_NONE )
{
itkExceptionMacro(<< "Failed to create Field "<<kwl.GetNthField(fieldIdx).first->GetNameRef());
}
}
}
}
switch (dataNode->GetNodeType())
......@@ -680,11 +685,16 @@ unsigned int OGRIOHelper<TVectorData>
{
// Get the key of the Nth OGRFieldRefn
const char * key = kwl.GetNthField(i).first->GetNameRef();
if (std::string(key) != "FID")
{
// Edit the value of the field and add it to the current feature
ogrFeature->SetField(ogrFeature->GetFieldIndex(key) , kwl.GetFieldAsString(key).c_str());
otbMsgDevMacro( << "kwl.GetFieldAsString(key) " << ogrFeature->GetFieldIndex(key) << " " << kwl.GetFieldAsString(key) )
}
}
ogrFeature->SetField("Name", dataNode->GetNodeId());
// ogrFeature->SetField("Name", dataNode->GetNodeId());
ogrFeature->SetGeometry(&ogrPoint);
if (ogrCurrentLayer->CreateFeature(ogrFeature) != OGRERR_NONE)
......@@ -738,7 +748,7 @@ unsigned int OGRIOHelper<TVectorData>
ogrFeature->SetField(ogrFeature->GetFieldIndex(key) , kwl.GetFieldAsString(key).c_str());
}
ogrFeature->SetField("Name", dataNode->GetNodeId());
// ogrFeature->SetField("Name", dataNode->GetNodeId());
ogrFeature->SetGeometry(&ogrLine);
if (ogrCurrentLayer->CreateFeature(ogrFeature) != OGRERR_NONE)
......@@ -851,7 +861,7 @@ unsigned int OGRIOHelper<TVectorData>
OGRFeature * ogrFeature;
ogrFeature = OGRFeature::CreateFeature(ogrCurrentLayer->GetLayerDefn());
ogrFeature->SetField("Name", dataNode->GetNodeId());
// ogrFeature->SetField("Name", dataNode->GetNodeId());
ogrFeature->GetDefnRef()->SetGeomType(wkbMultiPoint);
ogrFeature->SetGeometry(ogrMultiPoint);
......@@ -877,7 +887,7 @@ unsigned int OGRIOHelper<TVectorData>
OGRFeature *ogrFeature;
ogrFeature = OGRFeature::CreateFeature(ogrCurrentLayer->GetLayerDefn());
ogrFeature->SetField("Name", dataNode->GetNodeId());
// ogrFeature->SetField("Name", dataNode->GetNodeId());
ogrFeature->GetDefnRef()->SetGeomType(wkbMultiLineString);
ogrFeature->SetGeometry(ogrMultiLineString);
......@@ -900,7 +910,7 @@ unsigned int OGRIOHelper<TVectorData>
OGRFeature * ogrFeature;
ogrFeature = OGRFeature::CreateFeature(ogrCurrentLayer->GetLayerDefn());
ogrFeature->SetField("Name", dataNode->GetNodeId());
// ogrFeature->SetField("Name", dataNode->GetNodeId());
ogrFeature->GetDefnRef()->SetGeomType(wkbMultiPolygon);
ogrFeature->SetGeometry(ogrMultiPolygon);
......@@ -924,7 +934,7 @@ unsigned int OGRIOHelper<TVectorData>
OGRFeature *ogrFeature;
ogrFeature = OGRFeature::CreateFeature(ogrCurrentLayer->GetLayerDefn());
ogrFeature->SetField("Name", dataNode->GetNodeId());
// ogrFeature->SetField("Name", dataNode->GetNodeId());
ogrFeature->GetDefnRef()->SetGeomType(wkbGeometryCollection);
ogrFeature->SetGeometry(ogrCollectionGeometry);
......
......@@ -282,8 +282,8 @@ void OGRVectorDataIO<TData>::Write(const VectorDataConstPointerType data, char *
}
chrono.Stop();
std::cout << "OGRVectorDataIO: file saved in " << chrono.GetMeanTime() << " seconds. (" << layerKept <<
" elements)" << std::endl;
otbMsgDevMacro( << "OGRVectorDataIO: file saved in " << chrono.GetMeanTime() << " seconds. (" << layerKept <<
" elements)" );
otbMsgDevMacro(<< " OGRVectorDataIO::Write() ");
}
......
......@@ -122,6 +122,13 @@ private:
LabeledSampleLocalizationGenerator(const Self &); //purposely not implemented
void operator =(const Self&); //purposely not implemented
std::string GetNextID()
{
std::ostringstream oss;
oss << m_CurrentID++;
return oss.str();
}
RandomGeneratorType::Pointer m_RandomGenerator;
std::string m_ClassKey;
......@@ -130,6 +137,7 @@ private:
double m_InhibitionRadius;
unsigned long int m_NbMaxIteration;
unsigned int m_NumberOfPositiveSamplesPerPoint;
unsigned int m_CurrentID;
};
} // end namespace otb
......
......@@ -32,7 +32,8 @@ LabeledSampleLocalizationGenerator<TVectorData>
m_RandomLocalizationDensity(.005),
m_InhibitionRadius(5.0),
m_NbMaxIteration(10000),
m_NumberOfPositiveSamplesPerPoint(50)
m_NumberOfPositiveSamplesPerPoint(50),
m_CurrentID(0)
{
this->SetNumberOfRequiredInputs(1);
this->SetNumberOfRequiredOutputs(1);
......@@ -210,7 +211,19 @@ LabeledSampleLocalizationGenerator<TVectorData>
{
if (itVector.Get()->IsPointFeature())
{
this->GetOutput(0)->GetDataTree()->Add(itVector.Get(), document);
// Duplicate input feature
typename DataNodeType::Pointer currentGeometry = DataNodeType::New();
currentGeometry->SetNodeId(this->GetNextID());
currentGeometry->SetNodeType(otb::FEATURE_POINT);
currentGeometry->SetPoint(itVector.Get()->GetPoint());
std::vector<std::string> fields = itVector.Get()->GetFieldList();
for (std::vector<std::string>::const_iterator it = fields.begin(); it != fields.end(); ++it)
{
currentGeometry->SetFieldAsString( *it, itVector.Get()->GetFieldAsString(*it) );
}
this->GetOutput(0)->GetDataTree()->Add(currentGeometry, document);
}
++itVector;
}
......@@ -234,21 +247,21 @@ LabeledSampleLocalizationGenerator<TVectorData>
for (typename PointVectorType::const_iterator it = vPoint.begin(); it != vPoint.end(); ++it)
{
typename DataNodeType::Pointer CurrentGeometry = DataNodeType::New();
CurrentGeometry->SetNodeId("FEATURE_POINT");
CurrentGeometry->SetNodeType(otb::FEATURE_POINT);
CurrentGeometry->SetPoint(*it);
CurrentGeometry->SetFieldAsInt(this->GetClassKey(), this->GetNoClassIdentifier());
this->GetOutput(0)->GetDataTree()->Add(CurrentGeometry, document);
typename DataNodeType::Pointer currentGeometry = DataNodeType::New();
currentGeometry->SetNodeId(this->GetNextID());
currentGeometry->SetNodeType(otb::FEATURE_POINT);
currentGeometry->SetPoint(*it);
currentGeometry->SetFieldAsInt(this->GetClassKey(), this->GetNoClassIdentifier());
this->GetOutput(0)->GetDataTree()->Add(currentGeometry, document);
}
for (typename PointVectorType::const_iterator it = pPoint.begin(); it != pPoint.end(); ++it)
{
typename DataNodeType::Pointer CurrentGeometry = DataNodeType::New();
CurrentGeometry->SetNodeId("FEATURE_POINT");
CurrentGeometry->SetNodeType(otb::FEATURE_POINT);
CurrentGeometry->SetPoint(*it);
CurrentGeometry->SetFieldAsInt(this->GetClassKey(), 1);
this->GetOutput(0)->GetDataTree()->Add(CurrentGeometry, document);
typename DataNodeType::Pointer currentGeometry = DataNodeType::New();
currentGeometry->SetNodeId(this->GetNextID());
currentGeometry->SetNodeType(otb::FEATURE_POINT);
currentGeometry->SetPoint(*it);
currentGeometry->SetFieldAsInt(this->GetClassKey(), 1);
this->GetOutput(0)->GetDataTree()->Add(currentGeometry, document);
}
}
++itVector;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment