Feature(s) - 52North/IlwisCore GitHub Wiki

A feature in Ilwis-Objects is anything that can have one or more geometries and has one distinct identity.

Design Rationale

A simple view on a feature would be a spatial object with one (multi?)geometry and a set of attributes. This works fine in many cases but what if one wanted to track a certain feature over time or scale. Is an ice berg that changes shape over time a different ice berg? is a city viewed on world scale a different city than the one on regional scale? Not really. The identity of the object remains the same while its shape (potentially) changes. But it is not only the geometry that changes. A city at world scale is most likely a point, but at local level it has a much more complex structure (e.g. districts in the city). A simple (sub)geometry wouldn’t do justice to the nature of those sub structures. In fact they are features themselves, with their own set of properties and attributes. To support this in ilwis-objects each feature has one geometry, a set of attributes and zero or more sub-features which are full-fledged features themselves. Note that the sub in sub feature can mean both alternate and part-of.

Description

In the Ilwis-Objects terminology an ice berg tracked over time (assuming it doesn’t split) can be represented as one feature. It may change shape and/or location in time but it is still the same ice berg. The track of geometries is referred to as the ‘index ‘, similar to the same notion in the raster data model.

A feature at a certain index is referred to as sub feature and is similar to a traditional elements of vector maps. Apart from geometries, features also have extensible set of other properties (the attributes) that depend on the nature of the feature and context in which it is used. Features are thus described by

  • Per index entry a geometry ( which maybe an empty geometry, but at least one for the whole index)
  • Index dependent attributes
  • Index independent attributes.

The index maps onto a domain, defining the semantics of the index. Thus an Index may represent a time dimension, a scale dimension or simply a real 3D height or any other domain type.

⚠️ **GitHub.com Fallback** ⚠️