Type assertion in OGRFieldWrapper GetValue()
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