Importi uno Shapefile da un collega, lo sovrapponi alla tua mappa di base — e gli edifici si trovano 200 metri a est di dove dovrebbero essere. Il file .prj dice "GCS_WGS_1984" ma i dati erano stati raccolti in Roma 1940. Questo tipo di disallineamento costa ore di debugging, e la causa è sempre la stessa: un codice EPSG sbagliato.
Un codice EPSG è un identificativo numerico per un sistema di riferimento delle coordinate (CRS). Dì EPSG:4326 e qualsiasi ingegnere GIS capisce che parli di WGS 84 — senza ambiguità, senza dover analizzare una stringa WKT. Capirlo bene è il primo passo per evitare dati disallineati.
Da dove vengono i codici EPSG?
EPSG è l'acronimo dell'European Petroleum Survey Group, fondato nel 1985. Il contesto: diverse compagnie petrolifere conducevano rilevamenti offshore nelle stesse acque ma non riuscivano a unire i dati perché ogni azienda usava un sistema di coordinate diverso. Jean-Patrick Girbig, capo topografo di Elf Aquitaine, radunò geodeti di Agip, BP, Deminex, Shell, Statoil e Total per risolvere il problema.
Il loro primo compito fu un database standardizzato di CRS, pubblicato nel 1993 con oltre 500 definizioni. Nel 1995, lo standard GeoTIFF v1.0 adottò i codici EPSG come identificativo CRS, portando EPSG fuori dall'industria petrolifera e nel GIS mainstream.
Nel 2005, il gruppo di lavoro EPSG fu riorganizzato sotto l'IOGP (International Association of Oil & Gas Producers), ma il nome EPSG rimase. Oggi il dataset EPSG (v12.053) contiene oltre 7.000 definizioni CRS, 2.500 metodi di proiezione e 2.500 trasformazioni di coordinate — più di 20.000 voci in totale.
Cos'è esattamente un codice EPSG?
Un codice EPSG è un identificativo numerico di 4-5 cifre (intervallo 1024–32767) che identifica univocamente un CRS, datum, ellissoide o metodo di trasformazione delle coordinate nel dataset EPSG. La sua base tecnica è lo standard ISO 19111.
Notazione standard
Il formato più comune è authority:code:
EPSG:4326
L'OGC definisce anche un formato URL, spesso usato nei servizi web:
http://www.opengis.net/def/crs/EPSG/0/4326
Cosa contiene una definizione EPSG?
Ogni codice corrisponde a una definizione CRS completa: parametri dell'ellissoide (semiasse maggiore, schiacciamento), datum, direzioni e ordine degli assi di coordinate, unità di misura (gradi o metri) e l'area geografica di applicazione.
La trappola più comune è l'ordine degli assi. La definizione standard di EPSG:4326 specifica la latitudine per prima (lat, lng), ma la maggior parte dei software GIS passa effettivamente la longitudine per prima (lng, lat). GeoJSON usa lng, lat; il L.latLng() di Leaflet si aspetta lat, lng — il bug risultante non sembra un ovvio scambio di coordinate, ma punti dispersi casualmente sulla mappa.
Codici EPSG più comunemente usati
| Codice EPSG | Nome | Tipo | Unità | Uso tipico |
|---|---|---|---|---|
| 4326 | WGS 84 | Geografico | Gradi | GPS, scambio dati globale |
| 3857 | Web Mercator | Proiettato | Metri | Mappe web (Google Maps, OSM) |
| 4258 | ETRS89 | Geografico | Gradi | Europa (standard ufficiale) |
| 25832 | ETRS89 / UTM Zone 32N | Proiettato | Metri | Italia nord-occidentale, centro Europa |
| 25833 | ETRS89 / UTM Zone 33N | Proiettato | Metri | Italia nord-orientale, centrale |
| 3003 | Monte Mario / Italy zone 1 | Proiettato | Metri | Italia (Gauss-Boaga, legacy) |
| 32601–32660 | Zone UTM Nord | Proiettato | Metri | Rilevamenti locali ad alta precisione |
| 27700 | OSGB 1936 | Proiettato | Metri | Regno Unito |
EPSG:4326 vs EPSG:3857 — I due codici che tutti confondono
EPSG:4326 (WGS 84) è un CRS geografico che rappresenta le posizioni in gradi di latitudine/longitudine. L'output grezzo del GPS è WGS 84. È lo standard per la memorizzazione e lo scambio di dati.
EPSG:3857 (Web Mercator) è un CRS proiettato che mappa la terra su un piano piatto in metri. Google Maps ha adottato questa proiezione al lancio nel 2005, e praticamente tutte le mappe web hanno seguito.
L'EPSG inizialmente rifiutò di registrare il 3857. L'obiezione: usa una formula sferica applicata a un datum ellissoidale, matematicamente errata. Google lo pubblicò comunque, e quando l'EPSG cedette e assegnò il codice nel 2009, tutte le mappe web del pianeta lo stavano già usando. Nonostante la sua diffusione, il 3857 non è adatto per misurazioni precise di area o distanza — circa lo 0,33% di errore di scala rispetto alla proiezione di Mercatore standard.
La regola di base: 4326 per la memorizzazione, 3857 per la visualizzazione. Il convertitore di coordinate di KunYu supporta la conversione tra i due.
Come trovare il codice EPSG corretto
Scenario 1: Conosci il nome del CRS
Se conosci il nome (es. "WGS 84" o "ETRS89"), cerca direttamente nello strumento di ricerca EPSG. Supporta la ricerca tra oltre 8.000 definizioni EPSG per codice, nome e regione.
Scenario 2: Conosci la posizione, non il CRS
Quando hai bisogno di un CRS proiettato adatto a un'area specifica, usa lo strumento EPSG Finder — clicca o disegna un riquadro sulla mappa, e elenca tutti i codici EPSG la cui area di utilizzo copre quella regione.
Scenario 3: Hai ricevuto dati senza informazioni CRS
Controlla i file di metadati forniti con i dati. Gli Shapefile hanno un file .prj (aprilo con qualsiasi editor di testo) contenente la definizione CRS in formato WKT. I GeoTIFF di solito incorporano le informazioni EPSG nei loro metadati. Con GDAL:
# Controlla il CRS di un GeoTIFF
gdalsrsinfo input.tif
# Leggi il file .prj di uno Shapefile
cat data.prj
Usare i codici EPSG nel software GIS
QGIS: Proprietà progetto → pannello CRS consente di cercare e cambiare il CRS tramite codice EPSG. QGIS usa EPSG:4326 come predefinito.
GDAL/OGR: Specifica il CRS di destinazione direttamente con un codice EPSG:
# Riproietta uno Shapefile da Gauss-Boaga a WGS 84
ogr2ogr -s_srs EPSG:3003 -t_srs EPSG:4326 output.shp input.shp
PROJ: Il motore di trasformazione delle coordinate open source. Il suo database (proj.db) integra le definizioni CRS di EPSG, IGNF e ESRI.
Nel codice, i codici EPSG funzionano allo stesso modo:
// Proj4js (JavaScript)
import proj4 from "proj4";
proj4.defs("EPSG:4490", "+proj=longlat +ellps=GRS80 +no_defs");
const result = proj4("EPSG:4326", "EPSG:4490", [116.4074, 39.9042]);
# pyproj (Python)
from pyproj import Transformer
transformer = Transformer.from_crs("EPSG:4326", "EPSG:3857", always_xy=True)
x, y = transformer.transform(12.4964, 41.9028)
FAQ
Qual è la differenza tra EPSG:4326 e CRS:84?
Entrambi sono WGS 84, ma con un ordine degli assi diverso. La definizione standard di EPSG:4326 è latitudine per prima (lat, lng), mentre CRS:84 è longitudine per prima (lng, lat). GeoJSON usa lng, lat, ma il L.latLng() di Leaflet si aspetta lat, lng — confonderli è un bug comune.
I miei dati sono sfasati di decine-centinaia di metri. Perché?
La causa più comune è un codice EPSG sbagliato. In Italia, confondere il vecchio sistema Roma 1940/Gauss-Boaga (EPSG:3003 o 3004) con ETRS89/UTM32N (EPSG:25832) produce scostamenti sistematici di decine di metri. Il passaggio dall'ellissoide di Hayford all'ellissoide GRS80 è la fonte della differenza.
I codici EPSG scadono?
Vengono aggiornati ma mai cancellati o riassegnati. Il sottocomitato di geodesia dell'IOGP aggiorna periodicamente il dataset EPSG. I codici deprecati sono contrassegnati come tali e puntano ai loro sostituti.
Quali codici EPSG si usano in Italia?
Il sistema di riferimento ufficiale italiano è RDN2008 (EPSG:6706, geografico), che ha sostituito il vecchio Roma 1940. Per le coordinate proiettate si usa ETRS89/UTM Zone 32N (EPSG:25832) per la parte occidentale e UTM Zone 33N (EPSG:25833) per la parte orientale. Il vecchio sistema Gauss-Boaga (EPSG:3003/3004) è ancora presente in molti dati catastali — se vedi uno scostamento di qualche decina di metri sovrappondo dati storici, è quasi certamente un file Roma 1940 non riproiettato.
La Regola che Copre il 90% dei Casi
4326 per archiviare e scambiare, 3857 per la visualizzazione web. In caso di dubbio, cerca per nome con EPSG Search o per posizione con EPSG Finder.