Skip to content

Type assertion in OGRFieldWrapper GetValue()

Cédric Traizet requested to merge field_get_value_assert into develop

Summary

This merge request adds checks on the field type before using GetValue() and SetValue.

Rationale

There is an assertion that checks that the field type is the same as the requested type in the GetValue<T>() and SetValue<T>() method of the Field class. However this assertion is not respected in classification applications. This merge request adds field type verification and appropriate cast when calling these methods.

One notable change is that std::stod is used to convert string field to numeric types instead of the atoi used in GDAL's GetValueAsXXX() for string fields. stod throw an exception if the field cannot be converted ("1" is ok, "Vegetation" is not). This change highlighted a bug in the TrainVectorApplication working in unsupervised mode, the app is not supposed to fetch the class field in this case, but it does, using the first field of the features as the class field, and trying to convert it to a numerical value.

See associated issue

Additional notes

Copyright

The copyright owner is CNES and has signed the ORFEO ToolBox Contributor License Agreement.


Check before merging:

  • All discussions are resolved
  • At least 2 👍 votes from core developers, no 👎 vote.
  • The feature branch is (reasonably) up-to-date with the base branch
  • Dashboard is green
  • Copyright owner has signed the ORFEO ToolBox Contributor License Agreement
  • Optionally, run git diff develop... -U0 --no-color | clang-format-diff.py -p1 -i on latest changes and commit
Edited by Cédric Traizet

Merge request reports