Hintergrund Dies ist meine zweite Frage zum Georeferenzieren nackter Rasterkarten, um sie auf verschiedenen Koordinatensystemen und in Verbindung mit anderen Datenebenen erneut zu visualisieren. Die vorherige Frage lautet: Konvertieren Sie ein beliebiges metadatenfreies Kartenbild in ein QGIS-Projekt
Problem Mein Ziel ist es, diese Karte zu georeferenzieren:
Dies scheint nicht Plate-Carrée zu sein. Deshalb habe ich in QGIS mehrere sinnvolle Kontrollpunkte erstellt, die ich der Vollständigkeit halber unten angefügt habe [ref: 1]. Ich biete QGIS Georeferencer das gleiche Ziel-SRS an wie meine Projektdatei, EPSG: 4326. Ich erhalte außergewöhnlich schlechte Ergebnisse mit Helmert und den Polynomtransformationen, erhalte jedoch ein vernünftiges Bild mit dünnem Plattenspline (wodurch die resultierende geografische Schätzung meine Kontrollpunkte durchläuft). Selbst dieses Ergebnis ist jedoch schlecht, z. B. in höheren Breiten (siehe die russische Küste nördlich von Japan). Dies ist ein Screenshot meines QGIS-Bildschirms mit einem natürlichen Erdhintergrund.
Alternativer Weg Ich habe eine ähnliche Übung mit dem viel einfacher zu verwendenden Tool von MapWarper versucht: Sehen Sie sich das Ergebnis und die Kontrollpunkte unter http://mapwarper.net/maps/758#Preview_Map_tab an, wo ich schlechtere Ergebnisse erhalte (wahrscheinlich aufgrund der Tatsache) dass ich weniger Kontrollpunkte hinzugefügt habe).
Fragen auf den Punkt gebracht
- Gibt es irgendwelche Tricks, die ich für eine gute Georeferenzierung vermisse?
- Ist diese Projektion sofort erkennbar?
- Bei unbekanntem Koordinatensystem auf alte Zeichnung , wird
gdaltransform
vorgeschlagen, mehrere Koordinatenpunkte in ein mehr Ziel SRS zu verwandeln, mit dem Ziel , tatsächlich die Projektionsparameter Aufdecken verwendet , um die Original - Karte zu erzeugen. Ich habe versucht , so etwas wie dies: nach meiner QGIS Liste von Punkten zu speichern, ich einige Zeichenfolge tat Verarbeitung eine Liste von bekommen Leerzeichen getrennten lang / Lats übercat eurasian-steppe-gcp.points | tail -n+2 | cut -d, -f1-2 | sed 's/,/ /'> tmp.txt
und die resultierende Datei in gdaltransform Eingabe:gdaltransform -s_srs EPSG:3785 -t_srs EPSG:4326 < tmp.txt
und Schalt dass_srs
undt_srs
Flags (das Projekt verwendet EPSG: 4326). Ich weiß, dass ich im Dunkeln fotografiere, in der Hoffnung, Glück zu haben, also war ich nicht überrascht, als ich die Ergebnisse nicht verstehen konnte. Kann jemand erläutern, wie ich diese Methode verwenden würde, um die beste Schätzung der Projektion und der Projektionsparameter der Quellkarte zu ermitteln? Ich denke dahinter, dass es vielleicht einfacher ist, eine nahezu perfekte Georeferenz mit weniger Kontrollpunkten zu erhalten, anstatt unzählige Kontrollpunkte für eine gute Georeferenz zu platzieren, indem man einfach alle gängigen Koordinatensysteme durchläuft? Umfasst es eine Kreuzvalidierung jedes Punktes mit allen anderen Punkten für jedes zu testende CRS?
Ich möchte mich mit diesem Algorithmus oder der Georeferenzierung vertraut machen, damit ich den Prozess automatisieren kann. Dieses Problem tritt ständig auf, und bis die Ersteller von Inhalten aufhören, ihre Karten als einmalige Kreationen zu behandeln, die niemals integriert werden Bei anderen Inhalten erwarte ich nicht, dass ich damit aufhöre.
Verweise
[Ref: 1] QGIS GCP-Datei:
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
Nicht aktualisieren
Analyse von van der Grinten Ich habe ein Python-Tool geschrieben, um GCPs an jede Projektion anzupassen, die Proj4 unterstützt (über Pyproj), und es auf die beiden in den Antworten vorgeschlagenen Projektionen angewendet. Der Quellcode (etwas schlampig, ich entschuldige mich im Voraus) sowie aktualisierte GCPs stehen unter https://github.com/fasiha/steppe-map zur Verfügung
Der van der Grinten muss nur 1 Parameter einstellen, und hier ist das resultierende Bild (unter Verwendung des neuesten Bildes von Britannica, vielen Dank für die Bereitstellung einer so hochauflösenden und aktualisierten Karte (obwohl es immer noch keine Projektionsdaten gibt)).
Van der Grinten weist einen relativen Fehler von 0,035 zwischen den GCPs und den Best-Fit-Punkten auf. Dies ist der schlechteste Wert der Gruppe, die ich ausprobiert habe, und die Überlagerung an der Küste bestätigt dies qualitativ.
(Es kann hilfreich sein, wenn Sie dieses Bild in einem eigenen Tab öffnen. Es ist ziemlich hochauflösend. Außerdem werden grüne Pfeile angezeigt, die die georeferenzierten Punkte angeben (sie sollten mit wichtigen Orientierungspunkten auf dem Bild übereinstimmen) sowie rote Pfeile, die angeben, wo diese Punkte liegen angepasst werden (sie sollten mit den gleichen Orientierungspunkten auf der Küstenlinie übereinstimmen) --- Die Abweichung zwischen den beiden kann dem Auge helfen, die Unterschiede zwischen dem Bild und der Anpassung zu erkennen.)
Analyse der Albers-Flächengleichheit Das Gleiche mit der Albers -Flächengleichheitsprojektion versuchen (das ist dasselbe wie "Albers-konformer Kegel"? Entschuldigen Sie meine Unkenntnis). Diese Anpassung, die eine 4-dimensionale Parameteranpassung beinhaltet, ist mit einem relativen Fehler von 0,025 besser, sieht aber trotzdem ziemlich schlecht aus.
Analyse der Robinson- und Eckert-V-Projektionen Ich passe eine Reihe von pseudozylinderförmigen Projektionen an, die von Pyproj unterstützt werden (alles, was ich finden konnte, hatte einen freien Parameter), und fand heraus, dass die Robinson- und die Eckert-V-Projektion hinsichtlich des relativen Fehlers zwischen "am besten" waren die GCPs und die angepassten Punkte, beide mit relativen Fehlern von 0,015.
Hier ist der Robinson:
Und hier ist der Eckert V.
Beachten Sie die Abweichungen der angepassten Küstenlinie von der Küstenlinie des Bildes. Ich denke damit kann ich schließen, dass die Karte keine der oben genannten ist?
Winkel Tripel: mögliche Lösung?
Nachdem ich nacheinander jede Projektion in diesem Proj-Handbuch aus dem Jahr 1990 (Stand 2003) ausprobiert hatte, kam ich schließlich zur Winkel-Tripel-Projektion. Dies erzeugt die geringsten quantitativen Fehler (0,011) und die Küstenlinie ist gleichmäßig recht gut (oder gleichwertig gleichmäßig leicht schlecht). Ich habe gelesen, dass dies die Projektion der National Geographic Society ist, was bedeutet, dass sie berühmt ist, und dies verstärkt die Kandidatur dieser Projektion für die Karte von Britannica. Der Einbau SRS: +units=m +lon_0=47.0257707403 +proj=wintri
.
(Entschuldigung, dass Sie die Farbe der Küste in Grau geändert haben. Wenn dies jemanden beleidigt, kann ich eine blaue Version erstellen.)
Ich werde versuchen, meine GCPs zu optimieren, um den Fehler zu verringern.