Background Questa è la mia seconda domanda relativa alla georeferenziazione di mappe raster nude per ri-visualizzarle su diversi sistemi di coordinate e in combinazione con altri livelli di dati. La domanda precedente è: Converti un'immagine di mappa arbitraria senza metadati nel progetto QGIS
Problema Il mio obiettivo è georeferenziare questa mappa:
Questo non sembra essere Plate-Carrée. Quindi in QGIS, ho creato diversi punti di controllo ragionevoli, che per completezza ho attaccato in fondo [rif: 1]. Fornisco a QGIS Georeferencer lo stesso SRS target del mio file di progetto, EPSG: 4326. Ottengo risultati eccezionalmente scarsi con Helmert e le trasformazioni polinomiali, ma ottengo un'immagine ragionevole con una spline a piastra sottile (che fa passare il geoestimato risultante attraverso i miei punti di controllo). Tuttavia, anche questo risultato è scarso, ad esempio a latitudini più elevate (vedi la costa russa a nord del Giappone). Questo è uno screenshot del mio schermo QGIS che utilizza uno sfondo di Natural Earth.
Percorso alternativo Ho provato un esercizio simile con lo strumento molto più facile da usare su MapWarper: vedi i risultati e i punti di controllo su http://mapwarper.net/maps/758#Preview_Map_tab dove ottengo risultati più scarsi (probabilmente a causa del fatto che ho aggiunto meno punti di controllo).
Domande in breve
- Ci sono dei trucchi che mi mancano per ottenere una buona georeferenza?
- Questa proiezione è immediatamente riconoscibile?
- A Unknown Coordinate System su vecchio disegno ,
gdaltransform
si suggerisce di trasformare diversi punti di coordinate in diversi SRS target, con l'obiettivo di scoprire effettivamente i parametri di proiezione utilizzati per generare la mappa originale. Ho provato qualcosa del genere: dopo aver salvato il mio elenco di punti QGIS, ho fatto un po 'di elaborazione delle stringhe per ottenere un elenco di long / lats separati da spazi tramitecat eurasian-steppe-gcp.points | tail -n+2 | cut -d, -f1-2 | sed 's/,/ /'> tmp.txt
e inserendo il file risultante in gdaltransform:gdaltransform -s_srs EPSG:3785 -t_srs EPSG:4326 < tmp.txt
e cambiando ils_srs
et_srs
flag (il progetto utilizza EPSG: 4326). So che sto girando al buio, sperando di essere fortunato, quindi non sono rimasto sorpreso quando non riuscivo a dare un senso alle uscite. Qualcuno può espandere il modo in cui utilizzerei questo metodo per trovare la migliore stima dei parametri di proiezione e proiezione della mappa di origine? Il mio pensiero dietro questo è che invece di fare casini con il posizionamento di una miriade di punti di controllo per una buona georeferenza, potrebbe essere più facile ottenere una georeferenza quasi perfetta con un numero inferiore di punti di controllo, semplicemente attraversando tutti i comuni sistemi di coordinate? Implica la validazione incrociata di ciascun punto rispetto a tutti gli altri, per ciascun CRS sottoposto a test?
Mi piacerebbe avere una comprensione di questo algoritmo o della georeferenziazione in modo da poter automatizzare il processo --- Mi imbatto in questo problema tutto il tempo e fino a quando i creatori di contenuti smettono di trattare le loro mappe come creazioni uniche che non devono mai essere integrate con altri contenuti, non mi aspetto di smettere.
Riferimenti
[ref: 1] File GCP QGIS:
mapX,mapY,pixelX,pixelY,enable
142.632649100000009,54.453595900000003,505.941176470588232,-95.220588235293974,1
154.934252200000003,59.559921699999997,536.411764705882206,-52.779411764705742,1
80.080158100000006,9.657192300000000,291.558823529411711,-322.661764705882206,1
10.448442600000000,57.819128900000003,21.676470588235190,-103.926470588235134,1
34.007173000000002,27.761438299999998,101.117647058823422,-244.852941176470466,1
50.950890399999999,11.862196600000001,171.852941176470495,-313.955882352941046,1
29.713217199999999,60.024133200000001,90.779411764705799,-92.499999999999829,1
60.000000000000000,0.000000000000000,208.308823529411683,-362.382352941176350,1
69.867506500000005,66.639146199999999,224.088235294117567,-33.191176470588061,1
27.276107100000001,71.049154799999997,89.147058823529306,-21.764705882352814,1
140.000000000000000,0.000000000000000,536.955882352941217,-362.926470588235190,1
20.000000000000000,0.000000000000000,43.441176470588132,-362.926470588235190,1
20.196882700000000,31.243024100000000,47.249999999999901,-231.794117647058698,1
9.171861099999999,42.848309999999998,8.073529411764603,-175.205882352941046,1
131.955786100000012,43.196468600000003,481.999999999999943,-162.691176470588090,1
73.813303700000006,45.169367200000003,256.735294117646959,-161.602941176470438,1
50.602731800000001,44.589102900000000,168.044117647058727,-167.588235294117510,1
121.394975900000006,18.941421099999999,455.882352941176407,-284.029411764705742,1
103.987047000000004,1.417439300000000,389.499999999999943,-357.485294117646959,1
109.325478599999997,55.962283100000001,380.249999999999943,-98.485294117646902,1
31.454010100000001,46.562001500000001,95.132352941176379,-158.882352941176322,1
43.639560299999999,68.844150499999998,137.573529411764611,-40.264705882352814,1
Non aggiornamento
Analisi di van der Grinten Ho scritto uno strumento Python per adattare i GCP a qualsiasi proiezione supportata da Proj4 (tramite Pyproj) e l'ho applicato alla coppia di proiezioni suggerite nelle risposte. Il codice sorgente (un po 'sciatto, chiedo scusa in anticipo) e i GCP aggiornati sono disponibili su https://github.com/fasiha/steppe-map
Van der Grinten ha solo 1 parametro da sintonizzare, ed ecco l'immagine risultante (usando l'ultima immagine di Britannica, molte grazie a loro per aver fornito una mappa così aggiornata e ad alta risoluzione (sebbene manchi ancora dei dati di proiezione)).
Van der Grinten ha un errore relativo di 0,035 tra i punti GCP e i punti più adatti, che è il peggiore del gruppo che ho provato, e la copertura costiera lo conferma qualitativamente.
(Può essere utile se apri questa immagine nella sua scheda, è piuttosto ad alta risoluzione. Vedrai anche frecce verdi che indicano i punti georeferenziati (dovrebbero corrispondere a punti di riferimento significativi sull'immagine) e frecce rosse che indicano dove quei punti sono adattati (dovrebbero corrispondere agli stessi punti di riferimento sulla sovrapposizione della linea costiera) --- la deviazione tra i due può aiutare l'occhio a vedere le differenze tra l'immagine e l'adattamento.)
Analisi della zona uguale di Albers Provare la stessa cosa con la proiezione della stessa area di Albers (che è la stessa di "Conica conforme di Albers"? Mi dispiace per la mia ignoranza). Questo adattamento, che implica un adattamento di parametri a 4 dimensioni, è migliore, con un errore relativo di 0,025, ma sembra comunque piuttosto scadente.
Analisi delle proiezioni di Robinson ed Eckert V Ho adattato una serie di proiezioni pseudocilindriche supportate da Pyproj (tutto ciò che ho potuto trovare con un parametro libero) e ho scoperto che le proiezioni Robinson ed Eckert V hanno fatto il "migliore" in termini di errore relativo tra i GCP e i punti montati, entrambi con errori relativi di 0,015.
Ecco il Robinson:
Ed ecco l'Eckert V.
Nota le deviazioni della costa montata dalla costa dell'immagine. Penso che con questo posso concludere che la mappa non è nessuna delle precedenti?
Winkel Tripel: possibile soluzione?
Dopo aver provato in sequenza ogni proiezione in questo manuale di Proj del 1990 (aggiornato 2003) ftp://ftp.remotesensing.org/proj/OF90-284.pdf sono finalmente arrivato alla proiezione tripel di Winkel. Ciò produce gli errori quantitativi più bassi (0,011) e la costa è uniformemente abbastanza buona (o equivalentemente, uniformemente leggermente cattiva). Ho letto che questa è la proiezione della National Geographic Society, il che significa che è famosa, e questo aggiunge peso alla candidatura di questa proiezione per la mappa della Britannica. La SRS montati: +units=m +lon_0=47.0257707403 +proj=wintri
.
(Mi scuso per aver cambiato il colore della costa in grigio. Se questo offende qualcuno, posso produrre una versione blu.)
Proverò a modificare i miei GCP per provare a ridurre l'errore in basso.