Back to how-to articles
Using OpenEPI's Super Resolved Sentinel 2 Raster
Last updated: August 18, 2025

Sentinel 2
Sentinel 2 is a set of satellites operated by the ESA which provides regular, free satellite images at 10 meter resolution. They also provide cloudless mosaics once every quarter. These are the baseline images we use in our mapping services.
What is Super Resolved?
Our super resolved images are upscaled from 10 meter resolution to 5 meters. This provides clearer and more accurate images for image analysis tasks. The code for the image upscaling is of course open-source and available at this repo.
For now, the satellite images are restricted to Brazil only. All original satellite photos were taken in the first quarter of 2023. In the future, we hope to provide both images on a worldwide scale and images from before and after 2023.
WMS and WMTS
OpenEPI provides WMS and WMTS services for Super Resolved Sentinel 2 raster. Per now, the raster is limited to the country of Brazil. The raster can be accessed on our Geoserver, with a layer preview available here.
Using the raster in MapLibre
If you are new to using MapLibre in a React application, please check out our tutorial below
To use the raster, the first step is to create a style specification for the Maplibre Map component. The style specification defines the visual appearance of a map: what data to draw, the order to draw it in, and how to style the data when drawing it.
1import { StyleSpecification } from "react-map-gl/maplibre";
2
3export const sentinelStyleSpecification: StyleSpecification = {
4 version: 8,
5 name: 'OpenEPI Super Resolved Sentinel 2',
6 sources: {
7 'openepi-wms-imagery': {
8 type: 'raster',
9 tiles: [
10 'https://api.openepi.io/geoserver/ows?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&FORMAT=image/png&TRANSPARENT=true&LAYERS=sentinel:2023Q1&CRS=EPSG:3857&WIDTH=256&HEIGHT=256&BBOX={bbox-epsg-3857}',
11 ],
12 tileSize: 256,
13 maxzoom: 18,
14 },
15 },
16 layers: [
17 {
18 id: 'background',
19 'source-layer': 'aeroway_fill',
20 source: 'openepi-wms-imagery',
21 type: 'raster',
22 paint: {},
23 },
24 ],
25};
The style specification can then be inserted into the Map components mapStyle attribute.
1import { Map } from "react-map-gl/maplibre";
2import 'maplibre-gl/dist/maplibre-gl.css';
3...
4return (
5 <div className="h-screen w-screen">
6 <Map
7 initialViewState={{
8 latitude: -15,
9 longitude: -55,
10 zoom: 4,
11 }}
12 style={{ width: '100%', height: '100%' }}
13 mapStyle={sentinelStyleSpecification}
14 >
15 </Map>
16 </div>
17)

As OpenEPI currently only supports Super Resolved raster off Brazil, the style specification can be extended with e.g. Sentinel 2 Cloudless, which is not super resolved, but offer cloudless satellite raster for the rest of the world. To do this, a link to the Sentinel 2 Cloudless WMS or WMTS is required, and we will need to create an additional source, and layer in our style specification.
1export const sentinelStyleSpecification: StyleSpecification = {
2 version: 8,
3 name: 'OpenEPI Super Resolved Sentinel 2',
4 sources: {
5 'openepi-wms-imagery': {
6 type: 'raster',
7 tiles: [
8 'https://api.openepi.io/geoserver/ows?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&FORMAT=image/png&TRANSPARENT=true&LAYERS=sentinel:2023Q1&CRS=EPSG:3857&WIDTH=256&HEIGHT=256&BBOX={bbox-epsg-3857}',
9 ],
10 tileSize: 256,
11 maxzoom: 18,
12 },
13 'cloudless-wmts-imagery': {
14 type: 'raster',
15 tiles: [
16 'https://tiles.maps.eox.at/wmts/1.0.0/s2cloudless-2023_3857/default/GoogleMapsCompatible/{z}/{y}/{x}.jpg',
17 ],
18 tileSize: 256,
19 maxzoom: 14,
20 },
21 },
22 layers: [
23 {
24 id: 'background-cloudless',
25 'source-layer': 'aeroway_fill',
26 source: 'cloudless-wmts-imagery',
27 type: 'raster',
28 paint: {},
29 },
30 {
31 id: 'background',
32 'source-layer': 'aeroway_fill',
33 source: 'openepi-wms-imagery',
34 type: 'raster',
35 paint: {},
36 },
37 ],
38};

In addition, are also able to extend the Style Specification further by adding data, e.g. place names, road outlines from other sources. There are a lot of providers, both free and commercial. Check out the style specifications from e.g. OpenFreeMap, and OpenMapTiles.