Relational attribute example

From ObjectVision

Jump to: navigation, search

Configuration examples: Relational attribute

Introduction

Relational attributes are used to relate domains. They are use in many calculations, especially in aggregation and relational functions.

Relational attributes can be made in different ways, two examples that occur often are presented here

Example 1, relation based on (external) code attributes

container administrative
{
   unit<uint32> neighborhood
   :  StorageName  = "%SourceDataDir%/CBS/2017/neighborhood"
   ,  StorageType    = "gdal.vect"
  {
     attribute<string>           municipality_code;
     attribute<municipality> municipality_rel  := rlookup(municipality_code, municipality/values);
  }
  unit<uint32> municipality := unique(neighborhood/municipality_code);
}

Explanation:

The example presents how an external code can be used to configure a relation. In the example the external code municipality_code is read from a storage. Based on this attribute the municipality domain unit is configured with the unique function. This results in a domain unit with the generated subitem values, containing all unique municipality_codes in alphabetic order.

The resulting relation: municipality_rel attribute, configured with the rlookup values, results in the index numbers of the municipality domain for the neighborhood domain.

Example 2, relation based on geometry (point in polygon)

container bag
{
   unit<uint32> vbo
   :  StorageName  = "%SourceDataDir%/BAG/20170101/vbo.shp"
   ,  StorageType    = "gdal.vect"
  {
     attribute<point_rd>       geometry;
     attribute<municipality> municipality_rel  := point_in_polygon(geometry, municipality/geometry);
  }
  unit<uint32> municipality
   :  StorageName  = "%SourceDataDir%/CSB/2017/municipality.shp"
   ,  StorageType    = "gdal.vect"
  {
     attribute<point_rd> geometry (poly);
  }
}

Explanation:

The example presents how a relation can be configured based on a point in polygon relation. In the example the geometry of a vbo (verblijfsobject in the BAG) and the geometry of municipalities are read from storages. The point_in_polygon function results in the index numbers of the municipality domain for the vbo domain. The relation indicates in which municipality the vbo is located.

Personal tools