Skip to content
EOCube.ro — Powered by ROCSEOCube.ro RO
Sign in

Basemap tiles

tiles.eocube.ro serves an OpenStreetMap basemap of Europe as vector tiles, with ready-made map styles. EOCube.ro renders and hosts it, and every map on the platform uses it. You can use it in your own web pages, notebooks and GIS projects: no account and no API key.

© OpenStreetMap · Protomaps · Copernicus Sentinel data · EOCube.ro
Loading…

The map above is the basemap with the platform’s newest summer mosaic over it: cloudless Sentinel-2 imagery of the whole area of interest, served as XYZ tiles. Every season is listed on the seasonal mosaics page.

Attribution

The basemap is built from OpenStreetMap data, published under the Open Database License (ODbL) . A map that shows it must credit OpenStreetMap and the rendering by EOCube.ro, visibly on the map or right next to it:

Attribution · text
© OpenStreetMap contributors · Protomaps · Map rendering: EOCube.ro
Attribution · HTML
<a href="https://www.openstreetmap.org/copyright">© OpenStreetMap contributors</a> ·
<a href="https://protomaps.com">Protomaps</a> ·
Map rendering: <a href="https://eocube.ro/en/services/tiles/">EOCube.ro</a>

MapLibre and OpenLayers show the OpenStreetMap credit from the style on their own; add the EOCube.ro rendering credit next to it. When the map also shows a seasonal mosaic, add the imagery credit from its STAC item (the attribution property), for example Contains modified Copernicus Sentinel data 2026 · EOCube.ro.

Endpoints

UseAddress
Map style (MapLibre GL, OpenLayers with ol-mapbox-style)https://tiles.eocube.ro/assets/styles/<style>.json
Map style for QGIS (also for QMS)https://tiles.eocube.ro/assets/styles/<style>.qgis.json
The same style, labels in Romanianhttps://tiles.eocube.ro/assets/styles/<style>.ro.json
TileJSONhttps://tiles.eocube.ro/europe.json
Vector tiles (Mapbox Vector Tiles, {z}/{x}/{y})https://tiles.eocube.ro/europe/{z}/{x}/{y}.mvt
The whole archive, for offline and desktop use (PMTiles, ~48 GB)https://tiles.eocube.ro/europe.pmtiles
Published version and OpenStreetMap snapshot datehttps://storage.svc.uvt-01.eocube.ro/eocube-public-basemap/europe/manifest.json

Styles: light, dark, grayscale, white and black. Pick grayscale (or black on a dark page) under thematic data, so your colours are the only colours on the map.

Technical details:

  • Coverage Europe; projection Web Mercator (EPSG:3857); zoom 0–15 (clients overzoom beyond 15, street-level detail ends there).
  • Schema Protomaps basemap (v4), built from OpenStreetMap and Natural Earth; refreshed from a new OpenStreetMap snapshot about once a month (see the manifest).
  • Styles, sprites and fonts are served from the same host, with CORS open to every origin.

Examples

MapLibre GL JS

The basemap, with the newest summer mosaic inserted under the labels. The mosaic’s tile URL comes from the catalog: it changes when a season is reprocessed, so look it up rather than copying it.

JavaScript · MapLibre GL JS
const map = new maplibregl.Map({
  container: 'map',
  style: 'https://tiles.eocube.ro/assets/styles/light.json',
  center: [25.0, 45.9],
  zoom: 6
});
map.addControl(new maplibregl.AttributionControl({ customAttribution: 'Map rendering: EOCube.ro' }));

// The newest AOI-wide summer mosaic (JJA), from the STAC catalog.
const search = 'https://stac.eocube.ro/search?' + new URLSearchParams({
  collections: 'sentinel-2-l2a-mosaic-seasonal',
  'filter-lang': 'cql2-text',
  filter: `"eocube:mosaic_scope" = 'aoi' AND id LIKE '%-JJA-%'`,
  sortby: '-start_datetime',
  limit: '1'
});

map.on('load', async () => {
  const item = (await (await fetch(search)).json()).features[0];
  const xyz = item.links.find((l) => l.rel === 'xyz').href;   // TiTiler, true colour
  map.addSource('mosaic', { type: 'raster', tiles: [xyz], tileSize: 256, maxzoom: 13,
                            attribution: item.properties.attribution });
  const firstLabels = map.getStyle().layers.find((l) => l.type === 'symbol')?.id;
  map.addLayer({ id: 'mosaic', type: 'raster', source: 'mosaic' }, firstLabels);
});

OpenLayers

JavaScript · OpenLayers + ol-mapbox-style
import Map from 'ol/Map.js';
import View from 'ol/View.js';
import VectorTileLayer from 'ol/layer/VectorTile.js';
import { fromLonLat } from 'ol/proj.js';
import { applyStyle } from 'ol-mapbox-style';

const basemap = new VectorTileLayer({ declutter: true });
applyStyle(basemap, 'https://tiles.eocube.ro/assets/styles/light.json');

new Map({
  target: 'map',
  layers: [basemap],
  view: new View({ center: fromLonLat([25.0, 45.9]), zoom: 6 })
});

ol-mapbox-style draws labels with web fonts: declare the Noto Sans faces the styles name on your page (or rewrite them to fonts you already serve), otherwise it loads them from a public font CDN.

QGIS

  1. Layer ▸ Add Layer ▸ Add Vector Tile Layer…, then New ▸ New Generic Connection.
  2. URL https://tiles.eocube.ro/europe/{z}/{x}/{y}.mvt, minimum zoom 0, maximum zoom 15, style URL https://tiles.eocube.ro/assets/styles/light.qgis.json. The .qgis.json styles are the same maps written in the subset QGIS can read; with the regular styles QGIS shows no place names.
  3. Add the attribution above to your map layouts.

For offline work, open the PMTiles archive instead (recent QGIS versions read PMTiles directly).

Fair use

  • Tiles are public and free, and the service is rate-limited per IP address; an ordinary map view stays far below the limit.
  • Do not bulk-download tiles: to use the basemap offline or on your own server, download the PMTiles archive, which is the same data in one file.
  • The service runs on research infrastructure with no availability guarantee. For operational or high-traffic use, write to support@eocube.ro.