Skip to main content

MVF v2 Data Model

Mappedin Venue Format (MVF) v2 is currently in an alpha state while Mappedin perfects a new design. Breaking changes may occur and this page will be updated to reflect this.

The following changes have occurred to the beta specification:

Oct 2024: MapStack mapstack.geojson was renamed to FloorStack floorstack.geojson.

Oct 2024: Map map.geojson was renamed to Floor floor.geojson.

The Mappedin Venue Format (MVF) bundle contains a number of GeoJSON and JSON files which describe the geometry of the map and suggest how it should be rendered. These files are grouped into Core (necessary geometry) and Extensions (render styles).

Core

The core data models of an MVF are the essential files required to render a building. They iclude Connection, Entrance, FloorStack, Floor, Manifest, Node, Obstruction and Space.

Connection

connection.json

A connection is a mechanism that facilitates traversal between levels, such as a staircase or an elevator. The connection.json file contains a array of the connections for the entire building.

PropertyDescriptionOptional
idA unique string identifier beginning with c_.No
typePossible values include "stairs" or "elevator".No
nodesA string array of node identifiers which are part of this this connection.No
externalIdA string identifier which links this connection to an external service.No
accessibleA boolean indicating whether or not this connection is wheelchair accessible.Yes
metadataAn object containing any extra metadata which is not part of the MVF spec. Presence of any key or value is not guaranteed.Yes

Entrance

entrance/m_*.geojson

An entrance is an opening in the wall which facilitates traversal between two spaces. Entrances are represented in FeatureCollections of GeoJSON LineStrings. They are split up by map ID within the entrance directory.

PropertyDescriptionOptional
idA unique string identifier beginning with e_.No
externalIdA string identifier which links this entrance to an external service.No
nodeA string identifier of a node associated with this entrance.Yes
detailsA Details object containing additional information about an entrance.Yes
detailsAn optional object containing additional properties. See Details.Yes
metadataAn object containing any extra metadata which is not part of the MVF spec. Presence of any key or value is not guaranteed.Yes

FloorStack

floorstack.json

A floor stack is a collection of maps for each floor in a building. The floorstack.json file contains an array of floors.

PropertyDescriptionOptional
idA unique string identifier beginning with fs_.No
externalIdA string identifier which links this map stack to an external service.No
nameA string containing the name of this map stack.No
mapsA string array of map identifiers which are part of this this stack.No
metadataAn object containing any extra metadata which is not part of the MVF spec. Presence of any key or value is not guaranteed.Yes

Floor

floor.geojson

A floor is a level or floor within a floorstack. The floor.geojson file contains an array of maps for the current floorstack.

PropertyDescriptionOptional
idA unique string identifier beginning with f_.No
externalIdA string identifier which links this map stack to an external service.No
elevationThe elevation of the floor. Typically 0 is the ground floor. Negative values are below ground and positive values are above groundNo
nameA string containing the floor name.No
shortNameA string containing the short floor name.No
geometryAn object of of type Polygon, MultiPolygon or null with an array of coordinates.Yes

Manifest

manifest.geojson

The manifest is a GeoJSON FeatureCollection containing a single feature. This feature has a Point property called geometry which is roughly the center point of the MVF. The manifest properties describe the MVF bundle.

PropertyDescriptionOptional
nameA string containing the name of the building.No
org_idA unique string identifier for the organization which owns the building.Yes
folder_structAn array of objects describing the files and folders contained in the MVF bundle.No
versionA string containing the MVF version.No
timeAn ISO 8601 date-time string, including timezone offset.No

Node

node.geojson

Nodes are not included in an MVFv2 downloaded using the Mappedin Editor. They are included when downloadedusing the Mappedin REST API.

A node is a point on a floor that is used to create a path from a starting location to a destination. Nodes may be linked to other nodes which is represented by the neighbors property. The node.geojson file contains a FeatureCollection

PropertyDescriptionOptional
idA unique string identifier beginning with n_.No
externalIdA string identifier which links this node to an external service.No
mapA string identifier of the map this node is found on.No
spaceA string array of space identifiers which this node map be contained within.No
neighborsAn array of objects identifying traversable nearby nodes. See Neighbor.No

Obstruction

obstruction/m_*.geojson

An obstruction is a non-traversable area (e.g. wall), meaning a path will never be created through an obstruction. Obstructions are represented in FeatureCollections of GeoJSON Polygons or LineStrings. They are split up by floor ID within the obstruction directory.

PropertyDescriptionOptional
idA unique string identifier beginning with o_.No
externalIdA string identifier which links this obstruction to an external service.No
kindPossible values include "Wall" or "Desks".Yes
footprintComponentA boolean indicating whether this obstruction is considered part of the footprint of the building it is a part of. For example, an exterior wall would be considered part of the building footprint.Yes
centerThe center of mass of this obstruction, if it is a polygon. This is undefined for line strings as this can be trivially derived.Yes
entrancesA string array of entrance identifiers which can be used to navigate through this obstruction.No
detailsAn optional object containing additional properties. See Details.Yes
metadataAn object containing any extra metadata which is not part of the MVF spec. Presence of any key or value is not guaranteed.Yes

Space

space/m_*.geojson

A space is traversable and enclosed with walls, such as a room or hallway. Spaces are represented in FeatureCollections of GeoJSON Polygons, LineStrings, or Points. They are split up by floor ID within the space directory.

PropertyDescriptionOptional
idA unique string identifier beginning with s_.No
externalIdA string identifier which links this space to an external service.No
kindPossible values include "default", "hallway", "exterior", "void", "connection.stairs", "connection.elevator", or "poi".Yes
detailsAn optional object containing additional properties. See Details.Yes
metadataAn object containing any extra metadata which is not part of the MVF spec. Presence of any key or value is not guaranteed.Yes

Enterprise Data Types

Enterprise Data Types include additional data specific to Enterprise Tier maps.

Venue

enterprise/venue.json

A Venue is the most top level data model that encompasses all other enterprise data models.

PropertyDescriptionOptional
nameA string that represents the name of the venue.No
slugA string that represents a human-readable unique identifier for the venue.No
externalIdA string identifier which links this space to an external service.No
defaultLanguageA object containing strings code and name, representing the default language code and name.No
languagesAn array of objects containing string code, string name and boolean enabled representing a supported language code, name and whether it is enabled.No
iconA string that contains the URL of the venue's icon.Yes
logoA string that contains the URL of the venue's logo.Yes
mappedinWebUrlA string that contains the URL to a Mappedin Web v2 instance of the map.Yes
defaultMapA string that contains the default floor Id.No
countrycodeA string that contains the country code of the venue's location.No
tzidA string that contains venue's time zone.No
topLocationsAn array of string that contains the location Ids of the venue's top locations.Yes

Categories

enterprise/categories.json

A category is used to group of locations with shared characteristics, such as Restaurants or Meeting Rooms.

PropertyDescriptionOptional
idA unique string identifier beginning with ec_.No
nameA string that represents the name of the categoryNo
externalIdA string identifier which links this space to an external service.No
sortOrderA number indicating the category's sort position.No
iconFromDefaultListA string identifying the icon used for the location's label.No
locationsAn array of locations within this category.No
childrenAn array of child categories of this category.Yes
colorThe color to be used when labelling this location.No

Locations

enterprise/locations.json

A location is a place of interest that is linked to a Space, such as a store or meeting room. Locations do not contain geometry.

PropertyDescriptionOptional
idA unique string identifier.No
nameA string that represents the name of the location.Yes
typeThe location type, i.e. “tenant" or "amenity".No
externalIdA string identifier which links this space to an external service.No
sortOrderA number indicating the location's sort position.No
polygonsAn array containing map and id, representing the floor ID and space ID where the location exists.Yes
nodesAn array containing map and id, representing the floor ID and node ID where the location exists.Yes
descriptionA string containing the location's description.No
logoA string that contains image urls for the logo of the location.Yes
phoneAn object that contains the phone numbers of the locationYes
showFloatingLabelWhenImagePresentAn boolean representing whether floating labels should be shown.No
statesAn object containing strings of type, start and end that contain temporary closure information for the location.Yes
socialAn object that contains social media urls of the locationYes
tagsAn array of strings containing tags for the location that could be used when searching or filtering.yes
operationHoursAn array of objects that contain the hours of operation of the location.Yes
galleryAn array of URLs to gallery images.Yes

Extensions

Extensions are additional data models which describe how an MVF should be rendered and other properties not essential to the building geometry. Extensions are Annotation, Shapes, ShapeInstances, Styles, Polygons, LineStrings and Window.

Annotation

annotation/m_*.geojson

PropertyDescriptionOptional
idA unique string identifier beginning with a_.No
symbolIdA string identifier for the annotation symbol to be displayed.No

Floor Images

floorImages/f_*.json

The floor images files contain a list of images to be drawn on spaces. The filename will match the ID of the floor its images belong to. The images are organized in the JSON file as an array of features, which contain a Point with the image's latitude and longitude coordinates. They also contain a properties field that contains the following data.

Floor Images Properties

PropertyDescriptionOptional
anchorIdA string containing the id of the space the image should be anchored to.No
rotationA number containing the degrees the image should be rotated.No
pathA string containing a URL to the image.No
widthA number containing the width of the image.No
heightA number containing the height of the image.No

Shapes

shapes.json

For future use, not currently used.

PropertyDescriptionOptional
geometryAn array of number tuples for each vertex in a local coordinate system, measured in metres.No
altitudeA number indicating how far off the "ground" the shape is, in metres.No
heightA number indicating the height of the shape, in metres.No

ShapeInstances

shapeInstances/m_*.json

For future use, not currently used.

PropertyDescriptionOptional
idA unique string identifier beginning with sh_.No
materialAn object describing the appearance of this shape instance. See Material.No

Styles

styles.json

Styles are non-essential properties which describe how the GeoJSON geometry should be rendered. The style.json file contains key-value pairs of styles. The key is a user-defined string and can be any value. The value is an object containing properties depending on the GeoJSON type.

Default

These style properties are available for all GeoJSON types.

PropertyDescriptionOptional
altitudeA number indicating how far off the "ground" the objects belonging to this layer should be drawn, in metres.No
colorA string containing a hex code beginning with #.No
heightA number indicating the height of the objects belonging to this layer, in metres.No
opacityA number between 0 and 1 indicating the opaqueness of objects belonging to this layer.No

Polygons

These style properties apply only to GeoJSON Polygons.

PropertyDescriptionOptional
polygonsA string array of obstruction or space identifiers which this style applies to.No

LineStrings

These style properties apply only to GeoJSON LineStrings.

PropertyDescriptionOptional
widthA number indicating how far off the "ground" the objects belonging to this layer should be drawn, in metres.No
lineStringsA string array of entrance, obstruction, or space identifiers which this style applies to.No

Window

window/m_*.geojson

A window is a non-traversable cutout in an wall, meaning a path will never be created through a window. Windows are represented in FeatureCollections of GeoJSON LineStrings. They are split up by floor ID within the window directory.

PropertyDescriptionOptional
idA unique string identifier beginning with w_.No

Additional Data Types

Additional data types provide further information about a map. They are made up of Details, Neighbor, Material and Texture.

Details

Additional information about a given entity.

PropertyDescriptionOptional
nameName of the entity.Yes
descriptionDescription of the entity.Yes
linksAn array of objects containing properties url and optional displayName.Yes
imagesAn array of objects containing properties url and optional altText.Yes

Neighbor

A traversable node neighbour.

PropertyDescriptionOptional
flagsA string containing special properties for this node.No
idThe string identifier of the node.No
weightThe cost of navigating to this node. Minimum is 0.Yes

Material

The color and/or texture that should be applied to an instance of a Shape.

PropertyDescriptionOptional
colorA string containing a hex code beginning with #.Yes
textureAn object describing the texture properties of the material. See Texture.Yes

Texture

A reference to an image texture and how it should be applied to a component.

PropertyDescriptionOptional
pathThe path to this asset, relative to the MVF's images folder.No
repeatAn object describing how the texture should be placed on a component. Its properties are a number u and a number v.Yes