projections Property

Vega projections map longitude and latitude data to projected x and y coordinates. When working with geospatial data in OmniSci, you can use projections to define geographic points and regions.

General projections property JSON format:

"projections": [
{
"name": "<projectionName>",
"type": "<projectionType>",
"bounds": {
"x": [<minLong>,<maxLong>],
"y": [<minLat>,<maxLat>]
}
}
]

When you specify a projection, you must reference it in the Marks Property using the transform object. For example, if you define the projection my_mercator_projection:

"projections": [
{
"name": "my_mercator_projection",
"type": "mercator",
"bounds": {
"x": [-120.0, 120.0],
"y": [-20.0,20.0]
}
}
]

you then reference it as follows:

"marks": [
{
"type": "symbol",
"from": { "data": "fec_contributions_oct" },
"properties": { ... elided ... }
"transform": {
"projection": "my_mercator_projection"
}
}
]

The projections specification has the following properties:

Property

Data Type

Required

Description

name

string

X

User-assigned name of the projection.

type

string

X

Projection type. Currently supported types:

  • mercator: Mercator map projection.

bounds

object

‚Äč

Specifies the longitude and latitude bounding box for the projection. Default values:

  • x: [-180.0, 180.0]

  • y: [-85.0, 85.0]

Example

Use Vega projection projection alongside array columns:

{
"width": 1024,
"height": 1024,
"data": [
{
"name": "table",
"sql": "SELECT rowid, coords[1] as x, coords[2] as y FROM cities WHERE coords[1] BETWEEN $minLon AND $maxLon AND coords[2] BETWEEN $minLat AND $maxLat"
}
],
"projections": [
{
"name": "projection",
"type": "mercator",
"bounds": {
"x": [-120.0, 120.0],
"y": [-20.0, 20.0]
}
}
],
"scales": [
],
"marks": [
{
"type": "symbol",
"from": {"data": "table"},
"properties": {
"shape": "circle",
"xc": {
"field": "x"
},
"yc": {
"field": "y"
},
"fillColor": "darkblue",
"width": 25,
"height": 25
},
"transform": {
"projection": "projection"
}
}
]
}