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 ILcdFeatured interface. LuciadLightspeed features correspond to feature attributes in VPF. In this article, we use the word feature to refer to VPF features, not to LuciadLightspeed features.

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.

Table 1. Mapping of VPF geometric primitives to LuciadLightspeed interfaces
VPF Model Element Mode VPF geometric primitive LuciadLightspeed interface

ELEMENT_PER_GEOMETRY

node

ILcdPoint

ELEMENT_PER_GEOMETRY

edge

ILcdPolyline

ELEMENT_PER_GEOMETRY

face

ILcdPolygon

ELEMENT_PER_GEOMETRY

text

ILcdText

ELEMENT_PER_FEATURE

node

ILcdShapeList containing ILcdPoint

ELEMENT_PER_FEATURE

edge

ILcdShapeList containing ILcdPolyline

ELEMENT_PER_FEATURE

face

ILcdShapeList containing ILcdPolygon

ELEMENT_PER_FEATURE

text

ILcdShapeList containing ILcdText

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”.

Table 2. Mapping of VPF database components to LuciadLightspeed classes
VPF database component LuciadLightspeed class

Feature class

TLcdVPFFeatureClass

Coverage

TLcdVPFCoverage

Library

TLcdVPFLibrary

Database

TLcdVPFDatabase

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:

Table 3. Methods for inspecting the contents of a VPF database component
Property Method

Short name

getName()

Textual description

getDescription()

Path to the component main directory

getPathName()

Child components

getLibraries()/getCoverages()/…​

Parent component

getDatabase()/getLibrary()/…​

Data quality descriptor

getDataQualityDescriptor()

Total bounds of the component

getBounds()

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 the ILcdDataModelDescriptor 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.