Package org.apache.sis.feature

package org.apache.sis.feature
Defines the structure and content of views of real-world phenomenon. The phenomenon to represent (or a fundamental unit of information) is called a feature. The term “feature” may be used in different contexts:
  • Feature types
    Define the structure of real-world representations. A feature type lists the attributes, operations or associations to other features (collectively called “properties” or “characteristics”) that a feature can have.
    Analogy: a Feature­Type in a Spatial Information System is equivalent to a Class in the Java language. By extension, Attribute­Type and Operation are equivalent to Field and Method respectively.
  • Feature instances (often called only Features)
    Hold the content (or values) that describe one specific real-world object.
    Example: the “Eiffel tower” is a feature instance belonging to the “Tower” feature type.
  • Simple features
    Are instances of a feature type with no association to other features, and where all attributes have [1 … 1] multiplicity. Such simple features are very common.
In addition, a feature type can inherit the properties of one or more other feature types. Properties defined in the sub-type can override properties of the same name defined in the super-types, provided that values of the sub-type property are assignable to the super-type property.


Each feature type has a name, which should be unique. Those names are the main criterion used for checking if a feature type is assignable from another type. Names can be scoped for avoiding name collision.

Class hierarchy

The class hierarchy for feature types is derived from ISO 19109 specification. The class hierarchy for feature instances is closely related:
Feature class hierarchy
Types Instances
Identified type
 ├─ Feature type
 └─ Property type
     ├─ Attribute type
     ├─ Feature association role
     └─ Operation
 ├─ Feature (sparse or dense)
 └─ Property
     ├─ Attribute (singleton or multi-valued)
     └─ Feature association (singleton or multi-valued)


Classes defined in this package are rarely instantiated directly (by a new statement). Instead, those classes are instantiated indirectly by invoking a method on a parent container, or by using a builder. The starting point is Feature­Type, which may be created by a Feature­Type­Builder or may be provided by a Data­Store reading a data file. Once a Feature­Type has been obtained, Features can be instantiated by calls to the Feature­Type​.new­Instance() method. Once a Feature instance has been obtained, Attributes can be instantiated indirectly by calls to the Feature​.set­Property­Value(…) method.