Version:

Vector Tile Service

Overview

Kinetica provides a Vector Tile Service (VTS) to generate Vector Tiles and support client-side visualization of the geospatial data contained within the tiles. The Vector Tile format generated follows the open standard Mapbox Vector Tile specification. The Kinetica VTS feeds a client-side Vector Tile renderer, such as Mapbox GL, by adding the VTS URL to the renderer’s style configuration as a map layer source. Any Kinetica table that is defined with at least one WKT-type (geometry) column can be used as the data source for the layer parameter. Input geometries are pre-processed upon ingestion for faster vector tile generation. The data source, geographical position, and zoom level of each Vector Tile are specified in a VTS request. The requested Vector Tile is then returned in the response.

The VTS offers a couple advantages over server-side WMS calls:

  • VTS supports client-side control of styling like image fill
  • When using vector tiles, the browser only requests new information as needed and caches data along the way; WMS output must be re-rendered on every pan/zoom

Important

The Kinetica VTS requires access to GPUs, i.e. VTS cannot be used on an Intel build.

Configuration

Before using the VTS, the service must be enabled and configured via the gpudb.conf configuration file.

Settings:

Name Default Description Allowable Values
enable_vectortile_service false Enables the database VTS to support client-side visualization of geospatial data. true or false
min_vectortile_zoomlevel 1

Determines the minimum zoom level for vector tile pre-processing. As the value gets lower, more geographical area is rendered.

Note

A vector tile request for a lesser zoom level than this value will take additional time to process as the vector tile is generated on the fly.

Minimum is 0, maximum is 20.
max_vectortile_zoomlevel 8

Determines the maximum zoom level for vector tile pre-processing. As the value gets higher, less geographical area is rendered but details more apparent (islands, rivers, roads, buildings).

Note

A vector tile request for a greater zoom level than this value will take additional time to process as the vector tile is generated on the fly.

Minimum is 0, maximum is 20.
vectortile_map_tiler google The name of the map tiler used for VTS. The configuration for the VTS must match the configuration for the client-side renderer.
  • google (Mapbox)
  • tms (OpenLayers)

Usage

Base VTS URI:

http://<kinetica-host>:<port>/vts/<layer>/<z>/<x>/<y>.pbf?attributes=<columns>

Important

The VTS URL needs to be specified in the client-side visualizer's configuration.

URI parameters:

Name Description Allowable Values
layer Name of data source table. A valid table name, in [schema_name.]table_name format, using standard name resolution rules.
attributes List of geometry column names. A comma separated list of column names of the data source table.
z Zoom level of the requested tile. Non-negative integer. The maximum value is 30. Provide the parameter as {z} to have the client-side renderer dynamically set the value.
x Horizontal index of the requested tile. Non-negative integer. Provide the parameter as {x} to have the client-side renderer dynamically set the value.
y Vertical index of the requested tile. Non-negative integer. Provide the parameter as {y} to have the client-side renderer dynamically set the value.

Example

Below is a snippet of a Javascript Mapbox style specification using Kinetica’s VTS URL as a source:

// Config
var tableName = "nyc_neighborhood";
var wktColumn = "geom";
var kineticaUrl = "http://172.123.45.67";

// Mapbox GL
map.on('load', function () {
  map.addLayer({
    "id": tableName + "_layer",
    "version": 8,
    "type" : "fill",
    "source": {
      "type": "vector",
      "tiles": [kineticaUrl + ":9191/vts/" + tableName + "/{z}/{x}/{y}.pbf?attributes=" + wktColumn], // Note Mapbox uses the params in curly braces as dynamic values. Don't change those.
      "maxzoom": 20
    },
    "source-layer": tableName,
    "paint": {
      "fill-color": "#EDF00F",
      "fill-outline-color": "#000000"
    }
  });
});

Limitations and Cautions

  • Vector tiles are kept in memory, so the zoom levels should be used to keep the memory usage of tiles at a reasonable level. A higher zoom level typically results in more tiles and more memory usage
  • The VTS currently does not support feature attributes
  • Since VTS sends feature information for each table row to the browser, the client can get overwhelmed with data; performance is dependent upon client hardware