From 2056c96d6fb6b98ed8080f4ca7a8a58a1b8e21c2 Mon Sep 17 00:00:00 2001 From: "raffaele.gaetano" <raffaele.gaetano@cirad.fr> Date: Fri, 28 Apr 2023 09:01:05 +0200 Subject: [PATCH] ENH: added option to set label field name --- app/otbSimpleVectorization.cxx | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/app/otbSimpleVectorization.cxx b/app/otbSimpleVectorization.cxx index f888e01..6b3f955 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); -- GitLab