diff --git a/app/otbSimpleVectorization.cxx b/app/otbSimpleVectorization.cxx index f888e0136f7d53b19c087058349c7ff933d67882..6b3f9550fa93dd78ab5e81c16a176476b7f0de7c 100644 --- a/app/otbSimpleVectorization.cxx +++ b/app/otbSimpleVectorization.cxx @@ -57,6 +57,11 @@ private: AddParameter(ParameterType_Int, "bv", "Background Value"); SetParameterDescription("bv", "Value corresponding to no-object."); SetDefaultParameterInt("bv", 0); + + AddParameter(ParameterType_String, "label", "Label field"); + SetParameterDescription("label", "Name of the output field containing object labels (defaults to 'label')"); + MandatoryOff("label"); + DisableParameter("label"); AddParameter(ParameterType_OutputFilename, "out", "Output GIS vector file"); SetParameterDescription("out", @@ -94,7 +99,11 @@ private: layername = layername.substr(0, layername.size() - (extension.size())); layer = ogrDS->CreateLayer(layername, &oSRS, wkbPolygon, options); - OGRFieldDefn labelField("label", OFTInteger); + std::string lbField = "label"; + if (IsParameterEnabled("label")) + lbField = GetParameterString("label"); + + OGRFieldDefn labelField(lbField.c_str(), OFTInteger); layer.CreateField(labelField, true); LabelImageToOGRDataSourceFilterType::Pointer labelToOGR = LabelImageToOGRDataSourceFilterType::New(); @@ -104,7 +113,7 @@ private: LabelImageType::Pointer mask = this->GetParameterUInt32Image("mask"); labelToOGR->SetInputMask(mask); } - labelToOGR->SetFieldName("label"); + labelToOGR->SetFieldName(lbField); labelToOGR->Update(); int noObj = this->GetParameterInt("bv"); @@ -113,7 +122,7 @@ private: otb::ogr::Layer::const_iterator featIt = layerTmp.begin(); for (; featIt != layerTmp.end(); ++featIt) { - if (featIt->ogr().GetFieldAsInteger("label") != noObj) { + if (featIt->ogr().GetFieldAsInteger(lbField.c_str()) != noObj) { otb::ogr::Feature dstFeature(layer.GetLayerDefn()); dstFeature.SetFrom(*featIt, TRUE); layer.CreateFeature(dstFeature);