|
LuciadCPillar 2026.1.01
|
A Feature is a (partial) copy of a domain object. More...
#include <luciad/models/features/Feature.h>
Classes | |
| class | Builder |
| Allows the incremental creation of a Feature object. More... | |
Public Member Functions | |
| Builder | asBuilder () const |
| Returns this Feature as a Feature::Builder. | |
| std::shared_ptr< Geometry > | findGeometry () const |
| Tries to find a geometry for this feature. | |
| const DataType & | getDataType () const |
| Returns the data type describing the feature properties. | |
| FeatureId | getId () const |
| Returns the id of this feature. | |
| std::optional< size_t > | getListSize (const DataPropertyPath &propertyPath) const |
| Returns the element count of a list-typed property. | |
| std::optional< size_t > | getListSize (const std::string &propertyName) const |
| Convenience overload of getListSize that resolves the property by name on this feature's data type. | |
| template<typename T> | |
| std::optional< T > | getValue (const DataPropertyPath &propertyPath) const |
| Accesses the value for the given property. | |
| template<typename T> | |
| std::optional< T > | getValue (const std::string &propertyName) const |
| Convenience overload of getValue that resolves the property by name on this feature's data type. | |
| bool | hasId () const |
| Returns if this Feature has an id. | |
| bool | operator!= (const Feature &other) const |
| bool | operator== (const Feature &other) const |
Static Public Member Functions | |
| static Builder | newBuilder () |
| Returns a new Feature Builder. | |
A Feature is a (partial) copy of a domain object.
It allows the rest of the API to easily access the domain object's properties, including any geometry. If you do a query on the model, and retrieve a Feature from it, the caller of the query receives ownership of the Feature. I.e. the caller can decide what to do with it, and when to dispose it.
This means that the Map and Layer APIs are allowed to keep references to a Feature and have unrestricted lock-less access to its properties. The caller of the IFeatureModel::query method is responsible for managing the lifetime of a Feature.
To make Feature instances easy to use in a multi-threaded environment, they are
See article for more details on this class.
| Builder luciad::Feature::asBuilder | ( | ) | const |
Returns this Feature as a Feature::Builder.
This makes it possible to copy a Feature, and modify values. Note that when using this builder, it is not possible to change the datatype. Only the values and the id of the Feature. Otherwise a LogicException will be thrown.
| std::shared_ptr< Geometry > luciad::Feature::findGeometry | ( | ) | const |
Tries to find a geometry for this feature.
If this feature's data type is annotated with GeometryDataAnnotation, the value of the corresponding property is returned. Otherwise, the result will be nullptr.
| const DataType & luciad::Feature::getDataType | ( | ) | const |
Returns the data type describing the feature properties.
| FeatureId luciad::Feature::getId | ( | ) | const |
Returns the id of this feature.
A feature id should be unique across a model.
When no id is set, this method will throw an exception.
| LogicException | when the feature has no id. |
| std::optional< size_t > luciad::Feature::getListSize | ( | const DataPropertyPath & | propertyPath | ) | const |
Returns the element count of a list-typed property.
| propertyPath | the path to the list-typed property (DataCollectionKind::List). |
| InvalidArgumentException | if the path's origin type does not match this Feature's data type, or the path does not point to a list, such as for a scalar property or a list element. |
| std::optional< size_t > luciad::Feature::getListSize | ( | const std::string & | propertyName | ) | const |
Convenience overload of getListSize that resolves the property by name on this feature's data type.
Equivalent to calling getListSize with a DataPropertyPath built from getDataType() and propertyName.
Performance note: this overload resolves the name on every call. To read the same property from many features in a tight loop, build a DataPropertyPath once and use the DataPropertyPath overload, which prevents the repeated lookup.
| propertyName | the name of a list-typed property (DataCollectionKind::List) in this feature's data type. |
| InvalidArgumentException | when no property with that name exists, or it does not point to a list, such as for a scalar property. |
| std::optional< T > luciad::Feature::getValue | ( | const DataPropertyPath & | propertyPath | ) | const |
Accesses the value for the given property.
The type parameter T depends on the type of value this property contains:
Reading a composite value and navigating to one of its leaves:
Reading the elements of a list of composite values:
| T | the value type, chosen by property shape (see above). |
| propertyPath | the property for which to return a value. |
| InvalidArgumentException | when the property does not exist in the DataType, T does not match the path's leaf type (for example the value is a Point geometry but ArcBand was requested), or the list is unset or the index is out of bounds for an indexed path. |
| std::optional< T > luciad::Feature::getValue | ( | const std::string & | propertyName | ) | const |
Convenience overload of getValue that resolves the property by name on this feature's data type.
Equivalent to calling getValue with a DataPropertyPath built from getDataType() and propertyName.
Performance note: this overload resolves the name on every call. To read the same property from many features in a tight loop, build a DataPropertyPath once and use the DataPropertyPath overload, which avoids the repeated lookup.
| T | the value type, chosen by the property's shape (see the DataPropertyPath overload). |
| propertyName | the name of a property in this feature's data type. |
| InvalidArgumentException | when no property with that name exists, or T does not match its type. |
| bool luciad::Feature::hasId | ( | ) | const |
Returns if this Feature has an id.
If this method returns false, it is not allowed to call Feature::getId.
|
static |
| bool luciad::Feature::operator!= | ( | const Feature & | other | ) | const |
| bool luciad::Feature::operator== | ( | const Feature & | other | ) | const |