Structure of the VPF data model
Features
The basic element of a VPF database is the feature, which is the database representation of a real world entity, such as a road, a lake, or a building.
VPF features should not be confused with the LuciadLightspeed features
provided through the |
Each feature must belong to exactly one feature class, identified by its feature class code. The feature class defines the feature together with a set of geometric primitives and attributes.
There are three basic primitives that can be used to define the geometric extent of a feature: nodes, edges and faces. They represent point, line and area geometries respectively. In addition, the primitive text can be used to represent text on a map.
Non-geometric properties are specific to a feature class, and are therefore not defined by the VPF specification itself. That is the responsibility of the VPF product specifications.
Feature Classes, Coverages, Libraries and Databases
Because a VPF dataset can be very large, some additional structures are available to group features hierarchically, based on their geometric, topological and thematic properties:
-
A VPF feature class is a collection containing features that have a common thematic definition, roads for example, and a common type, defined by a set of attributes.
-
A VPF coverage is a collection of feature classes that have a common thematic definition, transportation for example. The features in the feature classes can have topological relationships.
-
A VPF library is a collection of coverages that share a single coordinate system and scale, have a common thematic definition, and are contained within a specified spatial extent.
-
A VPF database is the top-level element of a VPF dataset. It is a collection of related libraries and some additional high-level information. A database is designed according to a specific VPF product type that describes the common structure of all databases of that type.
The VPF model mapped to the LuciadLightspeed VPF API
Features
VPF features are modeled in LuciadLightspeed by the ILcdVPFFeature
interface.
This interface provides methods for retrieving:
-
The feature class code
-
The LuciadLightspeed object representing the feature class
-
The attributes of the feature, through the
ILcdDataObject
interface
In addition, each VPF feature implements a LuciadLightspeed ILcdShape
interface,
depending on the geometric primitive that defines the spatial extent of
the feature. Table 1, “Mapping of VPF geometric primitives to LuciadLightspeed interfaces” shows the mapping of VPF geometric
primitives on LuciadLightspeed ILcdShape
interfaces. See the Decoding VPF data guide for more
details on model element modes.
VPF Model Element Mode | VPF geometric primitive | LuciadLightspeed interface |
---|---|---|
ELEMENT_PER_GEOMETRY |
node |
|
ELEMENT_PER_GEOMETRY |
edge |
|
ELEMENT_PER_GEOMETRY |
face |
|
ELEMENT_PER_GEOMETRY |
text |
|
ELEMENT_PER_FEATURE |
node |
|
ELEMENT_PER_FEATURE |
edge |
|
ELEMENT_PER_FEATURE |
face |
|
ELEMENT_PER_FEATURE |
text |
|
Feature Classes, Coverages, Libraries and Databases
The LuciadLightspeed API contains several classes for navigating through the VPF database structure. For each VPF database component, a corresponding class is available in LuciadLightspeed, as shown in Table 2, “Mapping of VPF database components to LuciadLightspeed classes”.
VPF database component | LuciadLightspeed class |
---|---|
Feature class |
|
Coverage |
|
Library |
|
Database |
Each of the classes offers methods for inspecting its contents. Depending on the class, one
or more of the methods might not be available. For example, the TLcdVPFDatabase
class does not contain
a method for retrieving its parent, because it is a top level element:
Property | Method |
---|---|
Short name |
|
Textual description |
|
Path to the component main directory |
|
Child components |
|
Parent component |
|
Data quality descriptor |
|
Total bounds of the component |
|
The data quality descriptor of a database component offers meta-information about how and when the data for that particular component were captured: for example, when it was last updated, data accuracy, and so on. |
Model structure
VPF models are generated per feature class. VPF models have the following properties and structure:
-
Each model implements the
ILcdTwoDBoundsIndexedModel
interface. -
Each model has a
TLcdVPFModelDescriptor
that implements theILcdDataModelDescriptor
interface, to provide meta-information about the attributes contained in its VPF features. -
All elements contained in the model are
ILcdVPFFeature
implementations, representing the features of the VPF feature class being decoded.