Commit 2056c96d authored by Gaetano Raffaele's avatar Gaetano Raffaele
Browse files

ENH: added option to set label field name

No related merge requests found
Showing with 12 additions and 3 deletions
+12 -3
...@@ -57,6 +57,11 @@ private: ...@@ -57,6 +57,11 @@ private:
AddParameter(ParameterType_Int, "bv", "Background Value"); AddParameter(ParameterType_Int, "bv", "Background Value");
SetParameterDescription("bv", "Value corresponding to no-object."); SetParameterDescription("bv", "Value corresponding to no-object.");
SetDefaultParameterInt("bv", 0); 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"); AddParameter(ParameterType_OutputFilename, "out", "Output GIS vector file");
SetParameterDescription("out", SetParameterDescription("out",
...@@ -94,7 +99,11 @@ private: ...@@ -94,7 +99,11 @@ private:
layername = layername.substr(0, layername.size() - (extension.size())); layername = layername.substr(0, layername.size() - (extension.size()));
layer = ogrDS->CreateLayer(layername, &oSRS, wkbPolygon, options); 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); layer.CreateField(labelField, true);
LabelImageToOGRDataSourceFilterType::Pointer labelToOGR = LabelImageToOGRDataSourceFilterType::New(); LabelImageToOGRDataSourceFilterType::Pointer labelToOGR = LabelImageToOGRDataSourceFilterType::New();
...@@ -104,7 +113,7 @@ private: ...@@ -104,7 +113,7 @@ private:
LabelImageType::Pointer mask = this->GetParameterUInt32Image("mask"); LabelImageType::Pointer mask = this->GetParameterUInt32Image("mask");
labelToOGR->SetInputMask(mask); labelToOGR->SetInputMask(mask);
} }
labelToOGR->SetFieldName("label"); labelToOGR->SetFieldName(lbField);
labelToOGR->Update(); labelToOGR->Update();
int noObj = this->GetParameterInt("bv"); int noObj = this->GetParameterInt("bv");
...@@ -113,7 +122,7 @@ private: ...@@ -113,7 +122,7 @@ private:
otb::ogr::Layer::const_iterator featIt = layerTmp.begin(); otb::ogr::Layer::const_iterator featIt = layerTmp.begin();
for (; featIt != layerTmp.end(); ++featIt) 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()); otb::ogr::Feature dstFeature(layer.GetLayerDefn());
dstFeature.SetFrom(*featIt, TRUE); dstFeature.SetFrom(*featIt, TRUE);
layer.CreateFeature(dstFeature); layer.CreateFeature(dstFeature);
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment