Come georeferenziare una mappa o un'immagine in QGIS
Published

Per georeferenziare una mappa o un'immagine in QGIS, apri Layer > Georeferencer, carica la scansione con Open Raster, clicca almeno quattro punti che riesci a identificare e digita le loro coordinate reali, scegli Polynomial 1 e un CRS di destinazione proiettato in Transformation Settings, poi premi Start Georeferencing. QGIS scrive un GeoTIFF e lo aggiunge al tuo progetto.
Posizionare i punti è la parte facile. La parte che quasi tutti i tutorial saltano è giudicare il risultato, perché il numero che QGIS ti mostra può essere zero su una mappa sbagliata di centinaia di metri. Ho georeferenziato una mappa USGS di San Francisco del 1947 e ho misurato ogni risultato rispetto a punti che il fit non ha mai visto. I numeri qui sotto vengono da quel test.
La risposta breve
| Il tuo input | Metodo | Tempo o costo |
|---|---|---|
| Una scansione con le coordinate stampate sopra (reticolo, tacche di griglia, valori agli angoli) | Metodo 1, digita i valori stampati | Gratis. 8 punti, poi un warp di 34 s su una scansione da 6,888 x 8,933 px |
| Una scansione senza coordinate, o la foto di una mappa | Metodo 1, From Map Canvas su una basemap | Gratis. Metti in conto 10 punti o più |
| Un GeoPDF dell'USGS o di un'altra agenzia | Aprilo direttamente, è già posizionato | Gratis, zero punti |
| Punti già letti, e vuoi che il fit venga verificato per te | Metodo 2, un agente AI | 1 messaggio, 99 s nel mio test |
| Una sovrapposizione visiva rapida, senza bisogno di precisione | Metodo 3, il plugin Freehand raster georeferencer | Plugin gratuito |
Prima di iniziare
Ti serve QGIS 3.26 o successivo, dove il Georeferencer si trova nel menu Layer. Io ho usato QGIS 3.44.7. I tutorial più vecchi ti mandano su Raster > Georeferencer, che è dove stava prima, come plugin GDAL Georeferencer.
Leggi il bordo della mappa prima di cliccare qualsiasi cosa. Ti dice tre cose che digiterai più avanti: il sistema di coordinate dei valori stampati, il datum e la scala. Il mio campione è il quadrangle USGS San Francisco North, CA del 1947, a 1:24,000, che chiunque può scaricare da topoView. Il suo bordo dice "Polyconic projection. 1927 North American datum", e i suoi angoli riportano latitudini e longitudini ogni 7'30". Le mappe storiche USGS sono di pubblico dominio.
Per rendere il test onesto, ho preso il GeoTIFF dell'USGS di quel foglio e ho rimosso la sua georeferenziazione, così quello che ho caricato in QGIS era un semplice JPEG da 9,2 MB di 6,888 x 8,933 pixel. Sono circa 300 dpi, ovvero 2.03 m di terreno per pixel. La georeferenziazione dell'USGS è rimasta da parte come chiave di risposta.
Dove il web sbaglia
"Più basso è l'RMSE, migliore è il risultato." Non con un thin plate spline. Quella trasformazione piega l'immagine finché non passa esattamente per ogni punto, quindi i suoi residui sono sempre zero. Ho digitato di proposito una latitudine sbagliata, 37°47' invece di 37°47'30", e ho eseguito entrambe le trasformazioni sugli stessi otto punti. Polynomial 1 mostrava un RMSE di 297 m e ne attribuiva 762 m al punto sbagliato. Thin plate spline mostrava 0.00 m, e la mappa era sbagliata fino a 594 m nei punti che non le erano stati dati.
"Inserisci le coordinate in WGS 84." I valori stampati sulle vecchie mappe statunitensi sono spesso in NAD27, e il bordo lo dice. A San Francisco, la stessa latitudine e longitudine in NAD27 e in WGS 84 distano 93 m, 92 dei quali in direzione est-ovest. Digitale come EPSG:4326 e l'intero foglio atterra a un isolato di distanza, con residui che sembrano perfetti, perché ogni punto si è spostato insieme agli altri. Nella finestra Enter Map Coordinates, imposta il CRS dei punti su quello che dice il bordo: EPSG:4267 per NAD27.
"Lascia il CRS di destinazione in gradi." Puoi farlo, ma un fit affine piatto in latitudine e longitudine non corrisponde a come è stata disegnata una mappa proiettata. Con gli stessi otto punti, Polynomial 1 dava 2.98 m di RMSE con EPSG:4267 come destinazione, e 0.72 m con NAD27 / UTM zone 10N (EPSG:26710). Scegli un CRS proiettato sul datum della mappa, e anche il fit si legge in metri.
Metodo 1: Il Georeferencer di QGIS
Questo è lo strumento integrato e quello da imparare per primo. Funziona per le scansioni con coordinate stampate e per quelle senza.
Apri la scansione
Layer > Georeferencer, poi File > Open Raster e scegli l'immagine. JPEG, PNG e TIFF funzionano tutti.
Aggiungi un punto di controllo
Clicca Add GCP Point, ingrandisci e clicca un punto che riesci a identificare con precisione: un angolo della cornice della mappa, una croce del reticolo, una tacca di griglia. Si apre la finestra Enter Map Coordinates. Digita la coordinata stampata. Accetta gradi, minuti e secondi con gli spazi (-122 25 0), gradi decimali o metri proiettati. Imposta il CRS sotto i campi su quello indicato dal bordo.
Oppure prendi la coordinata dal canvas della mappa
Quando la scansione non ha coordinate, carica prima una basemap nella finestra principale di QGIS (la guida alle basemap ha i clic), poi premi From Map Canvas e clicca lo stesso punto su di essa. QGIS compila per te le coordinate e il CRS.
Distribuisci i punti
Mettine uno vicino a ogni angolo e qualcuno al centro. Punti ammassati in una sola zona adattano quella zona e lasciano che il resto del foglio si sposti. Io ho usato i quattro angoli della cornice della mappa e le quattro croci del reticolo al suo interno.

Ogni punto che aggiungi finisce in un file .points accanto all'immagine. Conservalo: il Georeferencer lo carica da solo la prossima volta che apri la stessa scansione, e puoi correggere un punto invece di ricominciare da capo.
Scegli la trasformazione
Settings > Transformation Settings contiene la scelta più importante. Il manuale di QGIS 3.44 elenca sette trasformazioni, con questi numeri minimi di punti:
| Trasformazione | Punti minimi | Usala per |
|---|---|---|
| Linear | 2 | Una scansione pulita che necessita solo di uno spostamento e di una scala. Scrive un world file, senza warp |
| Helmert | 2 | Come sopra più una rotazione |
| Polynomial 1 | 3 | La maggior parte delle scansioni piatte di mappe stampate. Le linee rette restano rette |
| Projective | 4 | La foto di una mappa scattata in obliquo |
| Polynomial 2 | 6 | Un foglio arricciato o piegato. Distorce i bordi oltre i tuoi punti |
| Polynomial 3 | 10 | Come sopra, più forte. Raramente ne vale la pena |
| Thin plate spline | 10 secondo il manuale | Mappe danneggiate o disegnate a mano con molti punti. Nasconde gli errori, vedi sopra |
La mia regola: inizia con Polynomial 1. Passa a qualcosa di più flessibile solo quando i suoi residui mostrano uno schema, per esempio ogni punto su un lato che tira nella stessa direzione, e mai perché un numero più alto sembrava peggiore.

Due impostazioni in quella finestra ti risparmiano problemi più avanti. Resampling method cambia l'aspetto dei pixel deformati: nearest neighbour mantiene i colori originali, cubic si legge meglio su una scansione. E l'output non ha compressione per impostazione predefinita: il mio JPEG da 9,2 MB è diventato un GeoTIFF da 187 MB. Apri Raster creation options e scegli un profilo di compressione se il file deve viaggiare.
Leggi i residui
Quando hai più punti di quanti ne richieda la trasformazione, QGIS mostra il residuo di ogni punto nella tabella GCP e un errore medio nella barra di stato, entrambi in pixel per una scansione senza coordinate.

Per giudicare un valore in pixel, convertilo in metri e confrontalo con quello che la mappa stessa può garantire.
- Metri per pixel. Moltiplica il denominatore della scala per la dimensione di un pixel scansionato. A 300 dpi un pixel è 0.0847 mm, quindi su una mappa 1:24,000 copre 2.03 m. I miei 0.447 pixel sono 0.9 m.
- Cosa può promettere la mappa. Gli US National Map Accuracy Standards richiedono che il 90 percento dei punti ben definiti su un foglio 1:24,000 sia entro 1/50 di pollice, che l'USGS indica come 12.2 m. Una regola empirica più severa è la larghezza di una linea tracciata, 0.2 mm sul foglio, che a 1:24,000 corrisponde a 4.8 m.
- Punti che il fit non ha mai visto. Un residuo dice solo che i punti concordano tra loro. Ho tenuto fuori dal fit le otto tacche del reticolo lungo i bordi e ho misurato dove le collocava il risultato: 1.0 m di scarto in media, 1.6 m nel caso peggiore.
Quindi la georeferenziazione ha aggiunto circa un metro di errore a una mappa che ne promette solo 12. Su un foglio vecchio, il limite è quasi sempre la mappa, non i tuoi clic.
Start Georeferencing ha poi scritto il GeoTIFF in 34 secondi e lo ha aggiunto al progetto. Su OpenStreetMap, le strade del 1947 si sovrappongono a quelle di oggi:


Usalo quando: vuoi un risultato che puoi difendere, con residui, un file .points e un GeoTIFF che qualsiasi GIS legge.
Salta se: ti serve solo uno sfondo approssimativo per qualche minuto. Per quello il Metodo 3 è più veloce.
Metodo 2: Punti di controllo verificati da un agente AI
Noi sviluppiamo AI Agent, un plugin QGIS gratuito con un pannello di chat che esegue i passaggi nel tuo progetto aperto. Questa sezione riguarda il nostro strumento. Ha uno strumento di georeferenziazione che accetta punti di controllo come coppie pixel e coordinate, adatta attraverso GDAL una delle trasformazioni del Georeferencer e restituisce il residuo di ogni punto in metri, valutato rispetto alla scala della mappa.
Può anche posizionare una scansione senza alcun punto, leggendo i suoi toponimi e confrontandola con mappe di riferimento: una vecchia mappa di Edimburgo nella guida di AI Agent è atterrata con un errore mediano di 5.9 m. Questo richiede nomi leggibili, e i fogli molto vecchi spesso falliscono. Per una mappa con un reticolo stampato, i punti sono la via più sicura, e leggerli è veloce: un'immagine senza coordinate sta in QGIS con la colonna del pixel come x e meno la riga come y, così la barra di stato mostra il pixel sotto il cursore. Ho caricato la scansione, ho tenuto l'errore di battitura del test precedente nel punto 8 e ho inviato un messaggio:
Georeferenzia il layer sf-north-1947-scan. È il quad USGS San Francisco North del 1947, scala 1:24,000, coordinate in NAD27. Ho letto questi punti di controllo sulla scansione (colonna pixel, riga → latitudine, longitudine): 1. 1022, 792 → 37°52'30"N, 122°30'W (angolo NW) [...] 8. 4632, 5344 → 37°47'N, 122°25'W. Il risultato è abbastanza preciso per una mappa 1:24,000?
L'esecuzione ha richiesto 99 secondi, mostrati nel pannello come 14 azioni. L'agente ha letto il layer, ha adattato gli otto punti in Python per verificarli, ha scoperto che il punto 8 stava a 925 m da dove lo collocava la sua riga, lo ha escluso e ha scritto il GeoTIFF dagli altri sette in NAD27 / UTM zone 10N.
Ha chiesto una volta, prima di eseguire il proprio controllo in Python. La sua risposta dava un RMSE di 0.73 m con un massimo di 0.95 m rispetto a una tolleranza di 4.8 m, e aggiungeva che questo misura l'accordo tra i punti, non la precisione assoluta della mappa.

Ho verificato il suo GeoTIFF come il mio, sulle otto tacche di bordo che non aveva mai visto: 1.0 m di scarto in media, 1.6 m nel caso peggiore, gli stessi del Georeferencer. La differenza è l'errore di battitura. Nel Georeferencer avrei dovuto individuarlo da solo nella colonna dei residui, e con un thin plate spline non l'avrei individuato affatto.
Ha anche lasciato i punti in un file .points accanto all'output, così lo stesso fit si apre nel Georeferencer se vuoi spostare un punto a mano. Ogni messaggio lascia un checkpoint nel pannello, e un clic annulla l'intera esecuzione. Il piano gratuito ha 10 messaggi al mese senza API key e senza carta.
Usalo quando: hai i punti e vuoi il fit, il controllo degli outlier e il verdetto in un solo passaggio, oppure georeferenzi fogli in serie.
Salta se: la mappa non ha né toponimi leggibili né punti che riesci a leggere, come uno schizzo disegnato a mano. In quel caso posizionare i punti a mano nel Metodo 1 è l'unica strada.
Metodo 3: Una sovrapposizione a mano libera con un plugin
Il plugin Freehand raster georeferencer, versione 0.8.3 quando ho letto la sua documentazione, ti permette di trascinare un'immagine sulla mappa e spostarla, ruotarla e scalarala a mano finché non si allinea, come faresti in Google Earth. Il risultato appare subito sopra gli altri tuoi layer, e il plugin esporta l'immagine con un world file quando hai finito.
Il suo README è chiaro sui limiti: solo trasformazioni affini, nessun rubber sheeting, nessun residuo, e solo file BMP, JPEG, PNG e TIFF. Non ottieni alcun numero che dica quanto sei fuori.
Usalo quando: ti serve una planimetria scansionata posizionata approssimativamente per tracciare qualche elemento o per mostrare a un cliente dov'erano le cose.
Salta se: qualcuno misurerà sul risultato. Usa il Metodo 1.
Cosa ricordare
- In QGIS 3.26 e successivi lo strumento è
Layer > Georeferencer. Inizia con quattro punti ben distribuiti, Polynomial 1 e un CRS di destinazione proiettato sul datum della mappa. - Un RMSE di zero non dimostra nulla: un thin plate spline lo raggiunge sempre, e nel mio test ci è arrivato su una mappa sbagliata di 594 m.
- Converti i residui in metri (pixel x dimensione sul terreno di un pixel) e confrontali con quello che promette la mappa, 12.2 m per un foglio USGS 1:24,000.
- Verifica il risultato su punti che hai lasciato fuori dal fit. I miei avevano uno scarto medio di 1.0 m sul foglio di San Francisco del 1947.
- Digita i punti nel datum indicato dal bordo. NAD27 dista 93 m da WGS 84 a San Francisco, quindi un foglio USGS del 1947 richiede EPSG:4267.
Domande che le persone fanno
Dov'è il Georeferencer in QGIS?
In QGIS 3.26 e successivi è sotto Layer > Georeferencer. Nelle versioni precedenti era Raster > Georeferencer, fornito dal plugin GDAL Georeferencer, che doveva essere abilitato nel gestore dei plugin. Se nessuno dei due menu lo mostra, un plugin o un profilo di personalizzazione potrebbe aver modificato i tuoi menu.
Quanti punti di controllo mi servono?
Il minimo è 2 per Linear e Helmert, 3 per Polynomial 1, 4 per Projective, 6 per Polynomial 2 e 10 per Polynomial 3, e il manuale di QGIS ne chiede 10 o più per un thin plate spline. In pratica usa circa il doppio del minimo, distribuiti fino agli angoli, e tienine qualcuno in più da parte come checkpoint. Io ne ho usati 8 per Polynomial 1 e altri 8 per la verifica.
Polynomial, Helmert o thin plate spline: quale?
Helmert per una scansione pulita e piatta che necessita solo di rotazione e scala. Polynomial 1 per quasi ogni mappa stampata, dato che assorbe anche un piccolo shear dello scanner. Thin plate spline solo per una mappa danneggiata o disegnata a mano con molti punti buoni, e poi verificala su punti che non hai usato, perché i suoi residui sono sempre zero.
Cos'è un buon RMSE?
Uno che è piccolo rispetto a quello che la mappa può garantire. Convertilo in metri e confrontalo con 0.2 mm moltiplicati per il denominatore della scala (4.8 m a 1:24,000) o con lo standard ufficiale della mappa (12.2 m per i fogli USGS 1:24,000). Sotto un pixel su una scansione pulita è normale. Un singolo punto con un residuo molto più alto degli altri è di solito un errore di battitura o un clic sbagliato, non una mappa scadente.
Come georeferenzio un PDF?
Prima controlla se lo è già. Le mappe topografiche USGS e molti piani di agenzie sono GeoPDF, e QGIS li apre sul posto: il PDF di San Francisco del 1947 si è caricato con le sue coordinate e nessun punto di controllo, renderizzato da GDAL a 150 dpi a meno che tu non imposti GDAL_PDF_DPI più alto. Un PDF normale non ha coordinate: esporta la pagina in PNG o TIFF a 300 dpi, poi usa il Metodo 1.
Come georeferenzio una mappa senza coordinate?
Usa elementi che non si sono spostati da quando è stata disegnata la mappa, come incroci stradali, ponti, chiese e angoli della linea di costa, e scegli le loro coordinate con From Map Canvas su una basemap o sulla tua ortofoto nazionale. Distribuisci 10 o più di questi elementi sul foglio. Aspettati residui più grandi rispetto a una griglia stampata, perché la vecchia mappa e il mondo di oggi non coincidono più ovunque.
L'hub QGIS AI raccoglie cosa l'AI può e non può fare dentro QGIS, e la guida di AI Agent copre il resto del plugin. Una volta che la vecchia mappa è a posto, puoi scaricare i dati OpenStreetMap per confrontarli con le strade di oggi, prendere un'immagine Sentinel-2 della stessa area, oppure trasformare la scansione in vettori.
, apri 

