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:

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"
                      }
              }
      ]
}