Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Overview

The Mapbox vector tile specification provides structure for including data values as properties associated with a feature, but no mechanism for interpreting the meaning or intended use.  As such, GIBS has developed a specification for defining each property contained within MVTs in its vector products. Each vector product has an associated JSON vector metadata file which provides the following information:

  • A unique identifier for the property, as found in the MVT data itself
  • Descriptive information such as a title, description, and the function of the property (e.g. identification vs styling)
  • The data type and optional units for the property
  • Valid values for the property
  • Additional flags for improved UI experience (e.g. "is this optional")


Specification

Note

Insert link to JSON schema when it's available via link. For how, it's attached here.

The following table outlines the fields in the GIBS vector metadata specification.  

NameDescriptionTypeRequired?Sample Value
IdentifierThe unique identifier of the MVT property.String(tick)FRP
TitleA human readable title for the property.String(tick)Fire Radiative Power
DescriptionA human readable description for the property.String(tick)A measure of the rate of radiant heat output from a fire.
UnitsThe units value to be applied to the actual value of this property.String(error)MW
DataTypeThe data type of this property. Possible values include intfloatstring, or datetime.Enumeration(tick)float
ValueListA listing of the possible valid values for a 'string' property type, if the property has a controlled list.Array


(question)

Only one may be used 

[ "Lake Ice", "Sea Ice", "Not Ice" ]
ValueRangesA listing of mutually exclusive min and max value pairs representing ranges of valid values for the 'Integer', 'float', and 'datetime' property types.Array of Objects[ { "Min": 0, "Max": 99999999 } ]
ValueMapA map of the possible valid values for 'string' or 'int' property types, and their associated description.  This facilitates a key-value lookup table allowing for a simplified property value (i.e. the ‘key’).Object{ 10 : “Processed Fire Pixel”,    20 : “Saturated Fire Pixel” }
Function

The property’s intended function as a part of the visualization product. Possible values include:

  • Identify - Properties that form a “primary key” to identify the visualization product. Often these are used used during processing to separate data points into separate layers (e.g. Platform and Day/Night).  These properties typically would also be in the associated layer metadata (e.g. Platform or Version) and embedded in the layer identifier (e.g. MODIS_Terra_Day_Fires).
  • Style - Properties that are utilized for styling or filtering vector features.  These will typically be included in the default style(s) offered through WMS or the Mapbox Style JSONs. 
  • Describe - Properties that provide additional information regarding the vector feature (e.g. Acquisition Time or Inclination Angle).  They may be useful for tooltip presentation to users.
Enumeration(tick)Describe
IsOptionalIndicates whether the property is optional.Boolean(tick)true
IsLabelIndicates whether the property should be used to label the point in a user interface.Boolean(tick)true

The All vector metadata file are validated against the following "business logic" rules are applied : rules that extend beyond the basic individual property constraints.

  1. A single, non-optional, property will be identified as the "label".
  2. A single, non-optional, property will have the "Identify" function, which acts as the primary key for properties.
  3. Properties are uniquely identified by their Identifier field.
  4. Items in the ValueList are unique.
  5. ValueRange is only supported for properties with a DataType of "int", "float", or "datetime."
  6. ValueRange is only supported for properties with a DataType of "int" or "string.


Sample Content

vector metadata file is a list of content blocks defining each property. The following snippet shows an example of a single property's definition within the vector metadata file.

Code Block
languageyml
titleMVT Property Snippet
    {
      "Identifier" : "NumReactor",
      "Title"      : "Number of Reactors",
      "Description": "Number of Active Reactors at a given Plant",
      "Units"      : "Reactors",
      "DataType"   : "int",
      "ValueRanges": [ { "Min": 1, "Max": 9 } ],
      "Function"   : "Style",
      "IsOptional" : false,
      "IsLabel"    : false
    }

The following block provides a full example of a vector metadata file.

Code Block
languageyml
titleSample Vector Metadata File
collapsetrue
{
  "id": "Nuclear_Power_Plant_Locations",
  "mvt_properties": [

    {
      "Identifier" : "Plant",
      "Title"      : "Plant Site Name",
      "Description": "Name of Nuclear Plant",
      "DataType"   : "string",
      "Function"   : "Identify",
      "IsOptional" : false,
      "IsLabel"    : true
    },

    {
      "Identifier" : "NumReactor",
      "Title"      : "Number of Reactors",
      "Description": "Number of Active Reactors at a given Plant",
      "Units"      : "Reactors",
      "DataType"   : "int",
      "ValueRanges": [ { "Min": 1, "Max": 9 } ],
      "Function"   : "Style",
      "IsOptional" : false,
      "IsLabel"    : false
    },

    {
      "Identifier" : "p10_30",
      "Title"      : "Population within 30km (2010)",
      "Description": "Total population within a 30km radius of the nuclear plant (2010)",
      "Units"      : "Persons",
      "DataType"   : "int",
      "ValueRanges": [ { "Min": 275, "Max": 7170590 } ],
      "Function"   : "Describe",
      "IsOptional" : false,
      "IsLabel"    : false
    }
}

Hide comments