EPSG & UTM for Satellite Imagery: Choosing the Right CRS
2025-08-20 · 5 min read · EPSG · Sentinel-2 · Projections · Data Fusion

TL;DR: Sentinel-2 tiles are delivered in UTM/WGS 84. If precision matters (areas, distances, parcel stats), favor the native UTM EPSG of your tile. You can reproject to other EPSGs but but align pixels and resampling carefully.
Why CRS and EPSG exist (round Earth, flat maps)
Maps are flat, Earth is not. A Coordinate Reference System (CRS) defines how we turn the curved Earth into a flat coordinate space. It specifies a datum (the model of Earth) and, for projected systems, a projection (the math that converts lat/long into x/y in meters). EPSG codes are just IDs for these systems, e.g., EPSG:4326 (WGS 84 geographic, degrees) or EPSG:32632 (WGS 84 / UTM zone 32N, meters). Degrees are great for global coverage and web maps, but degrees aren’t uniform in length, so area and distance calculations are unreliable unless you switch to a projected CRS in meters.
Why Sentinel-2 uses UTM tiles
Sentinel-2 Level-1C/Level-2A products are delivered in fixed 100 km × 100 km tiles in UTM on WGS 84 (one UTM zone per tile). UTM splits the globe into 60 zones, each 6° wide, with coordinates in meters, perfect for per-parcel areas, distances, and raster math. Keeping each tile inside a single UTM zone keeps scale distortion low and pixels square in meters. Docs: Copernicus Sentinel-2 · ESA tiling grid note · EPSG:4326 reference
Quick decoder: 326xx and 327xx
- EPSG:326ZZ → WGS 84 / UTM zone ZZ (Northern Hemisphere)
- EPSG:327ZZ → WGS 84 / UTM zone ZZ (Southern Hemisphere)
So EPSG:32632 = UTM zone 32N; EPSG:32719 = UTM zone 19S. Your Sentinel-2 tile’s UTM zone determines the correct EPSG.
The Sentinel-2 tiling idea, in plain English
Sentinel-2 tiles follow a (MGRS-based) UTM layout so each tile sits cleanly in one projected CRS. That keeps area/buffer math sane and time-series stable. One side effect: neighboring tiles can live in different UTM zones; when you mosaic across boundaries, be deliberate about which CRS you use.
Picking the “right” CRS for your job
Measure in meters, not degrees. For area, distance, or rate-of-change, use a projected CRS (UTM or a national projection). A good rule of thumb from cartography: match projection to purpose and region to balance distortions. See: USGS—choosing map projections
Stay native when you can. For Sentinel-2-derived rasters, keep the tile’s UTM EPSG for parcel stats and time-series. You’ll avoid unnecessary resampling and off-by-a-pixel shifts.
If you span multiple UTM zones. Either analyze per-tile in each native UTM and merge results at the table level, or pick a single projected CRS for the whole AOI and reproject once.
Reprojecting rasters without regrets
Reprojection always resamples. Choose by data type:
- Reflectance/indices (continuous): bilinear or cubic
- Labels/classes (categorical): nearest neighbor
Also ensure pixel alignment (origin, resolution, grid). Misalignment can blur time-series or nudge parcel boundaries just enough to skew small fields. When possible, bring vectors to the raster CRS for zonal stats; if you must reproject rasters, do it once and document it.
A note on datums (Europe-specific gotcha)
Sentinel-2 uses WGS 84. Many European datasets use ETRS89 (a stable frame for Europe). They’re close but not identical. For precise work (e.g., national mapping accuracy), apply the proper transformation.
How ClearSKY handles CRS at download time
By default, downloads are delivered in the tile’s native UTM (WGS 84), so your pixels stay in meters and align with Sentinel-2 conventions. If your workflow needs something else, set Epsgprojection
to any EPSG (e.g., 4326, 3857, 32632).
When you choose a UTM EPSG (the WGS 84 UTM families EPSG:32601–32660 for the Northern Hemisphere and EPSG:32701–32760 for the Southern Hemisphere), two extra controls tailor how pixels are selected and reprojected near zone boundaries:
-
UtmDataSelectionMode
single_utm_fully_covered
– Only pixels native to the requested UTM zone are used; the AOI must be fully covered by that zone.combined_utm
– Prefer pixels native to the requested zone, and fill gaps with pixels reprojected from neighboring UTM zones to keep the output continuous.single_utm
– Use only pixels native to the requested zone; the output array is cropped to actual native data (no back-filled reprojections).
-
UtmGridForcePixelResolutionSize
(true
/false
)
Controls how reprojection error shows up when multiple UTM zones are involved.true
→ Force pixel size to the requested Resolution (e.g., exactly 10 m); minor geometric warps absorb the reprojection error.false
→ Keep the grid more rigid; pixel size may vary slightly (e.g., 9.99 m), trading tiny size drift for less image twisting.
Need to confirm which tile or zone a request hits? See our tile list and examples:
ClearSKY tiles: https://docs.clearsky.vision/docs/order-guide/tile-ordering
Tip: For parcel stats and time-series, staying in the tile’s native UTM EPSG avoids extra resampling. If you must reproject, do it once, pick the right resampler (nearest for classes, bilinear/cubic for reflectance), and ensure pixel alignment.
Practical takeaways
- For parcel-level analytics and accurate areas/distances, work in the tile’s UTM EPSG.
- Use projected meters for decisions; reserve EPSG:4326 for web maps and quick looks.
- If you must reproject rasters, resample appropriately, align pixels, and avoid multiple hops.
- Across UTM zones, analyze per-tile or pick a single projected CRS and transform once.