Mappedin Venue Format (MVF) Feature Representation

The relationship between a feature type and the MVF file structure is not one-to-one. A feature type may contribute to a single file or multiple extension files. Additionally, for certain feature types, geometry reference properties are automatically populated from the feature’s geometry.

This topic identifies how geometry references are created, which extension files are produced by each feature type, and the specific MVF object or GeoJSON features they contain.

Note  Please refer to the MVF Specification for the complete extension descriptions, object definitions, and content requirements.

Reference Geometry

The annotation, connection, entrance, location, and location_instance feature types have attributes that reference geometry (GeoJSON features from the Geometry extension) by a unique ID. The recommended way to reference geometry for these feature types is to supply the referenced geometry directly on each referring feature.

When present, geometry on these feature types is written as one or more GeoJSON features in geometry/<floorId>.geojson as part of the Geometry Extension. The resulting geometry IDs and, where required, floor IDs are used to populate the corresponding reference properties on the written MVF object.

Geometry traits provide the MVF properties and relationships applicable to each geometry. This is particularly important for aggregate geometries, as individual geometries may belong to different floors or be referenced by other MVF extensions, such as Traversability, Facade, and Default Style. All geometries must specify the mvf_floor_id trait; otherwise the feature will be rejected by the writer. The supported geometry traits are described below.

Geometry Trait

Required/Optional

Notes

mvf_floor_id

Required

Identifies the floor containing the geometry.

Its value must reference the id value of a floor feature written to the MVF bundle.

mvf_geom_id

Optional

Specifies the id property of the GeoJSON feature written to the Geometry extension.

When not supplied, the writer will automatically generate a unique ID for the geometry.

mvf_walkable

Optional

When true, includes the geometry as a walkable geometry in the Traversability extension. Otherwise, the geometry is not included as a walkable geometry.

mvf_nonwalkable

Optional

When true, includes the geometry as a non-walkable geometry in the Traversability extension. Otherwise, the geometry is not included as a non-walkable geometry.

mvf_style_token

Optional

When present, references the default style applied to the geometry.

The value must match the mvf_style_token attribute value of a style feature written to the MVF bundle.

mvf_floor_stack_id

Optional

When present, the geometry is included with the referenced floor stack as a facade in the Facade extension.

The value must reference the id attribute value of a floor_stack feature written to the MVF bundle.

mvf_connection_role

Optional

Specifies whether the geometry on a connection feature is an entrance, exit, or both:

  • entrance – the geometry is only an entrance to the connection

  • exit – the geometry is only an exit to the connection

If the trait is absent or its value is neither entrance nor exit, the geometry is referenced as both an entrance and an exit for the connection.

Note  To populate multiple geometry references from aggregate geometry, the geometry traits should be set on each independent component of the aggregate.

Multiple references to the same geometry object can be created by supplying the same geometry on more than one referring feature. For example, the same doorway geometry may be supplied on both an entrance feature and a connection feature.

Reference geometries are considered equivalent and treated as the same geometry object when both their shape and MVF geometry traits match. Equivalent reference geometries may specify the same mvf_geom_id value. If an mvf_geom_id is not specified, the writer generates a single geometry ID for the equivalent reference geometries and writes the geometry once to the Geometry extension.

Note  For more advanced workflows, geometry references may be specified directly through the geometry reference attributes of the referring feature, instead of being populated from its geometry.

Feature Type to Extension Mapping

The following table describes how each feature type is represented in the MVF bundle. Depending on its geometry and attributes, a feature type may contribute to more than one MVF extension.

For feature types that reference geometry in the Geometry extension, see Reference Geometry for information regarding populating geometry references.

Feature Type(s)

Notes

annotation

All annotation features are written to annotations/<floorId>.json in the Annotations extension as annotation objects, where the mvf_floor_id attribute determines <floorId>.

The symbolKey attribute identifies an entry in the annotationSymbols object in annotation-symbols.json. The url and name attributes define the annotation symbol for that key.

Geometry supplied on the annotation feature is written as a GeoJSON feature in the Geometry Extension and used to automatically populate the annotation’s geometryId reference.

area, hallway, object, poi, room, unknown, wall, window

All features are written to geometry/<floorId>.geojson in the Geometry extension as GeoJSON features, where the mvf_floor_id attribute determines <floorId>. The feature type name categorizes the geometry as a specific kind, which is written to kinds/<floorId>.json in the Kinds extension.

Depending on the attribute values supplied for mvf_walkable, mvf_nonwalkable, mvf_style_token, and mvf_floor_stack_id, these features may also be included by id reference in the Traversability, Default Style, or Facade extensions, respectively. See Feature Types for more information.

connection

All connection features are written to connections.json in the Connections extension as connection objects.

A connection object references geometry through its entrances and exits properties. Geometry supplied on a connection feature is written as GeoJSON features in the Geometry extension and used to automatically populate these references.

entrance

All entrance features are written to entrance-aesthetic/<floorId>.json in the Entrance Aesthetic extension as entrance aesthetic objects, where the mvf_floor_id attribute determines <floorId>.

An entrance aesthetic references geometry with the geometryId property. Geometry supplied on an entrance feature is written as a GeoJSON feature in the Geometry extension and used to automatically populate this reference.

floor

All floor features are written to floors.geojson in the Floors extension as GeoJSON features.

When the mvf_outdoor attribute value is true, the feature’s id is included as an entry in the list of outdoor floors written to outdoors.json in the Outdoors extension.

floor_image

All floor_image features are written to floor-images/<floorId>.geojson in the Floor Images extension as GeoJSON features, where the mvf_floor_id attribute determines <floorId>.

If a floor image is an anchored image, the anchoring geometry must be referenced by ID with the geometryId attribute. This feature type does not support geometry referencing from the geometry on the feature.

floor_stack

All floor_stack features are written to floor-stacks.json in the Floor Stacks extension as floor stack objects.

location

All location features are written to locations.json in the Locations extension as location objects.

Geometry supplied on a location feature is written as GeoJSON features in the Geometry Extension and used to automatically populate the location’s geometry anchors.

location_instance

All location_instance features are written as to location-instances.json in the Locations extension as location instance objects.

Geometry supplied on a location_instance feature is written as GeoJSON features in the Geometry Extension and used to automatically populate the location instance’s geometry anchors.

location_category

All location_category features are written to location-categories.json in the Locations extension as location category objects.

manifest

The manifest feature is written to manifest.geojson as a single GeoJSON feature in the manifest FeatureCollection. If no manifest feature is supplied, the writer will create one.

The contents property is generated by the writer based on the extension files written to the dataset. If the name, version, and time properties are not specified, then these required properties are written using the dataset name, the supported MVF version, and the current UTC time, respectively.

If the supplied manifest feature has a non-point geometry, a point geometry will be created from the geometry’s centroid. If the manifest does not have the required point geometry, one will be created from the center point of the accumulated geometry bounds.

style

All style features are written to default-style.json in the DefaultStyle extension as default style objects. The mvf_style_token attribute specifies the key used for the default style.

The geometries a style applies to can be referenced by including the style feature’s key as the mvf_style_token attribute or geometry trait value for applicable feature types.