Vector Tile Service

Vector Tile Service

PostGIS-backed Mapbox Vector Tiles (protobuf, .mvt) for site geometry polygons and mission boundaries.

Two layers are available:

Layer Contents sites All site geometry polygons — building structure, cooling, power, capture area, etc. missions Mission boundary and area-of-interest polygons

URLs

Sites:    https://app.raad.com/vectors/sites/{z}/{x}/{y}
Missions: https://app.raad.com/vectors/missions/{z}/{x}/{y}

Feature Properties — Sites Layer

Each feature in the sites layer carries these properties you can use for filtering and styling:

Property Description system_type building_structure, cooling, grid_power, capture_area, etc. geometry_type polygon, multipolygon label Human-readable name for the geometry site_id UUID of the parent site site_name Name of the parent site

Setup in QGIS

  1. Go to Layer → Add Layer → Add Vector Tile Layer
  2. Click New → New Generic Connection
  3. Set the URL to https://app.raad.com/vectors/sites/{z}/{x}/{y}
  4. Open the Authentication tab → click the green + → choose HTTP Header auth
  5. Set header name Authorization, value Bearer YOUR_MAP_ACCESS_TOKEN, and save
  6. Click Add — geometry types appear as individually styleable sublayers

Mapbox GL JS — Style by System Type

Use transformRequest (set once on the map) to attach the Bearer header to all Raad tile requests — see the XYZ Raster Tiles section above for the full setup. Then:

map.addSource('raad-sites', {
  type: 'vector',
  tiles: ['https://app.raad.com/vectors/sites/{z}/{x}/{y}']
});

// Building structures in blue
map.addLayer({
  id: 'buildings',
  type: 'fill',
  source: 'raad-sites',
  'source-layer': 'sites',
  filter: ['==', ['get', 'system_type'], 'building_structure'],
  paint: { 'fill-color': '#4488ff', 'fill-opacity': 0.4 }
});

// Cooling systems in cyan
map.addLayer({
  id: 'cooling',
  type: 'fill',
  source: 'raad-sites',
  'source-layer': 'sites',
  filter: ['==', ['get', 'system_type'], 'cooling'],
  paint: { 'fill-color': '#22d3ee', 'fill-opacity': 0.5 }
});