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:
Important
The Kinetica VTS requires access to GPUs, i.e. VTS cannot be used on an Intel build.
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. |
|
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. |
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. |
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"
}
});
});