Candidate SWG Draft

OGC Engineering Report

Releasable Basemap Tiles in GeoPackage Engineering Report
Jérôme Jacovella-St-Louis Editor
Version: 1.0.0
Additional Formats: XML PDF
OGC Engineering Report

Candidate SWG Draft

Document number:24-010
Document type:OGC Engineering Report
Document subtype:
Document stage:Candidate SWG Draft
Document language:English

License Agreement

Use of this document is subject to the license agreement at https://www.ogc.org/license




I.  Abstract

This Engineering Report describes an extension for storing Releasable Basemap Tiles (RBT) in GeoPackage developed during an OGC Code Sprint initiative sponsored by the US Army Geospatial Center (AGC) which took place in March 2024. During this initiative, participants Ecere Corporation, Compusult Limited and TechMaven Geospatial, assembled into this single extension document draft extensions developed in previous OGC initiatives for storing vector tiles, semantic annotations and portrayal styles in GeoPackages. Minor updates and clarifications to the requirements of these draft extensions were made based on additional experimentation performed during the sprint. Additional requirements and recommendations were also introduced for this extension, including requirements specific to RBT content, a recommendation to include fonts used by styles, requirements to support compressed vector tiles, as well as requirements further restricting how to store vector tiles in the context of this extension to improve interoperability.

II.  Keywords

The following are keywords to be used by search engines and document catalogues.

ogcdoc, OGC document, GeoPackage, Vector Tiles, RBT, Basemap


III.  Preface

This Engineering Report describes an extension for storing Releasable Basemap Tiles (RBT) in GeoPackage developed during an OGC Code Sprint initiative sponsored by the US Army Geospatial Center (AGC) which took place in March 2024. The participants in this initiative included Ecere Corporation, Compusult Limited and TechMaven Geospatial.

This extension was written with the intent to be adapted into a National System for Geospatial Intelligence (NSG) standard.

This RBT GeoPackage extension was assembled from multiple draft GeoPackage extensions developed in previous OGC initiatives including the Vector Tile Pilots (Phase 1+extension and Phase2), Testbed 15 and Testbed 16, which at the time of the initiative, had not yet been adopted as OGC standards. These extensions had been developed primarily by Image Matters LLC, in collaboration with the other participants of these initiatives, which performed several Technology Integration Experiments to validate interoperability across implementations from different technology vendors. In addition to a significant re-organization of the content, minor changes and clarifications were made to the technical details (such as some of the SQLite tables) sourced from these extensions as part of this initiative.

Since these different source draft specifications may still eventually evolve into multiple approved OGC standards and conformance classes, this specification maintains a separation into conceptual classes of requirements so as to facilitate maintaining the alignment of these individual extensions with this candidate NSG standard during further OGC standardization efforts.

For the purpose of improving interoperability, this extension defines additional requirements, beyond what would be specified in these more general and flexible OGC GeoPackage extensions, which further restrict the nature and encoding of content stored in an RBT GeoPackage.

From the perspective of this RBT extension, the entirety of this document describes a single GeoPackage extension and requirements class, consisting of mandatory requirements and optional recommendations.

An annex of this report includes details of the implementation by participants of both producers and consumers (viewers) for RBT content stored in GeoPackages using this extension. The annex also presents challenges and lessons learned during the initiative. Participants produced GeoPackages from RBT content and portrayal information provided by AGC as Mapbox Vector Tiles and TileJSON stored in MBTiles, as well as Mapbox / MapLibre styles. Participants also performed Technology Integration Experiments testing consumption of RBT GeoPackages produced by the other implementations. An additional annex defines an Abstract Test Suite for the extension, and another annex provides suggestions for future related work.

IV.  Submitting Organizations

The following organizations submitted this Document to the Open Geospatial Consortium (OGC):

  • US Army Geospatial Center (AGC)
  • Ecere Corporation
  • Compusult Limited
  • TechMaven Geospatial

V.  Contributors

The following individuals contributed to this draft specification Engineering Report:

NameAffiliationOGC member
Jeff Harrison (sponsor)U.S. Army Geospatial CenterYes
Jérôme Jacovella-St-Louis (editor)Ecere CorporationYes
Adam ParsonsCompusult LimitedYes
Jordan BessTech Maven GeospatialYes

In addition, the specification defined in this Engineering Report builds upon the work of previous previous initiatives such as the Vector Tile Pilots to which others contributed, in particular Jeff Yutzler, Image Matters LLC.

VI.  Security Considerations

No security considerations have been made for this Standard.

1.  Scope

This Engineering Report describes an extension for storing Releasable Basemap Tiles (RBT) in GeoPackage developed during an OGC Code Sprint initiative.

This extension regroups requirements specific to storing RBT data products in GeoPackages, requirements for storing vector tiles in GeoPackages, requirements for defining semantic annotations in GeoPackages, as well as requirements to include portrayal information in GeoPackages.

In addition to the extension itself, this Engineering Report includes details of three implementations developed during the code sprint, including Technology Integration Experiments demonstrating interoperability between them.

2.  Conformance

This extension defines of a single mandatory conformance class, but is broken down into conceptual requirement classes which may eventually correspond to individual standardized OGC GeoPackage extensions.

The requirements apply to either of these two standardization target types:

  • data products,

  • software producing such data products.

Conformance with this extension shall be checked using all the relevant tests specified in Annex A (normative) of this document. The framework, concepts, and methodology for testing, and the criteria to be achieved to claim conformance are specified in the NSG Compliance Testing Policies and Procedures and the NSG Compliance Testing web site.

In order to conform to this candidate NSG data product standard, a software implementation producing a compliant data product shall implement the core requirement classes defined in this extension.

All requirements-classes and conformance-classes described in this document are owned by the standard(s) identified.

3.  Normative references

The following documents are referred to in the text in such a way that some or all of their content constitutes requirements of this document. For dated references, only the edition cited applies. For undated references, the latest edition of the referenced document (including any amendments) applies.

Jeff Yutzler: OGC 12-128r19, OGC® GeoPackage Encoding Standard. Open Geospatial Consortium (2024). http://www.opengis.net/doc/IS/geopackage/1.4.0.

Joan Masó, Jérôme Jacovella-St-Louis: OGC 17-083r4, OGC Two Dimensional Tile Matrix Set and Tile Set Metadata. Open Geospatial Consortium (2022). http://www.opengis.net/doc/IS/tms/2.0.0.

4.  Terms and definitions

This document uses the terms defined in OGC Policy Directive 49, which is based on the ISO/IEC Directives, Part 2, Rules for the structure and drafting of International Standards. In particular, the word “shall” (not “must”) is the verb form used to indicate a requirement to be strictly followed to conform to this document and OGC documents do not use the equivalent phrases in the ISO/IEC Directives, Part 2.

This document also uses terms defined in the OGC Standard for Modular specifications (OGC 08-131r3), also known as the ‘ModSpec’. The definitions of terms such as standard, specification, requirement, and conformance test are provided in the ModSpec.

For the purposes of this document, the following additional terms and definitions apply.

tiling scheme consisting of a set of tile matrices defined at different scales covering approximately the same area and having a common coordinate reference system.

[SOURCE: OGC 17-083r4]

a URI identifying a class of geospatial data whose component data layers conform to a particular logical schema

A registry of geodataclasses would ideally resolve these URIs to metadata including these schemas. A geodataclass serves multiple purposes, including the ability to easily identify, using a simple identifier comparison, relevant datasets for a particular purpose, the compatibility of datasets as inputs for processes, the compatibility of the output of a process with the input of another process, as well as the compatibility of portrayal style information with a particular dataset (see also https://github.com/opengeospatial/styles-and-symbology/issues/12).

a specification developed by Mapbox for encoding tiled vector data using protocol buffers.

tilesets of foundational geospatial data developed by the US Army Geospatial Center for public release, including vector tilesets of cultural and physical features, hillshaded elevation data and optional imagery

experiments performed between different implementations of a specification or standard to test and demonstrate interoperability between them, and in the case of TIEs performed in the context of an initiative to validate a draft specification or standard, to validate the soundness and completeness of the requirements specified therein

5.  Overview

This Engineering Report describes an extension for storing Releasable Basemap Tiles (RBT) in GeoPackage developed during the March 2024 OGC Code Sprint initiative sponsored by the US Army Geospatial Center (AGC).

The report is organized into four main sections:

and three annexes:

6.  Releasable Basemap Tiles GeoPackage Extension

6.1.  Extension definition

6.1.1.  Introduction

The Releasable Basemap Tiles GeoPackage extension defines the requirements for GeoPackage distribution of Releasable Basemap Tiles.

The extension defines how to efficiently store tilesets of foundational geospatial data in GeoPackages (“Releasable Basemap Tiles”).

This foundational data to be contained in these GeoPackage distribution consists of two vector tilesets for physical and cultural features, and one map tileset of a pre-rendered hillshaded digital elevation model. The extension also defines two optional types of map tilesets that may be included for global imagery and/or for high-resolution imagery of select cities in unified combatant command (COCOM) areas of responsibility.

These tilesets are required to be using the WorldMercatorWGS84Quad 2D Tile Matrix Set, defined in the EPSG:3395 coordinate reference system.

This 2D Tile Matrix Set is not to be confused with the WebMercatorQuad 2D Tile Matrix Set based on the spherical Web Mercator projection (EPSG:3857), which is ubiquitous in Web mapping applications, but is not fully conformal. In Web Mercator, the angles between lines on the Earth surface are not preserved exactly on the map. Unlike Web Mercator, the world Mercator projection is a fully conformal map projection, preserving directions, angles, and shapes.

This extension, like all GeoPackage extensions, is intended to be transparent and to not interfere with GeoPackage-compliant software packages that do not support the extension. However, these software pacakges may not recognize the vector data encoded using the new vector tiles data type defined in this extension.

6.1.2.  Extension Name

The name of this GeoPackage extension (to be used in the extension_name field of the gpkg_extensions table) is nsg_rbt.

Since this extension re-defines several requirements shared with other existing draft extensions which may eventually become OGC standards, conformance to and use of these other individual extensions could also be declared in the gpkg_extensions for the same SQLite tables, as long as the requirements remain aligned with those defined herein.

6.1.3.  Extension Type

This extension provides new requirements dependent on GeoPackage Clause 2.2 (tiles).

6.1.4.  Applicability

This extension defines specific classes of tiled raster and vector data to be encoded within GeoPackages (using Mapbox Vector Tiles), together with associated styles and symbology resources, for the purpose of serving as basemaps for a wide variety of operational systems.

6.1.5.  Scope

read-write

6.1.6.  Releasable Basemap Tiles

Requirements class 1

Target typeData Product
Prerequisiteshttp://www.geopackage.org/spec140/#tiles
http://www.geopackage.org/spec140/#extension_mechanism
Labelhttps://fgs-dps.gs.mil/#rbt/req

The extension consists of a single mandatory conformance class, but is broken down into conceptual classes of requirements organized in different sections, which may eventually correspond to individual standardized OGC GeoPackage extensions and/or requirement classes.

Requirement 1

Identifier/req/rbt/extensions
Statement

For declaring extended GeoPackage tables

A

GeoPackages this extension SHALL include the entries listed in Table 1 in the gpkg_extensions table.

Table 1 — gpkg_extensions Table Rows

table_namecolumn_nameextension_namedefinitionscope
tile pyramid user data table nametile_datansg_rbtOGC 24-010read-write
gpkgext_content_typesNULLnsg_rbtOGC 24-010read-write
gpkgext_semantic_annotationsNULLnsg_rbtOGC 24-010read-write
gpkgext_sa_referenceNULLnsg_rbtOGC 24-010read-write
gpkgext_vt_layersNULLnsg_rbtOGC 24-010read-write
gpkgext_vt_fieldsNULLnsg_rbtOGC 24-010read-write
gpkgext_stylesNULLnsg_rbtOGC 24-010read-write
gpkgext_stylesheetsNULLnsg_rbtOGC 24-010read-write
gpkgext_symbolsNULLnsg_rbtOGC 24-010read-write
gpkgext_symbol_imagesNULLnsg_rbtOGC 24-010read-write
gpkgext_symbol_contentNULLnsg_rbtOGC 24-010read-write
gpkgext_fontsNULLnsg_rbtOGC 24-010read-write

See Figure B.24 for an implementation example.

NOTE 1:    Once this extension is published as an NSG standard, the values in the definition column SHALL refer to the permanent link to that standard. Until then, the definition SHOULD reference this engineering report using its OGC document number (OGC 24-010), or using the URL to the Engineering Report once the ER is published.

NOTE 2:    As described in the Future Work section of this Engineering Report, there is a possibility that the NSG standard be defined as a profile of official OGC GeoPackage extensions. In this case, the extension_name and definition columns would then refer to those defined in these extensions rather than nsg_rbt.

The following requirements pertains to the inclusion of specific content encoded in a specific manner in an RBT GeoPackage.

Requirement 2

Identifier/req/rbt/geodataclasses
Statement

For associating tilesets with a GeoDataClass

A

All required and optional tilesets in an RBT GeoPackage SHALL be identified with their respective GeoDataClass URI using a GeoDataClass semantic annotation (/req/rbt/semantic-annotations) associated with its corresponding gpkg_contents entry, as well as all of its corresponding gpkgext_vt_layers entries (for vector tilesets).

See Clause 8 for details on how to define semantic annotations.

See Figure B.22 and Figure B.23 for an implementation example of the gpkgext_semantic_annotations and gpkgext_sa_reference tables for defining RBT GeoDataClass semantic annotations.

Requirement 3

Identifier/req/rbt/world-mercator
Statement

For defining the 2D Tile Matrix Set of the tilesets

A

All required and optional tilesets in an RBT GeoPackage SHALL be tiled according to the http://www.opengis.net/def/tilematrixset/OGC/1.0/WorldMercatorWGS84Quad 2D Tile Matrix Set, which is based on the EPSG:3395 world Mercator coordinate reference system.

See Figure B.5 and Figure B.6 for an implementation example of the gpkg_tile_matrix_set and gpkg_tile_matrix tables for World Mercator.

Permission 1

Identifier/per/rbt/polar-tilesets
Statement

For supporting polar regions

A

For every class of required and optional tileset, an RBT GeoPackage MAY include a corresponding tileset using the http://www.opengis.net/def/tilematrixset/OGC/1.0/UPSArcticWGS84Quad (EPSG:5041) and/or the http://www.opengis.net/def/tilematrixset/OGC/1.0/UPSAntarcticWGS84Quad (EPSG:5042) 2D Tile Matrix Set, for polar regions (beyond ±~85° of latitude) outside the bounds where WorldMercatorQuad tilesets are applicable. These tilesets would be identified using the same GeoDataClass as their corresponding world Mercator tilesets.

Requirement 4

Identifier/req/rbt/map-tiles
Statement

For defining how map tiles are encoded

A

All required (hillshaded digital elevation model) and optional (imagery) map tilesets in an RBT GeoPackage SHALL be encoded in separate tables using the tiles (/opt/tiles) data_type, without any additional content encoding (compression) applied.

B

All required (hillshaded DEM) and optional (imagery) map tilsets SHALL be identified as JPEG and/or PNG as applicable, using entries in the gpkgext_content_types table (/req/rbt/content-types) specifying the image/jpeg and/or image/png media type and a NULL encoding.

C

All optional imagery tilesets SHALL be encoded as JPEG and/or PNG.

D

The required hillshaded digital elevation model tilesets SHALL be encoded as PNG (required for translucent shadows).

Requirement 5

Identifier/req/rbt/physical-cultural-features
Statement

For encoding physical and cultural features

A

An RBT GeoPackage SHALL include a multi-layer vector tileset representing physical features, identified using the GeoDataClass http://www.opengis.net/def/geodataclass/NSG/0/rbt-physical.

B

An RBT GeoPackage SHALL include a multi-layer vector tileset representing cultural features, identified using the GeoDataClass http://www.opengis.net/def/geodataclass/NSG/0/rbt-cultural.

C

The physical and cultural vector features in an RBT GeoPackage SHALL be encoded as gzip’ed Mapbox Vector Tiles (/req/rbt/mapbox-vector-tiles) in separate tables using the vector-tiles (/req/rbt/vector-tiles) data_type.

D

The content of the cultural and physical vector features tables SHALL be identified as gzip’ed Mapbox Vector Tiles using entries in the gpkgext_content_types table (/req/rbt/content-types) specifying the application/vnd.mapbox-vector-tile media type and gzip encoding.

E

The attributes (feature properties) for both the physical and cultural features SHALL be embedded within the Mapbox Vector Tiles.

See Clause 7 for details on how to include vector tilesets.

WARNING

Since a registry of GeoDataClasses was not yet set up on the OGC definition server at the time of publishing this Engineering Report, the proposed RBT GeoDataClass URIs defined in this requirement class and used for the RBT GeoPackages produced by the participants are provisionary and are not resolvable. See also the Styling section about the possibility to use these GeoDataClasses in the url field of MapboxGL style sources, which would rely on the ability of the definition server to return a Mapbox TileJSON representation of the schemas associated with a GeoDataClass at these GeoDataClass end-points.

Requirement 6

Identifier/req/rbt/hillshade
Statement

For encoding a hillshaded digital elevation model

A

An RBT GeoPackage SHALL include a pre-rendered map tileset, in a monochrome translucent hillshaded style, of a digital elevation model, identified using the GeoDataClass http://www.opengis.net/def/geodataclass/NSG/0/rbt-hillshade.

See Figure B.4 for an implementation example of the gpkg_contents table for RBT content.

Permission 2

Identifier/per/rbt/gridded-data
Statement

For encoding the source digital elevation model

A

The source digital elevation model used to generate the hillshaded tileset MAY be encoded using the OGC GeoPackage Extension for Tiled Gridded Coverage Data as a separate tileset using the data_type: 2d-gridded-coverage, identified using the geodataclass http://www.opengis.net/def/geodataclass/NSG/0/rbt-dem.

Permission 3

Identifier/per/rbt/imagery
Statement

For encoding imagery

A

An RBT GeoPackage MAY include an imagery tileset using the GeoDataClass http://www.opengis.net/def/geodataclass/NSG/0/rbt-imagery.

B

An RBT GeoPackage MAY include a tileset for high-resolution imagery of select cities in unified combatant command (COCOM) areas of responsibility identified using the GeoDataClass http://www.opengis.net/def/geodataclass/NSG/0/rbt-cocom.

Requirement 7

Identifier/req/rbt/included-styles
Statement

For including portrayal information

A

An RBT GeoPackage SHALL include at least one style (/req/rbt/styles) including at minimum a MapboxGL style sheet (/req/rbt/mapboxgl-style).

B

Any style sheet included in an RBT GeoPackage SHALL at minimum define how to portray the physical and cultural vector tilesets.

C

All image resources used within the included styles SHALL be included within the GeoPackage at minimum as a sprite sheet, where multiple images of a particular style sheet are contained within a single gpkgext_symbol_content entry and the sprite property of the MapboxGL style reference that content entry by its uri (additional gpkgext_symbol_images entries for different resolutions and/or for individually cut images may also be included).

See Clause 9 for details on how to include styles.

WARNING

As mentioned for the physical and cultural tilesets in the above warning, the GeoDataClass URIs specified for the hillshade, elevation model and imagery are also provisionary.

Recommendation 1

Identifier/rec/rbt/included-fonts
Statement

For including fonts used in styles

A

An RBT GeoPackage SHOULD include all fonts (/req/rbt/fonts) used by the styles it contains in TrueType and/or OpenType formats, if their size is negligible compared to the size of the GeoPackage as a whole, or if the GeoPackage is intended for offline use and the target recipent does not already have these resources otherwise pre-installed on their system.

B

An RBT GeoPackage SHOULD include all fonts (/req/rbt/fonts) used by the styles it contains in zipped protobuf ranges of signed distanced field glyphs (as returned by the Mapbox Fonts API), if their size is negligible compared to the size of the GeoPackage as a whole, or if the GeoPackage is intended for offline use and the target recipent does not already have these resources otherwise pre-installed on their system.

See Requirement 20: /req/rbt/fonts for details on how to include fonts.

The subsequent sections define additional requirements, considered part of this same extension, pertaining to how vector tilesets are encoded in the GeoPackage using Mapbox Vector Tiles, how styles used to portray both raster and vector data are included in the GeoPackage, and how semantic annotations are defined, in order to identify the GeoDataClass of tilesets and associate styles to the tilesets.

7.  Vector Tiles

7.1.  Vector Tiles Requirements

7.1.1.  Introduction

These requirements define how to encode tiled feature data (commonly known as vector tiles) in a GeoPackage data store.

For vector tilesets, all of the Tiles Option applies.

Requirement 8

Identifier/req/rbt/vector-tiles
Statement

For defining how vector tiles are encoded

A

Vector tilesets SHALL be stored in a GeoPackage with individual tiles stored in the tile_data blob of a tile pyramid user data table.

B

The data_type of a vector tileset entry in the gpkg_contents table SHALL be vector-tiles.

C

The Coordinate Reference System (SRS) specified for a vector tileset in the gpkg_spatial_ref_sys (see clause 1.1.2 in the core GeoPackage standard) SHALL be compatible (see 2DTMS 6.2.1.1. TileMatrixSet CRS Compatibility) with the Coordinate Reference System of the 2D Tile Matrix Set definition for that tileset.

CREATE TABLE tiles_physical(
   id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
   zoom_level INTEGER NOT NULL,
   tile_column INTEGER NOT NULL,
   tile_row INTEGER NOT NULL,
   tile_data BLOB NOT NULL,
   UNIQUE (zoom_level, tile_column, tile_row)
)

Listing 1 — Example SQL statement for creating a user-defined table storing vector tiles

See Figure B.8 for an implementation example of a user-defined vector tiles table.

There are two additional required metadata tables for vector tiles, gpkgext_vt_layers and gpkgext_vt_fields, that mirror the vector_layers key from the JSON object from the metadata from MBTiles. This allows client software to understand the feature schemas without having to open individual tiles. As with other GeoPackage tables, this extension takes no position on how either of these tables are to be used by a client.

Requirement 9

Identifier/req/rbt/vector-tiles-layers
Statement

For describing the layers contained in vector tilesets

A

GeoPackage containing vector tiles SHALL include a gpkgext_vt_layers table describing the layers in a vector tile set. The columns in this table are:

  • id, the primary key

  • table_name, which matches the entry in gpkg_contents

  • name, the layer name

  • description, an optional text description

  • minzoom and maxzoom, the optional integer minimum and maximum zoom levels

  • attributes_table_name, the optional name of an attributes table containing the attributes (when encoding attributes into a separate attributes tables rather than embedding them in the vector tiles — should be NULL for this RBT extension)

  • geometry_dimension, the dimension of the geometry found in the layer (NULL: unknown/mixed, 0: Point/MultiPoint, 1: LineString/MultiLineString, 2: Polygon/MultiPolygon)



CREATE TABLE gpkgext_vt_layers (
   id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
   table_name TEXT NOT NULL REFERENCES gpkg_contents (table_name),
   name TEXT NOT NULL,
   description TEXT,
   minzoom INTEGER,
   maxzoom INTEGER,
   attributes_table_name TEXT,
   geometry_dimension INTEGER
)

Listing 2 — Example SQL statement for creating the gpkgext_vt_layers table

See Figure B.11 for an implementation example of the gpkgext_vt_layers table.

Requirement 10

Identifier/req/rbt/vector-tiles-fields
Statement

For describing the fields contained in vector tilesets

A

GeoPackage containing vector tiles SHALL include a gpkgext_vt_fields table describing the fields (attributes) for a tiled feature data layer. The columns in this table are:

  • id, the primary key

  • layer_id, a foreign key to id in gpkgext_vt_layers

  • name, the field name

  • type, either “String”, “Number”, or “Boolean”



CREATE TABLE gpkgext_vt_fields (
   id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
   layer_id INTEGER REFERENCES gpkgext_vt_layers,
   name TEXT NOT NULL,
   type TEXT
)

Listing 3 — Example SQL statement for creating the gpkgext_vt_fields table

See Figure B.12 for an implementation example of the gpkgext_vt_fields table.

Requirement 11

Identifier/req/rbt/content-types
Statement

For specifying the media types and content encoding of user data tables

A

The GeoPackage SHALL include a gpkgext_content_types table identifying the media type containing the following columns:

  • content_id, a foreign key to the corresponding entry in the gpkg_contents

  • media_type, text indicating a media type used in the tile_data blobs of the corresponding tile pyramid user data table (e.g., image/png or application/vnd.mapbox-vector-tile)

  • encoding, the content encoding (e.g., deflate or gzip compression), NULL if no additional encoding is used for the same tile_data blobs



CREATE TABLE gpkgext_content_types (
   content_id INTEGER REFERENCES gpkg_contents,
   media_type TEXT,
   encoding TEXT
)

Listing 4 — Example SQL statement for creating the gpkgext_content_types table

NOTE:    Multiple entries for the same content_id indicate that multiple data media types can be found in the corresponding tiles table (e.g., JPEG and PNG).

7.2.  Mapbox Vector Tiles Encoding Requirements

These requirements define how to encode vector tiles in a GeoPackage data store using the Mapbox Vector Tiles (MVT) specification version 2.1, based on Google Protocol Buffers for encoding the data of each tile.

Requirement 12

Identifier/req/rbt/mapbox-vector-tiles
Statement

For describing how tiles are encoded using Mapbox Vector Tiles

A

Tilesets encoded using Mapbox Vector Tiles SHALL be stored as blobs in the tile_data fields of user-defined tiles tables.

B

The tile_data blobs SHALL be encoded Google Protocol Buffers (PBF) using the schema defined for MVT.

C

If an encoding such as gzip or deflate is specified in the gpkgext_content_types table, the PBF blob SHALL have this additional encoding applied.

Recommendation 2

Identifier/rec/rbt/mvt-id
Statement

For specifying a unique feature ID

A

Features contained in Mapbox Vector Tiles contained in a GeoPackage vector tileset SHOULD make use of the MVT id field to store a persistent numeric identifier uniquely identifying a particular feature of the parent layer. This enables client to recognize features across tile boundaries (for example, to reconstruct the original features) without resorting to attribute comparison, which might not be accurate.

8.  Semantic Annotations

8.1.  Semantic Annotations Requirements

A semantic annotation is a semantically grounded term that can be applied to another concept. These requirements define how semantic annotations can be applied to any business object in the current GeoPackage (layers, features, tiles, styles, etc.).

Requirement 13

Identifier/req/rbt/semantic-annotations
Statement

For defining semantic annotations

A

A semantic annotation SHALL be defined as an entry in a gpkgext_semantic_annotations table with the following columns

  • id, the a primary key

  • type, a semantically grounded type (category) for the annotation

  • title, a human-readable title for the annotation

  • description, an optional human-readable text description for the annotation

  • uri, the resolvable URI for the semantic concept



CREATE TABLE gpkgext_semantic_annotations (
   id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
   type TEXT NOT NULL, title TEXT NOT NULL,
   description TEXT,
   uri TEXT
)

Listing 5 — Example SQL statement for creating the gpkgext_semantic_annotations table

See Figure B.22 for an implementation example of the gpkgext_semantic_annotations table.

NOTE 1:    This RBT extension relies on semantic annotations for the association of both tilesets and styles to a GeoDataClass type of semantic annotation.

Requirement 14

Identifier/req/rbt/sa-reference
Statement

For associating semantic annotations

A

Associating a particular business object with a semantic annotation SHALL be done by adding an entry to a gpkgext_sa_reference table with the following columns:

  • table_name, the name of the table containing the business object

  • key_column_name, the name of the integer column in the specified table that acts as a key; if no such column exists, rowid can be used

  • key_value, the value of the key column that uniquely identifies the row

  • sa_id, a foreign key to gpkgext_semantic_annotations



CREATE TABLE gpkgext_sa_reference (
   table_name TEXT NOT NULL,
   key_column_name TEXT NOT NULL,
   key_value INTEGER NOT NULL,
   sa_id INTEGER NOT NULL REFERENCES gpkgext_semantic_annotations,
   UNIQUE(table_name, key_column_name, key_value, sa_id)
)

Listing 6 — Example SQL statement for creating the gpkgext_sa_reference table

See Figure B.23 for an implementation example of the gpkgext_sa_reference table.

NOTE 2:    There can be a many-to-many mapping between business object rows and semantic annotations.

9.  Styling

9.1.  Styling Requirements

These requirements provide a mechanism to include the style sheets, symbols and fonts needed to portray the data stored in a GeoPackage in one or more style, as intended by the producer.

Requirement 15

Identifier/req/rbt/styles
Statement

For defining styles

A

Styles to portray the data in a GeoPackage SHALL be defined as entries in the gpkgext_styles table containing the following column:

  • id, a primary key

  • style, text naming a specific style

  • description, an optional text description

  • uri, a resolvable URI



CREATE TABLE gpkgext_styles (
   id INTEGER PRIMARY KEY,
   style TEXT NOT NULL,
   description TEXT,
   uri TEXT,
   UNIQUE(uri)
)

Listing 7 — Example SQL statement for creating the gpkgext_styles table

See Figure B.13 for an implementation example of the gpkgext_styles table.

Recommendation 3

Identifier/rec/rbt/styles-uris
Statement

Guidance on style URIs

A

Where possible, style URIs SHOULD resolve to a network-accessible resource.

B

When that is not possible, style URIs SHOULD be unique.

C

If no existing URI scheme is available, a style URI SHOULD take the form of: gpkgstyle::[geodataclass]::[org]::[style]

Requirement 16

Identifier/req/rbt/style-sheets
Statement

For encoding style sheets

A

Style sheets, a list of styling rules encoded in a particular styling language, corresponding to a particular style SHALL be defined as entries in the gpkgext_stylesheets table containing the following column:

  • id, a primary key

  • style_id, a foreign key to gpkgext_styles

  • format, the format of the stylesheet (e.g., mbstyle or sld)

  • stylesheet, the actual stylesheet BLOB (since some stylesheets are binary)



CREATE TABLE gpkgext_stylesheets (
   id INTEGER PRIMARY KEY,
   style_id INTEGER REFERENCES gpkgext_styles,
   format TEXT NOT NULL,
   stylesheet BLOB NOT NULL,
   UNIQUE(style_id, format)
)

Listing 8 — Example SQL statement for creating the gpkgext_stylesheets table

See Figure B.14 for an implementation example of the gpkgext_stylesheets table.

Requirement 17

Identifier/req/rbt/symbols
Statement

For defining symbols

A

Symbols SHALL be defined in a gpkgext_symbols table contains containing the following columns:

  • id, a primary key

  • symbol, text naming a specific symbol

  • description, an optional text description

  • uri, a resolvable URI



CREATE TABLE gpkgext_symbols (
   id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
   uri TEXT,
   symbol TEXT NOT NULL,
   title TEXT NOT NULL,
   description TEXT
)

Listing 9 — Example SQL statement for creating the gpkgext_symbols table

See Figure B.18 for an implementation example of the gpkgext_symbols table.

Recommendation 4

Identifier/rec/rbt/symbol-uris
Statement

Guidance on symbol URIs

A

Where possible, symbol URIs SHOULD resolve to a network-accessible resource.

B

When that is not possible, symbol URIs SHOULD be unique.

C

If no existing URI scheme is available, a symbol URI SHOULD take the form of: gpkgsym::[geodataclass]::[org]::[style]::[symbol] ([style] could be replaced by e.g., multiple if the symbol applies to multiple styles)

Requirement 18

Identifier/req/rbt/symbol-images
Statement

For defining symbols

A

Images representing symbols SHALL be defined in a gpkgext_symbol_images table contains containing the following columns:

  • id, a primary key

  • symbol_id, a foreign key to gpkgext_symbols

  • content_id, a foreign key to gpkgext_symbol_content

  • width, height, optional parameters that are required for sprites or for when there are multiple versions of the same image with different sizes

  • offset_x, offset_y, pixel_ratio, optional parameters for sprite information (NULL if the entire image is used)



CREATE TABLE gpkgext_symbol_images (
   id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
   symbol_id INTEGER NOT NULL REFERENCES gpkgext_symbols,
   content_id INTEGER NOT NULL REFERENCES gpkgext_symbol_content,
   width INTEGER,
   height INTEGER,
   offset_x INTEGER,
   offset_y INTEGER,
   pixel_ratio INTEGER
)

Listing 10 — Example SQL statement for creating the gpkgext_symbol_images table

See Figure B.19 for an implementation example of the gpkgext_symbol_images table.

NOTE 1:    If a symbol sprite sheet is included as a single image containing multiple symbols, multiple entries of this table will reference the same sprite sheet symbol content entry.

NOTE 2:    Multiple images may be defined for the same symbol so as to offer different resolutions, differerent styles and/or for both an individual and sprite sheet version of the same symbol.

Requirement 19

Identifier/req/rbt/symbol-content
Statement

For defining symbols

A

The actual data for an image SHALL be encoded in a gpkgext_symbol_content table containing the following column:

  • id, a primary key

  • format, the media type (formerly MIME type, e.g., image/svg+xml or image/png) of the symbol

  • content, the actual symbol BLOB

  • uri, a resolvable name to uniquely reference a specific content entry e.g., for use in Mapbox GL styles sprite property to reference a particular sprite sheet



CREATE TABLE gpkgext_symbol_content (
   id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
   format TEXT NOT NULL,
   content BLOB NOT NULL,
   uri TEXT NOT NULL
)

Listing 11 — Example SQL statement for creating the gpkgext_symbol_content table

See Figure B.16 for an implementation example of the gpkgext_symbol_content table.

NOTE 3:    Multiple versions of the same image may be included (e.g., both SVG and PNG).

9.2.  Fonts Requirements

These requirements define how fonts required by styles can be included in the GeoPackage.

Requirement 20

Identifier/req/rbt/fonts
Statement

For optionally including fonts

A

If included, fonts required by styles SHALL be encoded in a gpkgext_fonts table containing the following column:

  • id, a primary key

  • name, the name of the font

  • font, the TrueType or OpenType font as a BLOB,

  • glyphs, a BLOB consisting of a zipped protobuf ranges of signed distanced field glyphs (as returned by the Mapbox Fonts API) with {rangeLo-rangeHi}.pbf filenames within the zip

B

At least font or glyphs SHALL be included in every entry



CREATE TABLE gpkgext_fonts(
   id INTEGER PRIMARY KEY,
   name TEXT UNIQUE,
   font BLOB,
   glyphs BLOB
)

Listing 12 — Example SQL statement for creating the gpkgext_fonts table

See Figure B.20 for an implementation example of the gpkgext_fonts table.

9.3.  Mapbox GL Styling Specification Requirements

These requirements define how to include style sheets specified in the Mapbox GL Styling Specification within a GeoPackage.

Requirement 21

Identifier/req/rbt/mapboxgl-style
Statement

For including MapboxGL style sheets

A

Styling rules encode according to the MapboxGL style sheets SHALL be included in the gpkgext_stylesheets table.

B

The MapboxGL style sheet SHALL refer to a particular tileset by setting the url field of a source to the GeoDataClass of that tileset, as associated using a GeoDataClass type of semantic annotations (/req/rbt/semantic-annotations).

NOTE 1:    By supporting a TileJSON representation of the schemas associated with a GeoDataClass, it would be possible for the url field to both function as a representative data source for the style, while also corresponding to a GeoDataClass. However, it does not however limit the use of this style strictly with that representative data source. The style should be suitable to portray any RBT data source conforming to the same schemas associated with the GeoDataClass.

NOTE 2:    An alternative was considered to specify the GeoDataClasses for the style in a separate geoDataClass property of the source, instead the url field. A final decision on this approach should consider the possibility of the GeoDataClass registry on the OGC definition server to return a TileJSON representation of the schemas, and would benefit from additional implementation testing, as detailed in the Future Work section of this Engineering Report.


Annex A
(normative)
Conformance Class Abstract Test Suite

A.1.  Conformance Class Releasable Base Map Tiles GeoPackage Extension

Conformance class A.1

Identifierhttps://fgs-dps.gs.mil/#rbt/conf
Requirements classhttps://fgs-dps.gs.mil/#rbt/req
Target TypeData Product
Conformance testsAbstract test A.1: /conf/rbt/extensions
Abstract test A.2: /conf/rbt/geodataclasses
Abstract test A.3: /conf/rbt/world-mercator
Abstract test A.4: /conf/rbt/map-tiles
Abstract test A.5: /conf/rbt/physical-cultural-features
Abstract test A.6: /conf/rbt/hillshade
Abstract test A.7: /conf/rbt/included-styles
Abstract test A.1-8: /conf/rbt/vector-tiles
Abstract test A.1-9: /conf/rbt/vector-tiles-layers
Abstract test A.1-10: /conf/rbt/vector-tiles-fields
Abstract test A.1-11: /conf/rbt/content-types
Abstract test A.1-12: /conf/rbt/mapbox-vector-tiles
Abstract test A.1-13: /conf/rbt/semantic-annotations
Abstract test A.1-14: /conf/rbt/sa-reference
Abstract test A.1-15: /conf/rbt/styles
Abstract test A.1-16: /conf/rbt/style-sheets
Abstract test A.1-17: /conf/rbt/symbol-images
Abstract test A.1-18: /conf/rbt/symbol-content
Abstract test A.1-19: /conf/rbt/fonts
Abstract test A.1-20: /conf/rbt/mapboxgl-style

A.1.1.  Abstract Test for Requirement RBT Extensions

Abstract test A.1

Identifier/conf/rbt/extensions
RequirementRequirement 1: /req/rbt/extensions
Test purpose

Verify that the RBT GeoPackage properly declare extended tables

Test method

Given: a GeoPackage conforming to the core GeoPackage standard
When: querying the content of the gpkg_extensions table
Then:
 — assert that all entries listed in Table 1 are present, including an entry for every user data table making use of these extensions.

A.1.2.  Abstract Test for Requirement GeoDataClasses

Abstract test A.2

Identifier/conf/rbt/geodataclasses
RequirementRequirement 2: /req/rbt/geodataclasses
Test purpose

Verify that the RBT GeoPackage properly identify RBT tilesets using GeoDataClass semantic annotations

Test method

Given: a GeoPackage conforming to the core GeoPackage standard passing the /conf/rbt/semantic-annotations and /conf/rbt/sa-reference tests
When: querying the semantic annotations
Then:
 — assert that corresponding entries exist annotating the gpkg_contents table for the mandatory cultural and physical tilesets, as well as for the optional imagery, COCOM and digital elevation model tilesets (if present)
 — assert that corresponding entries exist annotating the gpkgext_vt_layers table for the mandatory cultural and physical tilesets

A.1.3.  Abstract Test for Requirement World Mercator 2DTMS

Abstract test A.3

Identifier/conf/rbt/world-mercator
RequirementRequirement 3: /req/rbt/world-mercator
Test purpose

Verify that the RBT GeoPackage tile sets use the World Mercator 2D Tile Matrix Set

Test method

Given: a GeoPackage conforming to the core GeoPackage standard passing the /conf/rbt/geodataclasses test
When: inspecting the gpkg_tile_matrix and gpkg_tile_matrix_sets tables associated with the identified cultural, physical, imagery COCOM, and elevation model RBT tilesets
Then:
 — assert that the entries correspond to those expected for the http://www.opengis.net/def/tilematrixset/OGC/1.0/WorldMercatorWGS84Quad 2D Tile Matrix Set using the EPSG:3395 world Mercator coordinate reference system.

A.1.4.  Abstract Test for Requirement Map Tiles

Abstract test A.4

Identifier/conf/rbt/map-tiles
RequirementRequirement 4: /req/rbt/map-tiles
Test purpose

Verify that the RBT GeoPackage tile sets includes the mandatory hillshade tileset, and encodes all mandatory and optional imagery tilesets as expected

Test method

Given: a GeoPackage conforming to the core GeoPackage standard passing the /conf/rbt/geodataclasses and /conf/rbt/content-types tests
When: inspecting the available user defined tiles tables and gpkg_contents table
Then:
 — assert that the data_type of the gpkg_contents table for these tilesets is tiles
 — assert that the tile_data of the the user defined tiles table contains PNG for the hillshade tileset, and PNG and/or JPEG for the optional imagery tilesets, without any additional encoding applied
 — assert that the gpkgext_content_types table declares these tilesets as using JPEG (except for hillshade) or PNG using the image/jpeg and/or image/png media type and a NULL encoding

A.1.5.  Abstract Test for Requirement Physical and Cultural Features

Abstract test A.5

Identifier/conf/rbt/physical-cultural-features
RequirementRequirement 5: /req/rbt/physical-cultural-features
Test purpose

Verify that the RBT GeoPackage tile sets includes and encodes the mandatory physical and cultural vector features tile sets as expected

Test method

Given: a GeoPackage conforming to the core GeoPackage standard passing the /conf/rbt/geodataclasses, /conf/rbt/vector-tiles, /conf/rbt/vector-tiles-layers and /conf/rbt/content-types tests
When: inspecting the available user defined tiles tables, gpkgext_vt_layers, gpkg_contents and their associated semantic annotations tables
Then:
 — assert that a physical features tileset with the GeoDataClass http://www.opengis.net/def/geodataclass/NSG/0/rbt-physical is included
 — assert that a cultural features tileset with the GeoDataClass http://www.opengis.net/def/geodataclass/NSG/0/rbt-cultural is included
 — assert that the data_type of the gpkg_contents table for these tilesets is vector-tiles and that the tile_data of the the user defined tiles table contains gzip’ed Mapbox Vector Tiles
 — assert that the gpkgext_content_types table declares these tilesets as using Mapbox Vector Tile using the application/vnd.mapbox-vector-tile and the gzip encoding
 — assert that the Mapbox Vector Tiles for these tilesets contain embedded attributes

A.1.6.  Abstract Test for Requirement Hillshade

Abstract test A.6

Identifier/conf/rbt/hillshade
RequirementRequirement 6: /req/rbt/hillshade
Test purpose

Verify that the RBT GeoPackage tile sets includes and encodes the mandatory hillshaded digital elevation model as expected

Test method

Given: a GeoPackage conforming to the core GeoPackage standard passing the /conf/rbt/map-tiles test
When: inspecting the content of the user defined tiles table for the hillshaded tileset
Then:
 — assert that a hillshade tileset with the GeoDataClass http://www.opengis.net/def/geodataclass/NSG/0/rbt-hillshade is included
 — assert that the content of the hillshade tileset is pre-rendered map tileset, in a monochrome translucent hillshaded style encoded as PNG images

A.1.7.  Abstract Test for Requirement Included Styles

Abstract test A.7

Identifier/conf/rbt/included-styles
RequirementRequirement 7: /req/rbt/included-styles
Test purpose

Verify that the RBT GeoPackage tile sets includes at least one style in a MapboxGL representation

Test method

Given: a GeoPackage conforming to the core GeoPackage standard passing the /conf/rbt/geodataclasses, /conf/rbt/styles, /conf/rbt/style-sheets, /conf/rbt/symbol-images, /conf/rbt/symbol-content and /conf/rbt/mapboxgl-style tests
When: inspecting the content of the gpkgext_styles table for styles associated to the physical, cultural and hillshade RBT tilesets using the GeoDataClass annotation
Then:
 — assert that at least one style in a MapboxGL representation is available for styling the physical and cultural and hillshade RBT tilesets
 — assert that all style sheets applicable to any of the RBT tilesets include styling rules for at least the physical and cutural tilesets
 — assert that all symbols referenced by MapboxGL style sheets are at least available as a sprite sheet where the sprite property of the MapboxGL style corresponds to a uri of an entry in the gpkgext_symbol_content table whose content blob contains all symbols
 — assert that individual entries in the gpkgext_symbol_images table, with offsets and dimensions of individual symbols, exist for all symbols referencing the sprite sheets in the gpkgext_symbol_content table for each Mapbox GL style

NOTE:    The Abstract Test Suites corresponding to the requirements in the Vector Tiles, Semantic Annotations and Styling sections will be elaborated in the corresponding OGC GeoPackage extensions to be developed as separate documents, as documented in the Future Work section.


Annex B
(informative)
Implementations

B.1.  Compusult

B.1.1.  About

Compusult Limited is an established, innovative technology company that focuses on developing products and services, primarily in the geospatial industry. Established in 1985, Compusult supplies computer software, hardware and consulting services directly to governments and corporations – military and non-military – around the world. Compusult products and services are proven to be cost-effective for mass, customized and secure markets.

Compusult has a wide range of products that are suitable for different situations, yet work in combination with each other for an integrated IT solution. Compusult products include: Web Enterprise Suite (WES), SensorHub, GO Mobile, Meta Manager, FasseTrack, assistive technology solutions, and robotics (UGVs) solutions.

Compusult has been involved with many past testbeds, pilots and SWGs and has aided in developing many OGC standards, specifically the OGC GeoPackage standard and extensions. Compusult wanted to build off its initial work in Vector Tiles Pilot(s), and testbeds related to OGC GeoPackage symbology and portrayal to help finalize the existing GeoPackage extensions and to produce an RBT extension for storing RBT EPSG:3395 Vector Tiles in a GeoPackage.

B.1.2.  RBT GeoPackage Producer

The WES GeoPackager is a web-based application for WES that provides users with the ability to select different raster/vector sources for generating OGC compliant GeoPackages. Prior to the RBT sprint the GeoPackager had some Vector Tile support including:

  • Vector Tile generation (GeoJSON, Mapbox) from well known vector sources (i.e., Shapefile, GDB, SQLite, etc.)

  • Embedded styling (Mapbox Style, SLD) using Semantic Annotations extension

  • Feature simplifications and optimizations for tiling

  • Embedded or external feature attributes using the Related Tables extension

To support the RBT GeoPackage Extension the WES GeoPackager was updated to:

  • Ingest the MBTiles vector source including vector tiles and metadata

  • Ingest TrueType fonts and glyphs to be stored in gpkext_fonts

  • Produce GeoDataClass semantic annotations based on source definitions

  • Associate styles and layers with the GeoDataClass annotations

The Compusult GeoPackager module was updated to support the ingestion of MBTiles as well as their associated Mapbox style documents and referenced fonts as a single zipped data package. Each MBTiles file results in a unique vector tiles layer, with all relevent metadata being used to populate the RBT GeoPackage data-model.

B.1.2.1.  Input

To produce a RBT GeoPackage the user must upload a ZIP file containing the relevent RBT raw content required to consume and view the vector tiles. The file upload module auto-matically detects the precense of MBTiles and gives the user the option to produce a GeoPackage.

Figure B.1 — WES File Upload

The zipped raw content includes the following:

  • mbtiles 1 or more mbtiles files containing the vector tiles and associated metadata

  • json 0 or more Mapbox stylesheets to style the vector tiles

  • ttf/zip 0 or more TrueType fonts or gzipped glyphs

    NOTE:    The names of the fonts much match the unique names specified in the stylesheet rules. If no fonts are specified, system fonts are used when visualizing the content.

Figure B.2 — Calgary RBTs Input Package

B.1.2.2.  Output

The GeoPackage producer uses the supplied input to extract the information it needs to produce and populate the RBT GeoPackage data-model. All required information is contained inside of the input, and requires no further human interaction.

The gpkg_contents table is populated using the information stored in the MBTiles metadata table as follows:

  • table_name — to ensure a unique table name the id metadata field is used

  • data_type — the format field [pbf=vector-tiles, png=tiles]

  • identifier — the name field

  • description — the description field

  • min_x,min_y,max_x,max_y — the bounds field

  • srs_id — EPSG:3395

Figure B.3 — MBTiles metadata table

Figure B.4 — RBT GeoPackage gpkg_contents table

The gpkg_tile_matrix_set table is populated by making a couple of assumptions:

Figure B.5 — RBT GeoPackage gpkg_tile_matrix_set table

The gpkg_tile_matrix table is populated with entries for each MBTiles in the input making a couple of assumptions:

Figure B.6 — RBT GeoPackage gpkg_tile_matrix table

Each table_name in gpkg_contents is populated with the associated vector/raster tiles found in the tiles table in the MBTiles file. Tile population is accomplished by running 2 SQL commands on the GeoPackage:

attach database /path/to/mbtiles as {mbtiles_alias};

Listing B.1 — Attach Database

insert into {table_name}
   (zoom_level, tile_column, tile_row, tile_data)
   select m.zoom_level, m.tile_column,
      power(2, m.zoom_level) - 1 - m.tile_row
   as tile_row, m.tile_data
   from {mbtiles_alias}.tiles m;

Listing B.2 — Copy Tiles

NOTE:    The tiles stored in MBTiles has the Y axis reversed from the commonly used XYZ coordinate reference system

Figure B.7 — MBTiles tiles table

Figure B.8 — RBT GeoPackage tiles table

The gpkgext_vt_layers and gpkgext_vt_fields tables are populated based on the TileJSON definition that can be found in the json entry in the metadata table for MBTiles.

The TileJSON contains a vector_layers entry for each layer associated with the MBTiles. This entry specifies the associated fields of the layer, as well as the min and max zoom levels. Each layer also has an entry in the layers array which defines the geometry type of the layer.

Figure B.9 — TileJSON Vector Layers

Figure B.10 — TileJSON Layers

Using this information the gpkgext_vt_layers and gpkgext_vt_fields can be populated.

Figure B.11 — RBT GeoPackage gpkgext_vt_layers table

Figure B.12 — RBT GeoPackage gpkgext_vt_fields table

The gpkgext_stylesheets and gpkgext_styles tables are populated depending on the stylesheets uploaded. Each Mapbox stylesheet represents a unique style that can be associated with a GeoDataClass

Figure B.13 — RBT GeoPackage gpkgext_styles table

Figure B.14 — RBT GeoPackage gpkgext_stylesheets table

If any stylesheets are provided the gpkgext_symbol_content tables are populated using the avalable sprite source(s).

Figure B.15 — MBStyle Sprites

Figure B.16 — RBT GeoPackage gpkgext_symbol_content table

The gpkgext_symbol_content and gpkgext_symbol_images tables are then populated based on the sprite metadata found at sprite.json.