Contexte C'est ma deuxième question concernant le géoréférencement des cartes raster nues afin de les visualiser à nouveau sur différents systèmes de coordonnées et en conjonction avec d'autres couches de données. La question précédente est à Convertir une image de carte arbitraire sans métadonnées en projet QGIS
Problème Mon objectif est de géoréférencer cette carte:
Il ne semble pas s'agir de Plate-Carrée. Donc, dans QGIS, j'ai créé plusieurs points de contrôle raisonnables, que pour l'intégralité j'ai attachés en bas [réf: 1]. Je fournis à QGIS Georeferencer le même SRS cible que mon fichier de projet, EPSG: 4326. J'obtiens des résultats exceptionnellement médiocres avec Helmert et les transformations polynomiales, mais j'obtiens une image raisonnable avec une spline en plaque mince (ce qui fait que la géoestimation résultante passe par mes points de contrôle). Cependant, même ce résultat est médiocre, par exemple aux latitudes plus élevées (voir la côte russe au nord du Japon). Il s'agit d'une capture d'écran de mon écran QGIS utilisant un arrière-plan Natural Earth.
Chemin alternatif J'ai essayé un exercice similaire avec l'outil beaucoup plus facile à utiliser de MapWarper: voir les résultats et les points de contrôle sur http://mapwarper.net/maps/758#Preview_Map_tab où j'obtiens de moins bons résultats (probablement en raison du fait que j'ai ajouté moins de points de contrôle).
Questions en bref
- Y a-t-il des astuces qui me manquent pour obtenir une bonne géoréférence?
- Cette projection est-elle immédiatement reconnaissable?
- Au système de coordonnées inconnu sur l'ancien dessin , il
gdaltransform
est suggéré de transformer plusieurs points de coordonnées en plusieurs SRS cibles, dans le but de découvrir les paramètres de projection utilisés pour générer la carte d'origine. J'ai essayé quelque chose comme ceci: après avoir enregistré ma liste de points QGIS, j'ai effectué un traitement de chaîne pour obtenir une liste de long / lats séparés par un espace viacat eurasian-steppe-gcp.points | tail -n+2 | cut -d, -f1-2 | sed 's/,/ /'> tmp.txt
et entrer le fichier résultant dans gdaltransform:gdaltransform -s_srs EPSG:3785 -t_srs EPSG:4326 < tmp.txt
et basculer les_srs
ett_srs
drapeaux (le projet utilise EPSG: 4326). Je sais que je tourne dans le noir, dans l'espoir d'avoir de la chance, donc je n'ai pas été surpris quand je n'ai pas pu comprendre les sorties. Quelqu'un peut-il expliquer comment j'utiliserais cette méthode pour trouver la meilleure estimation de la projection de la carte source et des paramètres de projection? Ma pensée derrière cela est que plutôt que de jouer avec une myriade de points de contrôle pour une bonne géoréférence, pourrait-il être plus facile d'obtenir une géoréférence presque parfaite avec moins de points de contrôle, en parcourant simplement tous les systèmes de coordonnées communs? Cela implique-t-il une validation croisée de chaque point par rapport à tous les autres, pour chaque CRS testé?
Je voudrais comprendre cet algorithme ou le géoréférencement afin que je puisse automatiser le processus --- Je rencontre ce problème tout le temps, et jusqu'à ce que les créateurs de contenu cessent de traiter leurs cartes comme des créations uniques à ne jamais intégrer avec d'autres contenus, je ne m'attends pas à m'arrêter.
Les références
[ref: 1] Fichier 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 mise à jour
Analyse de van der Grinten J'ai écrit un outil Python pour adapter les GCP à toute projection prise en charge par Proj4 (via Pyproj) et l'ai appliqué aux quelques projections suggérées dans les réponses. Le code source (quelque peu bâclé, je m'excuse à l'avance) ainsi que les GCP mis à jour sont disponibles sur https://github.com/fasiha/steppe-map
Le van der Grinten n'a qu'un seul paramètre à régler, et voici l'image résultante (en utilisant la dernière image de Britannica, merci beaucoup pour avoir donné une carte aussi haute résolution et mise à jour (bien qu'il manque encore des données de projection)).
Van der Grinten a une erreur relative de 0,035 entre les GCP et les points les mieux ajustés, ce qui est le pire du groupe que j'ai essayé, et la superposition du littoral le confirme qualitativement.
(Cela peut être utile si vous ouvrez cette image dans son propre onglet, elle est assez haute résolution. Vous verrez également des flèches vertes indiquant les points géoréférencés (ils devraient correspondre à des repères significatifs sur l'image) ainsi que des flèches rouges indiquant où ces points sont ajustés (ils doivent correspondre aux mêmes points de repère sur la superposition du littoral) --- l'écart entre les deux peut aider l'œil à voir les différences entre l'image et l'ajustement.)
Analyse de la zone égale d'Albers Essayer la même chose avec la projection de la zone égale Albers (qui est la même que "Conique conforme Albers"? Désolé pour mon ignorance). Cet ajustement, impliquant un ajustement de paramètre à 4 dimensions, est meilleur, avec une erreur relative de 0,025, mais semble assez médiocre néanmoins.
Analyse des projections Robinson et Eckert V J'ai ajusté un certain nombre de projections pseudocylindriques prises en charge par Pyproj (tout ce que j'ai pu trouver qui avait un paramètre libre) et j'ai trouvé que les projections Robinson et Eckert V faisaient le "meilleur" en termes d'erreur relative entre les GCP et les points ajustés, tous deux avec des erreurs relatives de 0,015.
Voici le Robinson:
Et voici l'Eckert V.
Notez les écarts du littoral ajusté par rapport au littoral de l'image. Je pense qu'avec cela, je peux conclure que la carte n'est rien de ce qui précède?
Tripel Winkel: solution possible?
Après avoir essayé séquentiellement chaque projection dans ce manuel Proj de 1990 (mis à jour en 2003) ftp://ftp.remotesensing.org/proj/OF90-284.pdf je suis finalement arrivé à la projection tripel de Winkel. Cela produit les erreurs quantitatives les plus faibles (0,011) et le littoral est uniformément assez bon (ou de manière équivalente, uniformément légèrement mauvais). J'ai lu qu'il s'agit de la projection de la National Geographic Society, ce qui signifie qu'elle est célèbre, et cela ajoute du poids à la candidature de cette projection pour la carte de Britannica. Le SRS équipé: +units=m +lon_0=47.0257707403 +proj=wintri
.
(Toutes mes excuses pour avoir changé la couleur du littoral en gris. Si cela offense quelqu'un, je peux produire une version bleue.)
J'essaierai de modifier mes GCP pour essayer de réduire l'erreur plus bas.
la source
Réponses:
D'après une première analyse, nous pouvons voir que seuls l'équateur et le méridien central (passant approximativement par Moscou, environ 37,36 E de longitude) sont des lignes droites, tandis que tous les autres parallèles et méridiens sont des lignes courbes. Parmi les projections mondiales, ces caractéristiques suggèrent d'essayer celle de Van der Grinten (comme l'a fait Bhell dans un commentaire de la question), c'est-à-dire la projection cartographique mondiale standard de la National Geographic Society.
J'ai donc défini le projet SR dans QGIS comme SRS personnalisé
World_Van_der_Grinten_I (Moscow)
:dérivé directement de
EPSG:54029
(World_Van_der_Grinten_I
), ne modifiant que la longitude du méridien central. Ensuite, j'ai essayé de géoréférencer l'image en utilisant la transformation projective avec les GCP suivants choisis sur un réticule imaginaire passant par les graduations disponibles:C'est le résultat de la coutume
World_Van_der_Grinten_I (Moscow)
avec les GCP (frontière administrative du pays du monde en rouge):Cette géoréférence pourrait être encore améliorée en choisissant des GCP plus précis (le grand problème est l'absence de graduations ou de graticule), mais il semble que la carte contienne certains artefacts, en particulier en Europe centrale et du Nord. Par exemple, considérons l'Allemagne qui semble s'effondrer en référence à l'Italie ou à la position relative de l'île Kolguyev (qui correspond assez bien) et de la côte russe (qui ne correspond pas du tout).
Le même résultat reprojeté en
WGS84
(EPSG:4326
):la source
il y a une forte distorsion à l'est ("en remontant"): ma conjecture est une conique conforme Albers. Ensuite, le méridien vertical semble être à 40 ° (-> votre méridien central) et le parallèle horizontal probablement autour de 40 ° N. Vous devez ensuite mesurer votre coordonnée XY à partir de l'axe à l'intersection du méridien 40 et du parallèle 40, puis essayez ...
Remarque: Les parallèles ne sont pas parallèles, vous pouvez donc exclure les projections cylindriques (Mercator) et pseudo-cylindriques (sinusoïdales, Eckert)
la source